分享

Servlet(一)

 风吹乱了流年 2016-10-15

          ServeltJavaEE开发中,占据着举足轻重的作用,起到了连接程序和服务器的重要功能。为何称其为规范呢?它规范了那些东西呢?对于Servlet对象又该如何认识它,了解它呢?


          我们先来看一张图片:




          这是一张对于我们JavaWeb项目运行流程的简化图,这里边出现了浏览器,服务器,项目程序,数据库四个实体,在这四个实体中间出现了http协议,Servlet规范,JDBC规范三个规则。JDBC前边介绍过,是由sun制定,各种数据库厂商实现,JAVA开发程序员调用的,在数据库厂商和Java程序员中间起到了规范的作用,需要两方都去遵守。而http协议则是由W3C制定的协议,需要浏览器厂商和服务器厂商来实现。而13规范之一Servlet则是由Sun制定,我们Java程序员来实现的,所以说是非常重要的。有了Servlet这套规范,我们的将我们编写的程序部署到TomcatweblogicJBoss等服务器中,因为我们有这套规范约束着呢!下边我们来看一下Servlet的相关知识。

 

           一,Servlet是什么?

                     简单来说Servlet就是满足我们Servlet规范的“服务器端的小Java程序”。

  1. /** 
  2.  * 需要我们实现J2ee中的Servlet接口(规范) 
  3.  * @author Administrator 
  4.  */  
  5. public class ServletExample implements Servlet {  
  6.   
  7.     //在构造方法执行结束之后,对象创建完毕,init方法马上执行  
  8.     //只执行一次。这个方法我们称作初始化方法。  
  9.     //该方法调用的时候Servlet对象刚刚创建完毕,相当于人一生开始的受教育  
  10.     @Override  
  11.     public void init(ServletConfig arg0) throws ServletException {  
  12.     }  
  13.       
  14.   
  15.     //这是一个Servlet对象的核心业务方法。我们主要把业务编写到这个方法中,用户请求一次,执行一次。  
  16.     //相当于人受完教育后进行工作为人民服务  
  17.     @Override  
  18.     public void service(ServletRequest arg0, ServletResponse arg1)  
  19.             throws ServletException, IOException {  
  20.     }  
  21.       
  22.     //当服务器容器关闭的时候,或者长时间没有用户再去访问这个Servlet  
  23.     //Servlet对象所占用的内存即将被释放,释放之前会由Tomcat容器自动调用该方法。  
  24.     //该方法在Servlet对象的内存被回收之前执行。  
  25.     //该方法执行的时候Servlet对象还没有被销毁。  
  26.     //该方法也是只执行一次。相当于人一辈子的结束。  
  27.     @Override  
  28.     public void destroy() {  
  29.     }  
  30.   
  31.     //下边两个是关于Servlet信息的方法  
  32.     @Override  
  33.     public ServletConfig getServletConfig() {  
  34.         return null;  
  35.     }  
  36.   
  37.     @Override  
  38.     public String getServletInfo() {  
  39.         return null;  
  40.     }  
  41. }  

            当然在Servlet+Jsp开发时,都是做的B/S开发,在JavaEE.Servlet.Http包下的HttpServlet已经实现了Servlet接口,我们只需要继承HttpServlet,根据我们页面传输的方式重写里边的doPost或者doGet方法,就可以直接写我们的业务程序了。是非常方便的。


 

         二,Servlet的生命周期:



           这里需要我们注意的是:Servlet对象,在服务器中是在“单实例多线程环境下”运行的,所以会存在线程安全的问题。

 

           三,讲了Servlet是什么,生命周期,最后我们看一下Servlet的创建本质过程:

             首先说一下,每使用一个Servlet时,我们需要在web.xml中进行相关的配置:

  1.          <!-- 配置servlet -->  
  2.         <servlet>  
  3.             <servlet-name></servlet-name><!-- 上下关联的名字 -->  
  4.             <servlet-class></servlet-class><!-- servlet类的真实路径 -->  
  5.         </servlet>  
  6.         <servlet-mapping>  
  7.             <servlet-name></servlet-name><!-- 上下关联的名字 -->  
  8.             <url-pattern></url-pattern><!-- servelt的访问路径 -->  
  9.   
  10. </servlet-mapping>  



         创建过程需要按照它的生命周期来看:

           1,创建:通过用户的请求路径,解析web.xml文件,获取Servlet的完整类名,通过反射进行实例化对应的Servlet对象:

Class c = Class.forName(Servlet类全名”);

Servlet servlet = (Servlet)c.newInstance();

     

         2,创建后进行初始化,调用init方法

         servlet.init(config); //初始化方法,对象第一次被创建之后调用。只执行一次。(初始化时刻)

 

         3,用户调用时,执行service方法:

         servlet.service(request,response); //核心业务方法,用户访问一次必然执行一次。(执行多次)

 ……..

        4,销毁:

servlet.destroy();

 

 

         正好对应着上边的生命周期,这里想说的就是Servlet也是通过反射机制进行的创建,明白我们底层的创建过程。

 

           Servlet在开发中起着举足轻重的作用,明白它的原理对我们以后的开发学习非常有用。




    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多