^小脆筒^

导航

request 知识点

Request对象

  request对象的原型是javax.servlet.http.HttpServletRequest.此对象由服务器自动创建。

  在Servlet API中,定义了一个HttpServletRequest接口,它继承自ServletRequest接口,专门用来封装HTTP请求消息。服务器在创建此对象时把Http请求的三样数据已经封装给了request对象。所以想获得请求的数据只要调用request对象的getXXX方法即可。 

  Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象、和代表响应的response对象。

  请求参数:

    get请求: 数据存在于请求行中,网址中?后面部分;

    post请求:数据存在于请求正文中;

  常用的获取数据的方法(请求体):

    parameter:参数. parameter的相关方法是获取表单数据的.

    String getParameter(String name)  获得指定参数名对应的一个值。如果有返回字符串,如果没有则返回null。

    String[] getParameterValues(String name)  获得指定参数名对应的一个数组。如果有返回字符串数组,如果没有则返回null。

    Map<String,String[]> getParameterMap();   获取表单中所有的数据。//框架用

    setCharacterEncoding(String env)   设置请求体的编码,用于解决POST请求参数乱码问题,只解决post请求正文的乱码问题

    new String(username.getBytes("iso-8859-1"),"UTF-8");  解决get方式提交的乱码

  与请求行相关的方法

    getMethod(); //获取请求方式

    getRequestURL(); //获取URL

    getRequestURI(); //获取URI

    getContextPath();//  获取项目名

    getRemoteAddr(); // 获取客户机IP地址

  与请求头相关的方法

    getHeader(String name);   以字符串形式返回请求头的值

  request的生命周期: 当服务器收到客户端发送的请求时,就会创建request对象,当服务器对这次请求做出回应了,呢么request对象就会被销毁.存的数据只能在一次请求范围内有效!!!

  request作为域对象的相关方法

    request.setAttribute(String name,Object value);  向request中添加<key,value>

    Object request.getAttribute(String name);

  请求转发

    request.getRequestDispatcher("/XXXServlet").forward(request,response);  当下一个资源需要传递过来的数据时适合使用;

  重定向

    respnose.sendRedirect(request.getContextPath()+"/XXXServlet");  当下一个资源不需要传递过来的数据时适合使用。

  转发与重定向的区别

    0.转发服务器内部执行,  重定向是浏览器执行

    1.转发的地址栏没有变化,  重定向的地址栏发送了变化.

    2.转发一次请求一次响应,  重定向是两次请求两次响应.

    3.转发的路径不需要写工程名,  重定向的路径需要加工程名.

    4.转发只能在本网站内部,  重定向可以定向到任何页面.

    5.转发可以传递数据,  重定向不能传递数据。

 HTML标签中的src,href都有自动发送请求的能力.

posted on 2020-06-13 01:36  ^小脆筒^  阅读(41)  评论(0编辑  收藏  举报