标签:
Servlet
Sun(Oracle)公司制定的一种用来扩展Web服务器功能的组建规范。
Servlet技术是使用java语言开发的一套组件规范,不再像CGI技术那样需要分配单独的进程来处理请求,而是单独分配一个线程来处理请求,于是大大提高了处理效率。并且java语言是跨平台的语言,也提升了Web服务器扩展的可移植性。
HTTP协议
超文本传输协议(HperText Transfer Protocol),是由w3c制定的一种应用层协议,用来定义浏览器与Web服务器之间如何通信以及通信的数据格式。
在通信过程中,一次请求对应一次连接,当浏览器再次发请求给服务器时,Web服务器并不知道这就是上次发请求的客户端,这也是HTTP协议的一个特点,即无状态协议。这种需要时建立连接,使用结束后立即断开连接的方式,使得Web服务器可以使用有限的连接为尽可能多的客户提供服务。
HTTP协议通信请求数据包:
1.请求行:请求方式+请求资源路径+协议版本
2.消息头:消息头是一些键值对,一般由w3c定义。通信的双方通过消息头来传递一些特定的含义,比如,浏览器可以发送User-Agent消息头来告诉Web服务器,浏览器的类型和版本。大部分为自动生成,某些时候自己需要添加消息头。
3.实体内容:只有当请求方式为post时,实体内容才会有数据。
HTTP协议通信相应数据包:
1.状态行:协议类型+版本+状态码+状态描述
2.消息头:Web服务器返回一些消息头给浏览器。例如,返回iContent-Type消息头,告诉浏览器服务器返回的数据类型和字符集。
3.实体内容:程序处理的结果。
Servlet如何处理HTTP协议数据通信
当Web容器收到一个HTTP请求时,通信数据由Web容器负责封装和提供,这些信息被解释为两个对象:与请求数据对应的HttpServletRequest对象和与响应数据对应的HttpServletResponse对象。
HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,请求中的所有消息都封装在这个对象中,通过这个对象的相关方法可以获取请求数据。
作用:
1.读取和写入HTTP请求数据(请求行、消息头等)
2.取得和设置cookies
3.取得路径信息
4.标识HTTP会话
5.实现请求转发
HttpServletResponse对象代表提供给客户端的相应,封装了HTTP的相应数据,通过这个对象可以设置状态行、消息头、实体内容。
作用:
1.设置对客户端的输出内容
2.设置相应的状态码
3.设置浏览器的解码方式
4.设置cookies
5.实现重定向
WEB程序
package web;
public class HelloServlet extends HttpServlet{
public void service(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<h1>Hello Servlet</h1>");
out.close();
}
}
<servlet>
<servlet-name>helloServlet</servlet-name>
<servlet-class>web.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>helloServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
过滤器
处理逻辑:
package web;
public class CommentFilter implements Filter{
public void init(FilterConfig arg0){
//...
}
public void doFilter(ServletRequest arg0,ServletResponse arg1,FilterChain arg2) throws IOException,ServletException{
//...
arg2.doFilter(arg0,arg1);
}
public void destroy(){
//...
}
}
<filter>
<filter-name>filter1</filter-name>
<filter-class>web.CommentFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>filter1</filter-name>
<url-pattern>/comment</url-pattern>
</filter-mapping>
标签:
原文地址:http://www.cnblogs.com/zhuyj/p/4314482.html