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的监听器,了解了它的事件分类。