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响应头
setContentType(String mimetype);
addCookie(Cookie c);
发送内容的服务器的类型
设置HTTP消息体
HttpServletResponse对象负责将信息返回给客户端
HttpServletResponse对象只产生一个空的HTTP响应
传回自定义的内容需要使用getWriter()或者getOutputStream()方法
–传送普通文本
–传送二进制内容
请求重定向和自动刷新页面
重定向的原理:
使用sendRedirect(String URL)方法实现重定向,
response.setHeader("Refresh", "time; URL=url" );
总结: