HttpServletRequest相关概述

目录

1. HttpServletRequest:

2. 通过request获得请求行:

3. 通过request获得请求头:

4. 通过request获得请求体:

5. 共享数据

1. HttpServletRequest:

是客户端发送给服务器端的数据,在创建Servlet时会覆盖 service/doPost/doGet
生命周期:一次请求创建一次,等待GC销毁,只能在一次请求期间使用。

2. 通过request获得请求行:

获得客户端的请求方式:String getMethod()
获得请求的资源:

  • String getRequestURI() -- 获取请求URI
  • String getContextPath() -- 获取虚拟目录
  • String getServletPath() -- 获取Servlet路径
  • String getQueryString() -- 获取get方式请求参数
  • String getRemoteAddr0 -- 获取客户机的IP地址

3. 通过request获得请求头:

  • long getDateHeader(String name)
  • String getHeader(String name)
  • int getIntHeader(String name)
  • Enumeration<String> getHeaderNames()-- 获取所有的请求头名称常见的请求头:
  1. User-Agent:浏览器告诉服务器,使用的浏览器版本信息。可以在服务器端获取该头的信息,解决浏览器的兼容性问题。
  2. Referer:告诉服务器,当前请求从哪里来,防止盗链。

4. 通过request获得请求体:

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

4.1 步骤
  • 1.获取流对象

BufferedReader getReader():获取字符输入流,只能操作字符数据
ServletInputStream getInputStream():获取字节输入流,可以操作所有类型数据

  • 2.从流对象中拿数据   readLine()
4.2 获取请求参数通用方式:
  1. String getParameter(String name):根据参数名称获取参数值

  2. String[] getParameterValues(String name):根据参数名称获取参数值的数组

  3. Enumeration<String> getParameterNames():获取所有请求的参数名称

  4. Map<String,String[]> getParameterMap():获取所有参数的map集合

4.3 乱码问题

get请求默认编码:

跟tomcat编码一致 UTF-8,改Tomcat编码, 配置文件 server.xml:

   <Connector port="8080" protocol="HTTP/1.1"
     connectionTimeout="20000" URIEncoding="ISO8859-1"
     redirectPort="8443"/>

post请求编码: ISO8859-1:

request.setCharacterEncoding();
4.4 get和post的区别:
  1. get参数在请求行, post参数在请求体(流)
  2. get参数有大小限制, post参数没有大小限制

5. 共享数据

域对象:一个有作用范围的对象,可以在范围内共享数据,通常配合请求转发。

5.1 request域:

代表一次请求的范围,一般用于请求转发的多个资源中共享数据。

创建:访问时创建request; 销毁:响应结束request销毁; 域的作用范围:一次请求中

方法有:

  • void setAttribute(String name,Object obj):存储数据
  • Object getAttitude(String name):通过键获取值
  • void removeAttribute(String name):通过键移除键值对
5.2 ServletContext:

创建:服务器启动; 销毁:服务器关闭; 域的作用范围:整个web应用

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值