Request
1. request与response对象的原理
- request和response对象都是由服务器创建的,我们使用request和response的对象即可
- request是用来获取请求信息的,response对象用于设置响应消息的
2. request对象的继承机构:
ServletRequest(接口) --继承--> HttpServletRequest(接口) --实现--> org.apache.catalina.connector.RequestFacade 类(tomcat)
3. request的功能
- 获取请求行数据 GET /hsh/demo5?name=zhangsan HTTP/1.1
- 方法:
- 获取请求方式 GET
- String getMethod()
-
获取虚拟目录 /hsh
- String getContextPath()
- 获取Servlet资源路径 /hsh/demo5?name=zhangsan
- String getServletPath()
- 获取get方法请求参数 name=zhangsan
- String getQueryString()
-
获取请求URI /hsh/demo5
- String getRequestURI() /hsh/demo5
- StringBuffer getRequestURL() http://localhost/hsh/demo5
- URL:统一资源定位符 : http://localhost/day14/demo1 中华人民共和国
- URI:统一资源标识符 : /day14/demo1 共和国
- 获取协议及版本
- String getProtocol()
- 获取客户端的IP地址
- String getRemoteAddr()
- 获取请求方式 GET
- 获取请求头数据
- 方法:
-
通过请求头名称获取请求头值
- String getHeader(String name)
- 获取所有请求头名称
- Enumeration<String> getHeaderNames()
-
通过请求头名称获取请求头值
- 获取请求体数据
只有POST请求方式,才有请求体,在请求体中封装了POST请求的请求参数
- 其他功能:
- 获取请求参数的通用方式:无论是使用get方法还是post方法都可以使用下列的方法来获取请求参数
- String getParameter(String name); 根据参数名称获取参数值 例如: username=zhangsan&password=123
- String[] getParameterValues(String name); 根据参数名称获取参数值的数组 例如: hobby=game&hobby=study
- Enumeration<String> getParameterNames(); 获取所有请求参数名称
- Map<String,String[]> getParameterMap(); 获取所有参数的Map集合
- 中文乱码问题
- get方式: tomcat内部解决了get方式的乱码
- post方式: 依然会乱码,解决方案为在获取参数前,首先设置request的编码 -> request.setCharacterEncoding("utf-8");
- 请求转发
- 步骤:
- 通过request对象获取请求转发器对象: RequestDispatcher getRequestDispatcher(String path);
- 使用RequestDispatcher对象来进行转发: forward(Servlet request,Servlet response);
- 特点:
- 浏览器地址栏不会发生改变
- 只能转发到服务器内部资源中(无法访问外部其他资源)
- 转发是一次请求
- 步骤:
- 共享数据
- 域对象: 一个有作用范围的对象,可以在范围内共享数据
- request域:代表一次请求的范围,一般用于请求转发的多个资源中共享数据
- 方法:
- void setAttribute(String name,Object obj):存储数据
- Object getAttitude(String name):通过键获取值
- void removeAttribute(String name):通过键移除键值对
- 获取ServletContext:
ServletContext getServletContext()
- 获取请求参数的通用方式:无论是使用get方法还是post方法都可以使用下列的方法来获取请求参数
网友评论