HttpServletRequest

HttpServletRequest代表的是我们的响应对象HttpServletRequest概述service方法中的request的类型是ServletRequest,而doGet/doPost方法的request的类型是Htt

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

代表的是我们的响应对象

HttpServletRequest概述

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

request的运行流程

<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

 

 

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

<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

 

 

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

做防盗链

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

 

 

做一个防盗链例子:

首先创建一个jsp文件

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

 

 创建一个servlet

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

 

 

叫RefererSerlvet

然后

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

通过request获得请求体

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

 

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

<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

 

 其中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

 

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

解决中文乱码问题:
<span role="heading" aria-level="2">HttpServletRequest

 

post请求

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

 

 gei请求:

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

 

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

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

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

request的其他功能

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

 

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

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

(1)request完成请求转发

<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

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • springboot转发和重定向_nginx重定向和转发的区别

    springboot转发和重定向_nginx重定向和转发的区别重定向就是浏览器重新发送新的请求,请求域改变,浏览器上的地址栏有变动,发送的地址是相对于项目的地址;转发就是服务器在服务器内部进行请求的转发,请求域不变,浏览器上的地址栏不变;一般在处理一个请求后再跳转到另一个处理请求时,进行重定向redirect;当请求不能变时,用forward转发请求。更详细的解释…

  • mysql联合索引有什么好处_联合索引和单个索引

    mysql联合索引有什么好处_联合索引和单个索引B树、联合索引、性能分析

  • Java:Eclipse下载安装教程,以及Eclipse 安装汉化包的方法[通俗易懂]

    Java:Eclipse下载安装教程,以及Eclipse 安装汉化包的方法[通俗易懂]Eclipse是目前最流行的Java语言开发工具,它强大的代码辅助功能,可以帮助开发人员自动完成语法修正、补全文字、代码修复、API提示等编码工作,大量节省程序开发所需的时间。本教程使用Eclipse为开发工具,下面介绍它的安装。(1)Eclipse是一个开放源代码的项目,其官方网站是www.eclipse.org。图1所示为Eclipse官方网站的首页。图…

  • docker部署mysql的坏处_docker创建mysql数据库

    docker部署mysql的坏处_docker创建mysql数据库首先,确认创建容器的时候添加了-d参数,以守护进程的方式运行容器。或者,之前容器能够正常启动,突然启动不了,可以参考下面的解决方案。使用free命令查看内存状态[root@VM-16-15-centos~]#freetotalusedfreesharedbuff/cacheavailableMem:38263362077648504884220812

  • Linux从入门到指令详解

    Linux从入门到指令详解一、概述我们为什么要学习Linuxlinux诞生了这么多年,以前还喊着如何能取代windows系统,现在这个口号已经小多了,任何事物发展都有其局限性都有其天花板。就如同在国内再搞一个社交软件取代腾讯一样,想想而已基本不可能,因为用户已经习惯于使用微信交流,不是说技术上实现不了解而是老百姓已经习惯了,想让他们不用,即使他们自己不用亲戚朋友还是要用,没有办法的事情。用习惯了windows操作系统,再让大家切换到别的操作系统基本上是不可能的事情,改变一个人已经养成的习惯太难。没有办法深入到普通老百姓的生

  • JAVA高并发编程「建议收藏」

    JAVA高并发编程「建议收藏」synchronized关键字同步方法同步代码块锁的底层实现锁的种类volatile关键字wait¬ifyAtomicXxx类型组CountDownLatch门闩锁的重入ReentrantLock同步容器Map/SetListQueueThreadPool&amp;ExecutorExecutorExecutorServiceFuture…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号