前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >HttpServletRequest

HttpServletRequest

作者头像
全栈程序员站长
发布2022-09-07 11:23:42
2330
发布2022-09-07 11:23:42
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

代表的是我们的响应对象

HttpServletRequest概述

service方法中的request的类型是ServletRequest,而doGet/doPost方法的request的类型是HttpServletRequest,HttpServletRequest是ServletRequest的子接口,功能和方法更加强大,今天我们学习HttpServletRequest。

request的运行流程

<span role="heading" aria-level="2">HttpServletRequest
<span role="heading" aria-level="2">HttpServletRequest

当你访问某个虚拟路径的时候,也就会发送请求给服务器,这个时候客户端会把你的请求,以及客户端的信息,按照http协议的样式封装为http请求(请求行,请求头,请求体)

发送给服务器,然后服务器是先是有tomcat引擎接收到这个请求,第一步先是解析你的请求资源,从你的虚拟路径种找到你servlet的完整的包名加类名第二步在把你的请求信息封装成

一个reqquest对象,与此同时创建一个空的response对象(所以这个时候这个request是有信息的,response是没有的),然后因为我们得到了完整的包名和类名所有走第三步 通过反射

创建一个servlet对象,并且调用service方法,把你的resqust和response以实参的方式传入到你的service方法的形参中,在service方法中我们可以用reques的方法获得请求行,头,体

也可以用response的方法设置相应行,头,体,这个response.getwrite.write()往你的缓冲区里写,写完以后tocat引擎会检测到你service方法结束了,当你service方法结束后tomcat会把你的

response缓冲区的信息按照http协议的样式封装成相应头,相应行,相应体,然后发送给你的客户端游览器,然后你的游览器接受到你的http相应后解析http相应现实页面

通过request获得请求行

<span role="heading" aria-level="2">HttpServletRequest
<span role="heading" aria-level="2">HttpServletRequest
<span role="heading" aria-level="2">HttpServletRequest
<span role="heading" aria-level="2">HttpServletRequest
<span role="heading" aria-level="2">HttpServletRequest
<span role="heading" aria-level="2">HttpServletRequest

运行后:

<span role="heading" aria-level="2">HttpServletRequest
<span role="heading" aria-level="2">HttpServletRequest

还有要先写一个jsp的表头 在webcontion里

<span role="heading" aria-level="2">HttpServletRequest
<span role="heading" aria-level="2">HttpServletRequest

其中这些

<span role="heading" aria-level="2">HttpServletRequest
<span role="heading" aria-level="2">HttpServletRequest

这个比较关键 其他了解就好

通过request获得请求头

<span role="heading" aria-level="2">HttpServletRequest
<span role="heading" aria-level="2">HttpServletRequest
<span role="heading" aria-level="2">HttpServletRequest
<span role="heading" aria-level="2">HttpServletRequest

referer头的作用:获取该访问的的来源

做防盗链

<span role="heading" aria-level="2">HttpServletRequest
<span role="heading" aria-level="2">HttpServletRequest

做一个防盗链例子:

首先创建一个jsp文件

<span role="heading" aria-level="2">HttpServletRequest
<span role="heading" aria-level="2">HttpServletRequest

创建一个servlet

<span role="heading" aria-level="2">HttpServletRequest
<span role="heading" aria-level="2">HttpServletRequest

叫RefererSerlvet

然后

<span role="heading" aria-level="2">HttpServletRequest
<span role="heading" aria-level="2">HttpServletRequest

通过request获得请求体

<span role="heading" aria-level="2">HttpServletRequest
<span role="heading" aria-level="2">HttpServletRequest

请求体只有post请求的时候才会有

<span role="heading" aria-level="2">HttpServletRequest
<span role="heading" aria-level="2">HttpServletRequest

测试实例:

现在webContion里创建

一个jsp

然后写一个表单

<span role="heading" aria-level="2">HttpServletRequest
<span role="heading" aria-level="2">HttpServletRequest

然后在

<span role="heading" aria-level="2">HttpServletRequest
<span role="heading" aria-level="2">HttpServletRequest
<span role="heading" aria-level="2">HttpServletRequest
<span role="heading" aria-level="2">HttpServletRequest

运行后:

<span role="heading" aria-level="2">HttpServletRequest
<span role="heading" aria-level="2">HttpServletRequest

其中getparameter方法是根据k或的一个参数

<span role="heading" aria-level="2">HttpServletRequest
<span role="heading" aria-level="2">HttpServletRequest
<span role="heading" aria-level="2">HttpServletRequest
<span role="heading" aria-level="2">HttpServletRequest

是获得一个字节数组的请求参数

<span role="heading" aria-level="2">HttpServletRequest
<span role="heading" aria-level="2">HttpServletRequest
<span role="heading" aria-level="2">HttpServletRequest
<span role="heading" aria-level="2">HttpServletRequest

是获得所有的请求参数

<span role="heading" aria-level="2">HttpServletRequest
<span role="heading" aria-level="2">HttpServletRequest

无论是get还是post请求 都获得请求参数

解决中文乱码问题:

<span role="heading" aria-level="2">HttpServletRequest
<span role="heading" aria-level="2">HttpServletRequest

post请求

<span role="heading" aria-level="2">HttpServletRequest
<span role="heading" aria-level="2">HttpServletRequest

gei请求:

<span role="heading" aria-level="2">HttpServletRequest
<span role="heading" aria-level="2">HttpServletRequest

解决单个请求参数的乱码问题

以后百分之99。9的表单提交都是post请求 所以只记住post请求的解决乱码问题就好

如果是最新的服务器的话 服务器直接就可以解决, 我们以后要学的框架也有拦截器也可以处理乱码问题

request的其他功能

<span role="heading" aria-level="2">HttpServletRequest
<span role="heading" aria-level="2">HttpServletRequest

和之前的一样的 存值 取值 删除值

注意:request域的作用范围:一次请求中

(1)request完成请求转发
<span role="heading" aria-level="2">HttpServletRequest
<span role="heading" aria-level="2">HttpServletRequest
<span role="heading" aria-level="2">HttpServletRequest
<span role="heading" aria-level="2">HttpServletRequest

请求转发特点:

1.请求的服务器1次

2.url地址栏不发生变化

3.servlet01里存的值 ,servlet02也能取到。

配合requse域使用:

首先在创建两个servlet

<span role="heading" aria-level="2">HttpServletRequest
<span role="heading" aria-level="2">HttpServletRequest
<span role="heading" aria-level="2">HttpServletRequest
<span role="heading" aria-level="2">HttpServletRequest
<span role="heading" aria-level="2">HttpServletRequest
<span role="heading" aria-level="2">HttpServletRequest
<span role="heading" aria-level="2">HttpServletRequest
<span role="heading" aria-level="2">HttpServletRequest

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/154849.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • HttpServletRequest概述
  • request的运行流程
  • 通过request获得请求行
  • 通过request获得请求头
  • 通过request获得请求体
  • request的其他功能
    • (1)request完成请求转发
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档