重定向:我给服务器请求一条消息,服务器让我访问另外一个服务器(新的地址)。302状态码,并设置location头,完成重定向。两个请求。

package com.pcx.servlets;

 

import java.io.File;

import java.io.FileInputStream;

import java.io.IOException;

 

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

 

import org.apache.commons.io.IOUtils;

 

/**

* @author
平常心cz

*测试io流

*/

public
class Gservlet extends HttpServlet {

    /**

     *

     */

    private
static
final
long
serialVersionUID = 1L;

 

    public
void doGet(HttpServletRequest request, HttpServletResponse response)

            throws ServletException, IOException {

        /**

         * 发送文字

         */

//        String s="hello Response";

//        byte[] bytes=s.getBytes();

//        

//        response.getOutputStream().write(bytes);

        

        /**

         * 发送图片

         */

        String path ="D:/a.jpg";

        FileInputStream in=new FileInputStream(new File(path));

        byte[] bytes=IOUtils.toByteArray(in);

        response.getOutputStream().write(bytes);

    }

 

}

 

 

    public
void doGet(HttpServletRequest request, HttpServletResponse response)

            throws ServletException, IOException {

        /**

         * 设置重定向

         * 1设置location

状态码

         */

//        response.setHeader("Location", "/zuoye/hello100.jsp");

//        response.setStatus(302);

        

        /**

         * 快捷的重定向

         */

        response.sendRedirect("http:www.baidu.com");

    }

Request

 

    /*

     * 适用referer
来防盗链

     */

    public
void doGet(HttpServletRequest request, HttpServletResponse response)

            throws ServletException, IOException {

        String referer=request.getHeader("Referer");

        System.out.println(referer);

        if (referer==null||!(referer.contains("localhost"))) {

            System.out.println("hello");

        }else {

            response.sendRedirect("http://www.baidu.com");

        }

    }

 

 

/**

* @author
平常心cz

*测试request的获取url

*/

public
class
Dservlet
extends HttpServlet {

    

    public
void doGet(HttpServletRequest request, HttpServletResponse response)

            throws ServletException, IOException {

        response.getWriter().print(request.getScheme()+"<br/>");//获取请求协议

        response.getWriter().print(request.getServerName()+"<br/>");//获取服务器的名称

        response.getWriter().print(request.getServerPort()+"<br/>");//获取服务器的端口号

        response.getWriter().print(request.getServletContext()+"<br/>");//获取项目名

        response.getWriter().print(request.getServletPath()+"<br/>");//获取servlet的路径

        response.getWriter().print(request.getQueryString()+"<br/>");//获取请求的参数

        response.getWriter().print(request.getRequestURI()+"<br/>");//获取请求的uri

        response.getWriter().print(request.getRequestURL()+"<br/>");//获取请求的url

    }

 

}

 

 

package com.pcx.servlets;

 

import java.io.IOException;

import java.util.Arrays;

import java.util.Enumeration;

import java.util.Map;

 

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

 

/**

* @author 平常心cz

*测试request获取请求参数

*/

public class Fservlet extends HttpServlet {

 

    public void doGet(HttpServletRequest request, HttpServletResponse response)

            throws ServletException, IOException {

        System.out.println(request.getParameter("xxx"));

        System.out.println(request.getParameter("yyy"));

    }

 

    public void doPost(HttpServletRequest request, HttpServletResponse response)

            throws ServletException, IOException {

        String username=request.getParameter("username");

        String password=request.getParameter("password");

        String[] hobbys=request.getParameterValues("hobby");

        System.out.println(username+"\n"+password+"\n"+Arrays.toString(hobbys));

        

        /**

         * 测试获取多个参数名称

         */

        Enumeration names=request.getAttributeNames();

        while(names.hasMoreElements()){

            System.out.println(names.nextElement());

        }

        

        /**

         * 获取所有的参数 并封装到map中

         */

        Map<String, String[]>map=request.getParameterMap();

        System.out.println(map);

        for (String name : map.keySet()) {

            String [] values=map.get(name);

            System.out.println(name+"="+Arrays.toString(values));

        }

    }

 

}

