1.Servlet之前的调用方式
1.前提条件:针对浏览器某次请求,需要在服务端中由多个Servlet参与其中,但是浏览器一次只能请求一个资源文件,导致用户为了得到服务,结果需要手动通过浏览器发起多次请求,增加用户获得服务难度,降低使用感受。导致用户流失。
2.红线:无论本次请求中涉及了多少个Servlet,用户只需要手动发起一次请求。
3.解决方案: 重定向解决方案,请求转发解决方案。
2.Servlet重定向解决方案
首先来看一下工作原理图
依赖命令:response.sendRedirect("地址")
地址格式:1)如果要求浏览器访问的其他网站的资源,地址采用URL:response.sendRedirect("http://www.baidu.com")
2) 如果要求浏览器访问的当前网站的资源,地址采用URI:response.sendRedirect("/myWeb/two")特征:1)重定向过程中浏览器至少发送两次以上请求,但是只有第一次请求是用户手动发起的。
2)在浏览器发送请求之后,收到的状态码是302时就可以判定服务端采用重定向方案解决请求
3)通过重定向方案调用的Servlet接收的请求方式一定是GET,从第二次请求开始是通过浏览器地址发起的。因此发起
请求方式一定是GET。
3.Servlet请求转发解决方案
首先来看一下工作原理图
依赖命令://通过请求对象获得资源申请对象:RequestDispatcher report = request.getRequestDispatcher("地址");
//将资源申请对象发送给tomcat:report.forward(request,response)地址格式:"/资源文件名"
特征:1) 请求转发过程中,浏览器只发送了一次请求。
2) 请求转发过程中,为什么将请求对象和响应对象交给tomcat?请求转发过程,两个Servlet应该共享同一个请求协议包,因此它们共享这个请求协议包关联的请求对象和响应对象。
3)通过请求转发调用的Servlet接收的请求方式:在同一次请求转发过程中,所有servlet接收请求方式保持一致。