首页 > 代码库 > j2ee规范——Servlet

j2ee规范——Servlet

1.什么是servlet。

    

    servlet是提供基于协议请求的/响应服务的java类。

    

    servlet是一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面。它担当客户端请求与服务器响应的中间层。 

   

   简单点说:servlet就是客户端和服务器端的桥梁,通过这个桥梁,才能处理客户端请求与服务器响应


2.Servlet的生命周期


Servlet的生命周期是由Servlet的容器来控制的,它可以分为3个阶段;初始化、运行、销毁。


在servlet生命周期中,servlet的初始化和和销毁阶段只会发生一次,而service方法执行的次数则取决于servlet被客户端访问的次数。


初始化阶段:


1.Servlet容器加载servlet类,把servlet类读到内存中。


2.然后Servlet容器创建一个ServletConfig对象。ServletConfig包含Servlet初始化配置信息。


3.Servlet容器创建一个servlet对象。


4.Servlet容器调用servlet对象的init方法进行初始化。


运行阶段


1.接受请求,servlet创建servletRequest和servletResponse对象。


2.调用service方法,并把这两个参数传递给service方法。


3.Service方法通过servletRequest对象获得请求的 信息,并处理该请求。


4.通过servletResponse对象生成这个请求的响应结果。


5.然后销毁servletRequest和servletResponse对象。


销毁阶段


    Web终止时,servlet容器会先调用servlet对象的destrory方法,然后再销毁servlet对象以及相关联的servletConfig对象。


在destroy方法中,释放servlet所占用的资源。如:关闭数据库连接,关闭文件输入输出流等。


3.Servlet数据处理

1.收到Get请求时调用servlet的doGet

//收到Get请求时调用servlet的doGet
import javax.servlet.*;
import javax.servlet.http.*;
import javax.io.*;

public class MyServlet extends HttpServlet{
	public void doGet(HttpServletRequest req,HttpServletResponse res) throws ServletException,IOException{
	
	}
}


2.收到post请求时调用servlet的doPost

import javax.servlet.*;
import javax.servlet.http.*;
import javax.io.*;

public class MyServlet extends HttpServlet{
	public void doPost(HttpServletRequest req,HttpServletResponse res) throws ServletException,IOException{
	
	}
}


4.Servlet与JSP区别

1.jsp经编译后就是servlet,也可以说jsp等于servlet。


2.jsp更擅长页面(表现)。servlet更擅长逻辑编辑。 (最核心的区别)。


3.在实际应用中采用Servlet来控制业务流程,而采用JSP来生成动态网页.


4.JSP位于MVC设计模式的视图层,而Servlet位于控制层。


5.Servlet里的过滤器

    如果servlet是客户端和服务器端的桥梁,那么过滤器就应该是桥梁上的收费站、交通指示牌、限高架。用这些东西来过滤、限制车辆的通行。


 (1)过滤器的主要作用


1.解密用户请求数据和加密响应数据


2.数据压缩和解压缩


3.用户认证


4.在日志中过滤有价值的信息


5.图像转换

 (2)创建一个过滤器


1.生成一个普通的class类,实现Filter接口(javax.servlet.Filter;)。


2.重写接口里面的三个方法:init(初始化),doFilter(过滤任务),destroy(撤销)。

import javax.servlet.*;
import javax.servlet.http.*;
import myCompress.*;

public class MyCompressFilter implements Filter{//实现Filter接口
	private String compressAlgorithm=null;
	
	public void init(FilterConfig filterConfig){//初始化
		compressAlgorithm =filterConfig.getInitParameter("compressAlgorithm");
	}	
	public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain)throws IOException,ServletException{
		MyCompressor compressor=new MyCompressor(); 
		compressor.decompress(request,compressAlgorithm);  
		chain.doFilter(request,response);
		compressor.compress(response,compressAlgorithm);
	}
}

3.然后在web.xml配置过滤器。



6.事件监听器 

在j2se中学过事件监听器,事件监听就是当某种事情发生以后,就向监听器传送某种事件对象,监听器接到后,进行某些处理。

servlet监听器事件:

1.ServletContext事件,当部署、关闭web应用时和增加、删除、修改属性时。


2.HttpSession事件,当激活、钝化HTTPSession时增加、删除、修改HttpSession属性时。


总结

    这一段servlet学习主要是学习了它的作用和应用,1.作用:在服务器端与客户端架起了桥梁,可以让客户端和服务器之间通信。2.应用方面:学习了servlet的生命周期,全局的角度了解了servlet的整个初始化、运行、销毁的过程;细化了servlet的doGet和doPost数据处理方式;以及在servlet这个‘桥梁’上建立过滤器来限制、过滤一下数据;最后是学习了servlet的监听器,了解了它的事件分类。



j2ee规范——Servlet