HttpServletRequest接口:请求域

一、HttpServletRequest定义:

  1. HttpServletRequest 是一个接口,全限定名称:jakarta.servlet.http.HttpServletRequest;
  2. HttpServletRequest 接口是Servlet规范中的一员。
  3. HttpServeltRequest 接口的父类接口是 ServeltRequest
  4. Tomcat服务器实现了HttpServletRequest接口。

二、HttpServletRequest对象作用:

  1. 封装了Http协议的请求协议,HTTP请求协议中的包括请求行、请求头、请求体。
  2. 实际上是用户发送请求的时候,遵循了HTTP协议,发送的HTTP的请求协议,Tomcat服务器将HTTP协议中的信息以及数据全部解析出来,然后Tomcat服务器把这些信息封装到HttpServletRequest对象中,传给了我们javaweb程序员。
  3. 所以说如果我们想获取HTTP请求报文中的信息,我们只需要面向HttpServletRequest接口编程,调用他的方法。

三、HttpServletRequest和HttpServletResponse生命周期:

  1. 每个对象的生命周期都很短,仅在HTTP请求报文或HTTP响应报文传输的时候存在。
  2. 一个HTTP请求报文对应一个HttpServletRequest对象,一个HTTP响应报文对应一个HttpServletResponse对象。

四、HttpServletRequest中常用方法:

Parameter:参数,是前端传过来的数据
initParameter:初始化参数,是存在四大域中的数据
1. 获取前端浏览器用户提交的数据:

String getParameter(String)//key对应的value数组中的第一个元素

Map<String,String[ ]> getParameterMap()//获取整个map集合

Enumeration<String.>getgetParameterNames()//获取map集合中所有key

String[ ] getParameterValues(String)//根据key获取value

因为前端提交的数据格式:

<!--前端定义该表单发送报文格式为post,发送时执行/xmm/servlet06/MyFirstServlet该java程序-->
<form action="/xmm/servlet06/MyFirstServlet" method="post">
        用户名<input type="text" name="username"><br>
        密码 <input type="text" name="userpwd"><br>
        兴趣<br>
            抽烟<input type="checkbox" name="aihao" value="123">
            喝酒<input type="checkbox" name="aihao" value="312">
            烫头<input type="checkbox" name="aihao" value="153">
        <input type="submit" value="注册">
    </form>

在这里插入图片描述

username=132&userpwed=111&aihao=123&aihao=312&aihao=153

所以后端存储存储前端的数据采用Map集合来存储,而且为了防止key=aihao相同value被覆盖,我们采用Map<String,String[ ]>的方法储存数据。

Map<String,String[ ]> ,key存储String,value存储String[ ]

     key	      value
    ---------------------
    username	   {"132"}
    userpwd	       {"111"}
    aihao		   {"123","312","153"}

注意:前端永远提交的是字符串,后端永远接收的是字符串。
2. 获取客户端的IP地址

getRemoteAddr()

3. 设置post请求请求体的字符集,可以解决post请求请求体的乱码问题(但不能解决get请求乱码,因为get请求是在请求行发送数据)

setCharacterRncoding(“UTF-8”)

4. 获取应用的根路径

getContextPath()

5. 获取servlet路径(xml文件中配置的路径)

getServletPath()

6. 获取http请求的URI

getRequestURI()

7. 获取前端请求方式是get?post?…

getMethod()

8. 向HttpServletRequest请求域中存数据。

setAttribute(String name,Object value)

9. 从HttpServletRequest请求域中取数据。

getAttribute(String name)

10. 从HttpServletRequest请求域中删除数据。

removeAttribute(String name)

五、关于HttpServletRequest请求域:

  • HttpServletRequest"请求域"对象要比ServletContext"应用域"对象范围小很多,生命周期短很多。请求域只在一次请求内有效。
  • 一个request请求对象对应一个请求域对象,一次请求结束之后,这个请求域就销毁了。
  • 注意:ServletConfig是一个servlet对象对应一个servletconfig对象,而HttpServletRequest请求域是一个request请求对应一个请求域,是前端的一次请求中的信息,这个信息也不是用户输入的信息,而是我们通过setAttribute方法向请求域中存的信息,前端request请求结束后这个请求域就销毁了。简言之:一个是面向单个servlet对象,一个是面向单个http请求。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

姓蔡小朋友

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值