javaEE006.01 请求和响应对象分析、请求和响应测试、转发与重定向区别、转发地址栏不变,重定向地址栏改变、转发可以携带request对象,重定向不能

系列文章目录

一、请求和响应对象分析

在这里插入图片描述
新建一个动态工程(项目)

在这里插入图片描述
然后新建一个Demo类
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
请求和响应
* 请求:客户端向服务器
* 类型:HttpServletRequest request
* 定义:代表了客户端向服务器发送的请求报文,该对象由服务器(web容器|Servlet容器)创建,
同时发送给Service(),Service()发送给doGet()或doPost()。
* 作用
1. 获取请求参数
* request.getParameter(“username”);
* request.getParameterValues(name) —— 返回的是数组html里面比如性别 的name是相同的
2. 获取项目的虚拟路径
* request.getContextPath();
3. 转发(路径跳转)
* request.getRequestDispatcher("").forward(request, response);
4. 域对象(哥四个)
* 响应:服务器向客户端
* 类型: HttpServletResponse response
* 定义:代表了服务器向客户端发送的响应报文,该对象由服务器(web容器|Servlet容器)创建,
同时发送给Service(),Service()发送给doGet()或doPost()。
* 作用
1. 服务器向客户端做出响应(文本|html)
* response.getWriter();
* write();|print();
2. 重定向(路径跳转)
* response.sendRedirect();

二、请求和响应测试

html我们继续使用前面所用的两个表单(一个get一个post)的页面login,html或者regist.html
然后新建一个servlet
在这里插入图片描述
在这里插入图片描述
我们一点finish的同时,在web.xml里面就会自动帮我们注册好这个页面(这就是新建servlet的好处)
然后改一下代码,验证我们文章开头讲的几个作用
在这里插入图片描述
在这里插入图片描述
验证如下:

1、 获取请求参数

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
启动服务器,测试一下

在这里插入图片描述

2、 获取项目的虚拟路径

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、转发路径跳转

路径转发的例子很好理解,比如我们登录页面,点击登录的时候是不是要跳转成功页面,按照这个思路我们往下走
需要获取转发和执行转发
在这里插入图片描述
上面我们可以放登录成功的页面
启动服务器测试一下
在这里插入图片描述

4、域对象

后面补上(这里跳过)

响应测试

在这里插入图片描述
注意响应测试我们怎么做测试呢?这个就要用doPost做了
服务器向客户端做出响应

1、服务器向客户端做出响应

比如还是登录,点击登录按钮的时候前面是登录成功跳转页面了,现在我们不跳转,我们弹出一个文本或者显示一个文本行不行
在这里插入图片描述
启动项目测试一下
在这里插入图片描述
在这里插入图片描述

怎么显示html
在这里插入图片描述

在这里插入图片描述

2、重定向

在这里插入图片描述
那么上面的两个跳转有什么区别呢?即转发和重定向的区别

三、转发与重定向区别

从上面的例子我们可以看出,转发需要两步,重定向需要两步吗?不需要
观察细致一些我们发现
转发的时候:
在这里插入图片描述
在这里插入图片描述
我们再来看post下面的重定向
在这里插入图片描述
为什么会这样,本质上这个要从底层去说明

转发:对于客户端来说,它一共只发送了1次请求
在这里插入图片描述
重定向:对于客户端来说,它需要发送两次请求(第1次去服务器找,服务器告诉它,在服务器没有这个页面,并且发送页面给客户端,客户端再根据这个页面去找1次)

在这里插入图片描述
发送一次请求地址栏肯定不会变,发送两次请求就会变了
转发可以访问WEB-INF下资源,重定向不能:
在这里插入图片描述
重定向 没有携带request对象
在这里插入图片描述
所以小结一下区别如下:
转发与重定向区别
* 转发地址栏不变,重定向地址栏改变。
* 转发客户端发送一次请求,重定向客户端发送两次请求。
* 转发可以访问WEB-INF下资源,重定向不能。
* 因为WEB-INF目录属于Web应用的私有目录(客户端无法直接访问 即 服务器可以访问) (你自己的私家车正常来说只有你们家能开)
* 转发可以携带request对象,重定向不能。

总结

重定向要带相对路径或者绝对路径都可以实现跳转
而转发只能带相对路径
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值