HttpServletRequest接口

1.HttpServletRequest接口
   HttpServletRequest接口继承了ServletRequest接口,是专用于HTTP协议的子接口,用于封装HTTP请求信息;
   在HttpServlet类的service()方法中,传入的ServletRequest对象被强制转换为HttpServletRequest对象来进行HTTP请求信息的处理。

  HttpServletRequest接口提供了具有如下功能类型的方法:
    获取请求报文信息(包括请求行、请求头、请求正文)的方法;
    获取网络连接信息的方法;
    存取请求域属性的方法。
   
   请求行方法:
    getMethod(),获取请求使用的HTTP方法,例如,GET、POST、PUT
    getRequestURI(),获取请求行中的资源名部分
    getProtocol(),获取使用的协议及版本号。例如,HTTP/1.1、HTTP/1.0
    getQueryString(),获取请求URL后面的查询字符串,只对GET有效
    getServletPath(),获取Servlet所映射的路径
    getContextPath(),获取请求资源所属于的Web应用的路径
  请求头方法
        getHeader(String name),获取一个请求头域的值。如果这个请求头域不存在,这个方法返回-1;
        getHeaderNames(),获取一个String对象的Enumeration列表,该列表反映请求的所有头域名;
        getHeaders(String name),获取所有参数名为name的http头部值;
        getIntHeader(String name),获取整数类型参数名为name的http头部;
        getDateHeader(String name),获取long类型name的http头部;
        getContentLength(),获取请求内容的长度,以字节为单位;
        getContentType(),获取请求的文档类型定义;
        
        
    //请求信息
//        System.out.println(request.getMethod()+"请求方式");
//        System.out.println(request.getRequestURI()+"请求资源");
//        System.out.println(request.getServletPath()+"映射路径");
//        System.out.println(request.getContextPath()+"应用名");
//        System.out.println(request.getQueryString()+"地址栏的请求参数的字符串");
        //请求头信息
        System.out.println(request.getHeader("Host")+"我的主机地址");//localhost:8080   server端的IP:port
        System.out.println(request.getRemoteHost()+"远程客户主机地址");//0.0.0.0.0.0.0.0  client端的ip
        System.out.println(request.getRemotePort()+"远程客户的端口号");
        System.out.println(request.getRemoteAddr()+"远程客户地址");//getRemoteHost()是一样的
        
        //获取所有请求头信息
        Enumeration<String> em=request.getHeaderNames();
        while(em.hasMoreElements()){
            String name=em.nextElement();
            System.out.println(name+"***"+request.getHeader(name));
        }
2.中文乱码问题    
        //解决post请求乱码问题
        request.setCharacterEncoding("utf8");
        //解决get请求的乱码问题   浏览器按iso-8859-1编码,服务端也必须先用iso-8859-1解码,转成utf8
        String name=request.getParameter("username");
        String name_ok=new String(name.getBytes("iso-8859-1"),"utf8");
3.request请求属性操作        
    HttpServletRequest接口提供了如下与请求域属性相关的方法:
    void setAtrribute(String name,Object value),设定name属性的值为value,保存在request范围内;
    Object getAttribute(String name),从request范围内获取name属性的值;
    void removeAttribute(String name),从request范围内移除name属性的值;
    Enumeration getAttributeNames(),获取所有request范围的属性
    
    //RequestTest设置请求属性
        request.setAttribute("user", "张三");
        request.setAttribute("email", "张三@qq.com");
        request.getRequestDispatcher("TestServlet").forward(request, response);
    //TestServlet获取请求属性
        String name=(String)request.getAttribute("user");
        String mail=(String)request.getAttribute("email");
        System.out.println("请求属性"+name+","+mail);    
    //TestServlet获取所有请求属性和值
        Enumeration<String> em=request.getAttributeNames();
        while(em.hasMoreElements()){
            String key=em.nextElement();//属性名
            String val=(String)request.getAttribute(key);//通过属性名值
            System.out.println("请求属性:"+key+","+val);
        }    
4.响应response对象
HttpServletResponse接口继承自ServletResponse接口,是专用于HTTP协议的子接口,用于封装HTTP响应消息。
在HttpServlet类的service()方法中,传入的ServletResponse对象被强制转换为HttpServletResponse对象来进行HTTP响应信息的处理。

    HttpServletResponse接口提供了具有如下功能类型的方法:
    设置响应状态的方法;
    构建响应头的方法;
    创建响应正文的方法。
    
    1)常见的响应状态码:
        200表示请求成功;
        302表示资源(网页等)暂时转移到其它URL;
        404表示请求的资源(网页等)不存在;
        500表示服务器内部错误。
    2)响应头设置
        setHeader(String headerName,String headerValue)
        setContentType(String mime),设定Content-Type消息头;
        setContentLength(int length),设定Content-Length消息头;
        addHeader(String name,String value),新增String类型的值到名为name的http头部;
        addIntHeader(String name,int value),新增int类型的值到名为name的http头部;
        addDateHeader(String name,long date),新增long类型的值到名为name的http头部;
        【重要】addCookie(Cookie c),为Set-Cookie消息头增加一个值;
    
     //设置响应头
        response.setHeader("xxxx", "yyyyy");
    3)响应正文
    HttpServletResponse接口提供了两个获取不同类型输出流对象的方法:
      getOutputStream(),返回字节输出流对象ServletOutputStream;
         ServletOutputStream对象主要用于输出二进制字节数据。例如,配合setContentType()方法响应输出一个图像、视频等。
      getWriter(),返回字符输出流对象PrintWriter;
         PrintWriter对象主要用于输出字符文本内容,但其内部实现仍是将字符串转换成某种字符集编码的字节数组后再进行输出。

    //设置响应正文
    //响应中文乱码解决
        response.setCharacterEncoding("utf8");
        response.setContentType("text/html;charset=UTF-8");
        //text/html  MIME类型
        PrintWriter out=response.getWriter();
        out.write("响应输出的内容----write---");
        out.println("响应输出内容----print----");
        
        out.println("<a href='http://www.baidu.com'>百度一下吧</a>");
        out.print("<html>");
        out.print("<table border='1'>");
        out.print("<tr><td>");
        out.print(new Date());
        out.print("</td></tr>");
        out.print("</html>

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值