Servlet的生命周期

时间:2022-12-23 00:15:54
###Servlet的生命周期                             重点
  #实例化      -创建一个Servlet      单例(只有一个实例)          和Filter一样                              
  #初始化      -只初始化一次         在Tomcat自动创建Servlet后,会立即自动初始化(调用init()方法)
   -默认是在首次访问时Tomcat自动创建(实例化)和初始化   http://localhost:8088/Servlet6/demo  首次访问
   -也可以修改配置文件web.xml,使得启动Tomcat就直接创建(实例化)Servlet
       -<servlet> <load-on-startup>1</load-on-startup> </servlet>   1表示创建的次序
  #就绪        -调用        访问几次就调用几次 
  #销毁        -在通过server关闭Tomcat时,会自动销毁Servlet    
  ***实例化、初始化、销毁只能执行一次


###ServletConfig与ServletContext
  #Context:Servket上下文,理解为环境
   -环境可以给某内部的个体提供资源
   -从编程角度来说,可以给内部的对象提供数据
  #ServletConfig             1对1
   -是Servlet的私有环境,可以为某一个Servlet提供数据
   -写在<select></select>标签内,
        <init-param>
     <param-name>maxOnline</param-name>
            <param-value>2000</param-value>
  </init-param>


   ServletConfig cfg = getServletConfig();
   String str = config.getInitParameter("maxOnline");
  


  #ServletContext            1对多
   -是Servlet的共有环境,可以为所有Servlet提供数据
   -写在<select>和<servlet-mapping>标签外,
        <context-param>
    <param-name>size</param-name>
    <param-value>10</param-value>
        </context-param>


    ServletContext ctx = getServletContext();
    String size = ctx.getInitParameter("size");


   -特殊用法:
      -可以使用此对象存取一些变量
      -即在程序运行阶段随时向此对象内存取数据
      -取:ctx.getAttribute("user");
      -存:ctx.setAttribute("user","zhangsan");
 ##使用ServletConfig和ServletContext给Servlet预置数据,不用写单独的配置文件,直接使用web.xml即可。
   另外这2个对象可以再初始化Servlet之前自动读取web.xml中的预置数据。


 ###JSP本质上就是Servlet,运行时JSP将被翻译成Servlet(只翻译一次)
    -翻译过程: 自动实现
      -1.创建Servlet类
      -2.翻译:创建变量、write HTML、保留脚本、print 表达式
      -3.编译Servlet  
=========================================================
 ###MVC模式是经典的设计模式,是代码的分成思想:
    -1.M:Model,即业务层,用来处理业务    Dao
    -2.V:View,即视图层,用来显示数据     JSP
    -3.C:Controller,即控制层,用来管理和调度程序,他是M和V的桥梁     Servlet
    其目的是降低代码之间的耦合度,便于团队开发及维护
=========================================================
 ###转发和重定向
  ##转发和重定向都用来解决web组件之间的跳转问题。WEB组件:处理请求的组件,Servlet和JSP
  ##转发:通常查询时转发
    -一次请求
    -地址不变
    -共用一个request,所有可以共享数据
    -不能转发到外部资源
  ##重定向:通常增、删、改后,重定向到查询
    -两次请求
    -地址改变
    -两个request,不能通过它共享数据
    -可以重定向到外部资源
 =====================================================
     **在java程序中访问不同的数据库,需要下载对应的数据库驱动,学习时使用的是Oracle,导入ojdbc.jar包 (ojdbc14:10.2.0.4.0)
     **使用DBCP连接池需要导jar包:commons-dbcp (1.4)  commons-pool(1.5.4)
     **XML的读写需要导jar包:dom4j 和 javen(XPath时需要)   
     **Junit.jar包:方便测试方法,比main方法好用,可以再一个类里建多个测试方法:
                    每个方法必须加 @Test,被测试的方法必须是:公有、无参数、无返回值
     **使用JSTL:JSP标准标签库时,要导入jstl.jar包(1.2)
     **在创建WEB项目时,目前用的是Tomcat服务器:
        #导入jar包
-通过maven导入jar包,搜javaee
-使用服务器自带的jar包,右键项目,点击properties,target runtime-->勾选tomcat
     **Spring框架导包:建立maven项目,使用Tomcat服务器自带的jar包,并导入org.springframework spring-webmvc(3.2.8),还需要一个配置文件
     




     不用Maven导包,如何手动导:将jar包复制在WEB-INF下的lib文件夹下(没有lib文件时新建一个),然后build path,Add to build Path.
     <!--
     命令行里输入:
     mvn install:install-file -DgroupId=org.mybatis -DartifactId=mybatis -Dversion=3.2.5.RELEASE -Dpackaging=jar -Dfile=C:\Users\Java\Desktop\mybatis-3.2.5.jar
     然后将jar包复制进C:\Users\Administrator\.m2\repository下
     再用pom.xml导包。