重温servlet②的更多相关文章

  1. 重温Servlet学习笔记--session对象

    session的类型是属于HttpSession,HttpSession是由javaWeb提供的,用来会话跟踪的类.session是服务器端对象,保存在服务器端. HttpSession是servle ...

  2. 重温Servlet学习笔记--Cookie对象

    首先要了解cookie必须得先了解http协议,,Cookie是http协议指定的,先由服务器保存cookie到浏览器,在下次浏览器请求服务器时把上次请求得到的cookie归还给服务器,cookie以 ...

  3. 重温Servlet学习笔记--request对象

    request和response是一对搭档,一个负责请求一个负责响应,都是Servlet.service()方法的参数,response的知识点前面梳理过了,这里只说一下request,在客户端发出每 ...

  4. 重温Servlet学习笔记--response对象

    在用户浏览网页时,服务器对于客户端浏览器做出的响应被封装成一个HttpServletResponse对象,要对浏览器操作只需要操作这个response对象即可.response的功能分类及介绍: 响应 ...

  5. 重温Servlet学习笔记--servletContext对象

    一个项目中只有一个ServletContext对象,我们可以在多个servlet中获取这个唯一的对象,使用它可以给多个servlet传递数据,我们通常成servletContext为上下文对象.这个对 ...

  6. 重温servlet③

    请求转发 forward 仅有一个请求 至少两个servlet 前一个的响应头保留着,但是响应体不保留了. 设置响应体太大,会报错   请求包含Include 都包含,响应头和响应体都会保留着   R ...

  7. 重温servlet①

    Servlet是单例的,是线程不安全的.比较灵活,但是容易会使两个线程产生错误 类由我们自己来写,对象由服务器生成,方法由服务器自己调用.   一个servletconfig对象对应着一段web.xm ...

  8. 重温Servlet学习笔记--编码问题

    在说编码问题之前,首先先了解一下常见的字符编码: ISO-8859-1:  拉丁编码,不支持中文 gbk,gb2312,gb18030:系统默认编码,是中国的国标码 utf-8: 支持几乎所有语言的编 ...

  9. 重温 JSP 与 Servlet

    Java Web使用SSH框架多了,很多基础的 JSP 与 Servlet 的东西都忘记了.最近在 JSP 标签 和 Struts2 包装的 Session 对象的混合使用时弄晕了,就翻书温习下. J ...

随机推荐

  1. ICP点云配准原理及优化

    ICP算法简介 根据点云数据所包含的空间信息,可以直接利用点云数据进行配准.主流算法为最近迭代算法(ICP,Iterative Closest Point),该算法是根据点云数据首先构造局部几何特征, ...

  2. 细数垃圾邮箱客户端 Live Mail 的BUG

    以前用XP系统,里面自带的有outlook,使用中还行,不过bug也不少,常见的如 1.查找,邮件多了后,常常查找不到: 2.有时收件箱什么的突然空白,或部分邮件不见了(2G大小限制,超过了就不能做移 ...

  3. oneinstack远程管理数据库

    本篇文章主要内容是本地工具连接数据非网页(网站)连接 如果你想使用网页(网站)连接远程数据库,请看下面的官网教程 OneinStack如何配置MySQL远程连接? 为了安全考虑,OneinStack仅 ...

  4. 2.2.2 RelativeLayout(相对布局)

    本节引言 在上一节中我们对LinearLayout进行了详细的解析,LinearLayout也是我们 用的比较多的一个布局,我们更多的时候更钟情于他的weight(权重)属性,等比例划分,对屏幕适配还 ...

  5. python内置模块

    time--时间模块 时间三大类: 时间戳 time.time() 结构化时间(年月日时分秒 一周内第几天,一年内第几天,是否夏令时) time.localtime()  time.gmtime() ...

  6. nodeJS-使用buffer类处理二进制数据

    使用buffer类处理二进制数据 在客户端javascript脚本代码中,对于二进制数据并没有提供一个很好的支持.然后在nodejs中需要处理像TCP流或文件流时,必须要处理二进制数据.因此在node ...

  7. Jmeter—控件

    Jmeter有许多控件,可以在我们模拟测试请求时使用. Jmeter共有这8类控件: 配置元件—Http请求默认值 作用:仅设置一次目标URL服务器地址,之后不需要每次请求都写完整的,仅写相对地址就可 ...

  8. qmlscene: could not find a Qt installation of ''

    qt └── helloqt.qml 在qt目录下运行helloqt.qml文件时出现这个提示: $ qmlscene helloqt.qml qmlscene: could not find a Q ...

  9. PHP设计模式——訪问者模式

    声明:本系列博客參考资料<大话设计模式>,作者程杰. 訪问者模式表示一个作用于某对象结构中的各元素的操作. 它使你能够在不改变各元素类的前提下定义作用于这些元素的新操作. UML类图: w ...

  10. python变量名感悟

    我感悟的是python的变量名其实就可以理解为C/C++中的指针! 1.python的变量在使用之前必须赋值,就像指针在使用之前不能为空. 2.python的内存可以用del释放,C++可以用dele ...