Servlet处理请求和响应

Servlet处理请求的流程:

    1) 客户端在浏览器的地址栏中输入一个请求的URL,按回车后就向服务器端发起一个http request(由浏览器生成)。

    2) 服务器端的Web Server首先接受到请求,并将请求转交给容器,容器会根据请求的URL去调用客户端要访问的Servlet。

    3) 容器会根据web.xml中对Servlet的描述去查找要访问的Servlet,若找到,将此Servlet

装载进虚拟机并实例化(第一次访问),然后调用Servlet实例中的service方法处理请求,并分配一个线程去执行。

注: 当第二次去访问同一个Servlet时,若容器判断到该Servlet已经被装载并实例化,

那么容器就不会再去创建一个新的Servlet实例,直接调用原来那个Servlet实例中的service方法

来处理请求。

    4) 若没有查找到,直接返回一个404的错误代码到客户端,表示访问的资源不存在。



Servlet处理响应:

设置HTTP状态码

设置响应状态行:
HTTP状态码:

HTTP状态码:

100-199:表示信息性代码,标示客户端应该采取的其他动作,请求正在进行。

200-299:表示客户请求成功。

300-399:表示用于已经移走的资源文件,指示新的地址。

400-499:表示由客户端引发的错误。

500-599:表示由服务器端引发的错误

servlet设置状态码一般使用HttpServletResponse的setStatus()方法;

设置HTTP响应头

HttpServletResponse对象用于操纵响应的HTTP头
目的用于告诉客户端
–发送回来的内容的类型
–有多少内容正被发送
常用的方法:

setContentType(String mimetype);

addCookie(Cookie c);

发送内容的服务器的类型

设置HTTP消息体

HttpServletResponse对象负责将信息返回给客户端

HttpServletResponse对象只产生一个空的HTTP响应

传回自定义的内容需要使用getWriter()或者getOutputStream()方法

–传送普通文本

–传送二进制内容 

 

请求重定向和自动刷新页面

重定向的原理:

         

            

          

使用sendRedirect(String URL)方法实现重定向,

 

在指定时间内自动刷新当前页或到一个新的页面
根据时间来控制响应
想在响应中有一个短时间的暂停 

response.setHeader("Refresh", "time; URL=url" );

 总结:
请求URL时HTTP发出了多个请求
状态码告诉浏览器发送的内容及格式状态
Servlet API与容器进行通讯
HttpServletResponse定义的常量来避免直接使用整数
在通过PrintWriter对象发送任何内容之前先调用 HttpServletResponse的setStatus()方法
为了让Servlet发挥最大的效能,HttpServletResponse对象用于操纵响应的HTTP头
getWrite()或者getOutputStream()方法传送文本或者二进制内容给客户端
sendRedirect方法实现重定向
HTTP响应头“Refresh”会根据时间来控制响应

相关推荐
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页