request对象--设置请求信息

request对象--设置请求信息

 

【1】获取请求信息数据

  1. 获取请求行数据

Get /day14/demo1/name=zhangsan HTTP/1.1

  1. 获取请求方式:Get

String getMethod()

  1. 获取虚拟目录:/day14

String getContextPath()

  1. 获取Servlet路径:/dame1

String getServletPath()

  1. 获取get方式请求的参数:name=zhangsan

String getQueryString()

  1. 获取请求URL:/day14/demo1

String getRequestURI()  /day14/demo1

StringBuffer getRequestURL()  http//localhost/day14/demo1

  1. 获取协议及版本:HTTP/1.1

String getProtocol()

  1. 获取客户机的IP地址

String getRemoteAddr()

-----------------------------------------------------------------------------------

注意:(URI范围比URL大)

URL:统一资源定位符 http//localhost/day14/demo1

URI:统一资源标识符 /day14/demo1

-----------------------------------------------------------------------------------

  1. 获取请求头数据

//通过请求头的名称获取请求头的值

String getHeader(String name)

//获取所有的请求名称

Enumeration getHeaderName()

  1. 获取请求体数据

请求体:只有POST请求方式,才有请求体,在请求体中封装了POST请求的请求参数

步骤

  1. 获取流对象

//获取字符输入流,只能操作字符数据

BufferedReader getReader()

//获取字节输入流,可以操作所有类型数据

ServletInputStream getInputStream()

  1. 再从流对象中拿数据

【2】其他功能

注意request在获取请求数据的中文乱码问题在使用request或者response时在编码前加上两句

///解决中文乱码问题

request.setCharacterEncoding("utf-8");       response.setCharacterEncoding("utf-8");

  1. 获取请求参数通用方式

(不论get还是post请求方式都可以使用下列方法获取请求参数)

//1,根据参数名获取参数值

String getParameter(String name)

-------------------------------------------------------------------------

//2,根据参数名获取参数值得数组(多用于复选框)

String[] getParameterValues(String name)

例如:

Jsp表现层

<form action="LoginServlet" method="get">

        <input type="checkbox" name="box" value="str">

        <input type="checkbox" name="box" value="int">

        <input type="checkbox" name="box" value="char">

        <input type="submit" value="查询">

       form>

Servlet控制层

 String[] box=request.getParameterValues("box");

         for (String string : box) {

            System.out.println(string);

       }

-------------------------------------------------------------------------

//3,获取所有请求的参数名称

Enumeration getParameterName()

例如:

 //根据参数名称获取参数值数组

       Enumeration gpn=request.getParameterNames();

         while(gpn.hasMoreElements()){

         //获取参数name

         String name=gpn.nextElement();

         //获取参数value

         String value=request.getParameter(name);

         }

----------------------------------------------------------------------

//4,获取所有参数返回到map集合

MapgetParameterMap() MapparameterMap=request.getParameterMap();

       //遍历

       Setkeyset=parameterMap.keySet();

       for(String name:keyset){

       //获取键获取值

       String[] value=parameterMap.get(name);

       System.out.println(name);

       for (String string : value) {

            System.out.println(value);

         }

}

-----------------------------------------------------------------------

  1. 请求转发:一种在服务器内部的资源跳转的方式

我们程序设计要求功能尽量的单一尽量的细化,不要讲功能都写在一个类或者方法

里面,导致后期难以维护,不利于分工协作。可以通过数据转发给各个servlet分布式操作

  1. 步骤

【1】通过request对象获取请求转发器的对象:RequestDispatcher getRequestDispatcher(String path)

【2】使用RequestDispatcher 对象进行转发:forward(HttpServletRequest request,HttpServletResponse response);

//将数据转发到指定的资源路径url

request.getRequestDispatcher("url").forward(request, response);

  1. 特点

【1】浏览器地址栏不发生改变

【2】只能转发到当前服务器内部资源中

【3】转发是一次请求

-----------------------------------------------------------------------------------

  1. 共享数据

域对象:一个有作用范围的对象,可以在范围内共享数据

request域:代表一次请求,一般用于请求转发的多个资源中共享数据(虽然只请求一次,但是只要在其范围内共享数据)

//通过键值对存储数据

【1】void setAttribute(String name, Object obj);

//通过键获取值

【2】Object getAttribute(String name);

//通过键移除键值对

【3】void removeAttribute(String name);

你可能感兴趣的:(JavaWeb基础)