Servlet总结

13年前

转自:http://student.csdn.net/space.php?uid=972460&do=blog&id=43995

一,什么是Servlet?
Servlet是一个Java编写的程序,此程序是基于Http协议的,在服务器端运行的(如tomcat),是按照Servlet规范编写的一个Java类。
二,Servlet有什么作用?
主要是处理客户端的请求并将其结果发送到客户端。
三,Servlet的生命周期?
Servlet的生命周期是由Servlet的容器来控制的,它可以分为3个阶段;初始化,运行,销毁。
初始化阶段:
1,Servlet容器加载servlet类,把servlet类的.class文件中的数据读到内存中。
2,然后Servlet容器创建一个ServletConfig对象。ServletConfig对象包含了Servlet的初始化配置信息。
3,Servlet容器创建一个servlet对象。
4,Servlet容器调用servlet对象的init方法进行初始化。
运行阶段:
当servlet容器接收到一个请求时,servlet容器会针对这个请求创建servletRequest和servletResponse对象。然后调用service方法。并把这两个参数传递给service方法。Service()方法通过servletRequest对象获得请求的信息。并处理该请求。再通过ServletResponse对象生成这个请求的响应结果。然后销毁servletRequest和servletResponse对象。我们不管这个请求是post提交的还是get提交的,最终这个请求都会由service()方法来处理。
销毁阶段:
当Web应用被终止时,servlet容器会先调用servlet对象的destrory方法,然后再销毁servlet对象,同时也会销毁与servlet对象相关联的servletConfig对象。我们可以在destroy方法的实现中,释放servlet所占用的资源,如关闭数据库连接,关闭文件输入输出流等。

在这里该注意的地方:
在servlet生命周期中,servlet的初始化和和销毁阶段只会发生一次,而service()方法执行的次数则取决于servlet被客户端访问的次数
四,Servlet怎么处理一个请求?
当用户发送一个请求到某个Servlet的时候,Servlet容器会创建一个ServletRequst和ServletResponse对象。在ServletRequst对象中封装了用户的请求信息,然后Servlet容器把ServletRequst和ServletResponse对象传给用户所请求的Servlet,Servlet把处理好的结果写在ServletResponse中,然后Servlet容器把响应结果传给用户。


五,Servlet与JSP有什么区别?
1,jsp经编译后就是servlet,也可以说jsp等于servlet。
2,jsp更擅长页面(表现)。servlet更擅长逻辑编辑。 (最核心的区别)。
3,在实际应用中采用Servlet来控制业务流程,而采用JSP来生成动态网页.在struts框架中,JSP位于MVC设计模式的视图层,而Servlet位于控制层。
六,Servlet里的cookie技术?
cookies是一种WEB服务器通过浏览器在访问者的硬盘上存储信息的手段,是由Netscape公司开发出来的。
cookie技术的好处:
    1,Cookie有效期限未到时,Cookie能使用户在不键入密码和用户名的情况下进入曾经浏览过的一些站点。
    2,Cookie能使站点跟踪特定访问者的访问次数、最后访问时间和访问者进入站点的路径。
   
创建一个cookie

     //Java代码
    //里面的两个参数分别是cookie的名和cookie的值    
     response.addCookie(new Cookie("abc","10000000"));     

     //里面的两个参数分别是cookie的名和cookie的值

     response.addCookie(new Cookie("abc","10000000")); 
使用cookie

   //Java代码
   Cookie[] cook =request.getCookies();//用一个Cookie数组来接收    
   
   for(int j=0;j<cook.length;j++){//通过循环来打印Cookie   
  
        cook[j].getName()://取cookie的名     
        cook[j].getValue()://去cookie的值   
  
  }  

  Cookie[] cook =request.getCookies();//用一个Cookie数组来接收

  for(int j=0;j<cook.length;j++){//通过循环来打印Cookie

        cook[j].getName()://取cookie的名 
        cook[j].getValue()://去cookie的值

 }

七,Servlet里的过滤器?

(1)过滤器的主要作用1,任何系统或网站都要判断用户是否登录。2,网络聊天系统或论坛,功能是过滤非法文字3,统一解决编码(2)怎么创建一个过滤器:
1,生成一个普通的class类,实现Filter接口(javax.servlet.Filter;)。2,重写接口里面的三个方法:init,doFilter,destroy。3,然后在web.xml配置过滤器。

八,Servlet里的监听器?

监听器的作用:自动执行一些操作。三种servlet监听器:对request的监听。对session的监听。对application的监听。怎么创建一个session监听器:1,生成一个普通的class类,如果是对session的监听,则实现HttpSessionListener。2,然后重写里面的五个方法:
//Java代码
public void sessionCreated(HttpSessionEvent arg0) {} // 创建   
  
public void sessionDestroyed(HttpSessionEvent arg0) {} // 销毁   
  
public void attributeAdded(HttpSessionEvent arg0) {} // 增加   
  
public void attributeRemoved(HttpSessionEvent arg0) {} // 删除   
  
public void attributeReplaced(HttpSessionEvent arg0) {} // 替换