zoukankan      html  css  js  c++  java
  • javaweb基础 request和response

    跳转: request - 暴走小骚年

    跳转: response - 暴走小骚年

    - -删了自己的笔记转载的,超详细。


    Request对象的五个集合:

    QueryString:用以获取客户端附在url地址后的查询字符串中的信息。 
      stra=Request.QueryString [“strUserld”] 
    Form:用以获取客户端在FORM表单中所输入的信息。(表单的method属性值需要为POST) 
      stra=Request.Form[“strUserld”] 
    Cookies:用以获取客户端的Cookie信息。 
      stra=Request.Cookies[“strUserld”] 
    ServerVariables:用以获取客户端发出的HTTP请求信息中的头信息及服务器端环境变量信息。 
      stra=Request.ServerVariables[“REMOTE_ADDR”],返回客户端IP地址 
    ClientCertificate:用以获取客户端的身份验证信息 
      stra=Request.ClientCertificate[“VALIDFORM”],对于要求安全验证的网站,返回有效起始日期。

    request乱码问题

    1. 以POST方式提交表单中文参数的乱码问题 
    原因:服务器端和客户端使用的编码不一致 
    解决方法:request.setCharacterEncoding(“UTF-8”); – 服务器端设置UTF-8编码

    2. 以GET方式提交表单中文参数的乱码问题 
    原因:GET方法通过URL传值(UTF-8格式),Tomcat对URL解码,统一解成ISO8859-1格式 
    解决方法:先以ISO8859-1字符编码接收到原始数据的字节数组,通过字节数组以指定的编码构建字符串 
    String name = request.getParameter(“name”);//接收数据 
    name =new String(name.getBytes(“ISO8859-1”), “UTF-8”) ;

    response乱码问题

    向浏览器发送数据:getWriter() / getOutputStream(); 
    1. 对于getOutputStream():  //用于传输非文本类型的内容
    resp.getoutputStream().write(“中文”.getBytes(“UTF-8”)); //还需要通知浏览器用UTF-8码表解码 
    2. 对于getWrite(): 
    resp.setContentType(“text/html;charset=uft-8”); //通知浏览器和Tomcat用UTF-8码表解码

    3. 请求转发(请求包含)和请求重定向

    request 请求转发forward() 状态码:307

    1 请求转发forward();

    this.getServletContext().getRequestDispatcher(String realpath).forward(request, response);  //只能通过绝对路径
    request.getRequestDispatcher(String path).forward(request,response);  //(绝对或相对路径)
    return;
    1)一次请求只能转发一次, 否则会发生下面的异常: -- 可以得到第一次转发获取的数据
    2)当有数据已经写到客户端时再请求转发也会抛出异常.

    2 请求包含include();

    //当需要将多个servlet的输出合并到一块打给浏览器时可以使用请求包含
    this.getServletContext().getRequestDispatcher(String realpath).include(request, response);
    request.getRequestDispatcher(String path).include(request, response);
    return;
    // 1)被包含的Servlet程序不能改变响应消息的状态码和响应头,如果它里面存在这样的语句,这些语句的执行结果将被忽略.
    // 2)常被用来进行页面布局

    sendRedirect()地址栏会发生变化.forward()地址栏不发生变化. 
    sendRedirect()两次请求两次响应.forward()一次请求一次响应. 
    如果需要在资源跳转时利用request域传递域属性则必须使用请求转发 
    如果希望资源跳转后修改用户的地址栏则使用请求重定向


    欢迎疑问、期待评论、感谢指点 -- kiqi,愿同您为友

    -- 星河有灿灿,愿与之辉

  • 相关阅读:
    winform中的 listview的使用的讲解。
    快乐的一天从AC开始 | 20210716 | P1345
    快乐的一天从AC开始 | 20210715 | P4643
    快乐的一天从AC开始 | 20210714 | P3594
    快乐的一天从AC开始 | 20210713 | P3557
    快乐的一天从AC开始 | 20210712 | P2251
    P7294-[USACO21JAN]Minimum Cost Paths P【单调栈】
    AT4353-[ARC101D]Robots and Exits【LIS】
    2021牛客暑期多校训练营9C-Cells【LGV引理,范德蒙德行列式】
    Loj#2880-「JOISC 2014 Day3」稻草人【CDQ分治,单调栈,二分】
  • 原文地址:https://www.cnblogs.com/kiqi/p/10458072.html
Copyright © 2011-2022 走看看