Http状态码
-
介绍
三位数字组成的符号。
Http服务器在推送响应协议包之前,根据本次请求处理情况,将Http状态码写入到响应包中的状态行上。
如果Http服务器针对本次请求,返回了对应的资源文件,通过Http状态码通知浏览器应该如何处理这个结果。
如果Http服务器针对本次请求,无法返回对应资源文件,通过Http状态码解释不能提供服务的原因。 -
Http状态码分类
100~599之间:
1XX常见的有:
【100】通知浏览器本次返回的资源文件并不是一个独立的资源文件,需要浏览器在
接收响应包之后,继续向Http依赖所需要的资源文件。
2XX常见的有:
【200】通知浏览器本次返回的资源文件是一个完整的资源文件。
3XX常见的有:
【302】通知浏览器本次返回的不是一个资源文件的内容,而是一个资源文件的地址,
需要浏览器根据这个地址,自动发起请求索要资源文件。
4XX常见的有:
【404】通知浏览器,由于服务端没有定位到被访问的资源文件,因此无法提供帮助。
【405】通知浏览器,在服务端已经定位到被访问的资源文件(servlet),但是这个
Servlet对于浏览器采用的请求方式不能处理。
5XX常见的有:
【500】通知浏览器,在服务端已经定位到被访问的资源文件(servlet),这个Servlet
可以接收浏览器采用的请求方式,但是Servlet在处理请求期间,由于Java异常导致处理
失败。
多个Servlet之间调用的规则
-
前提条件:
某些来自于浏览器发送请求,往往需要服务端中多个Servlet协同处理。但是浏览器一次只能访问一个Servlet,导致用户手动通过浏览器发起多次请求才能得到服务。
这样增加用户获得服务,导致用户放弃当前网站。 -
提高用户使用感受规则:
无论本次请求涉及到多少个Servlet,用户只需要“手动”通知浏览器发起一次请求即可。 -
调用规则:
重定向解决方案
请求转发解决方案
重定向解决方案
-
工作原理
用户第一次通过“手动方式”通知浏览器访问OneServlet,OneServlet工作完毕后,将TwoServlet地址写入到响应头的location属性中,导致Tomcat将302状态码写入到状态行。
在浏览器收到响应包之后,会读取到302状态,此时浏览器会自动根据响应头中的location属性地址发起第二次请求,访问TwoServlet去完成请求中剩余的任务。
-
实现命令:
responce.sendRedirect(“请求地址”);
将地址写入到响应包中响应头的location属性中 -
浏览器请求次数:
至少两次,只有第一次是手动请求 -
请求地址:
可以请求当前网站下的资源文件地址,也可以申请外部网站(百度、搜狐…) -
请求方式:
Get -
缺点
重定向解决方案需要在浏览器与服务器之间进行多次往返,大量时间消耗在往返次数上,增加用户等待时间。
请求转发解决方案
-
工作原理:
用户第一次通过“手动方式”通知浏览器访问OneServlet,OneServlet工作完毕后,通过当前请求对象代替浏览器向Tomcat发送请求,申请调用TwoServlet。
Tomcat收到请求后,自动调用TwoServlet,完成剩余任务。
-
实现命令:
请求对象代替浏览器向Tomcat发送请求
//1.通过当前浏览器生成一个“资源文件申请报告”对象
RequestDispatcher report = request.getRequestDispatcher("/请求资源文件名");
//2.把当前申请报告对象发送给Tomcat
report.forward(request,responce); -
浏览器请求次数:
只有一次 -
请求地址:
只能请求当前网站下的资源文件地址 -
请求方式:
根据客户端发送请求方式决定 -
优点:
无论本次请求涉及到多少个Servlet,用户只需要手动通过浏览器发送一次请求,Servlet直接调用。
发生在服务器计算机上,节省服务器与浏览器之间的交互次数,增加处理服务速度。