• javaWeb中servlet开发(3)——Servlet生命周期


    生命周期:是一个程序的存在周期,servlet由于是受容器的管理,所以容器来决定其生命周期

    1、servlet生命周期

    2、servlet生命周期对应的方法

     3、servlet生命周期代码

    public class LifeCycleServlet extends HttpServlet{
        public void init() throws ServletException{
            System.out.println("** 1、Servlet初始化 --> init()") ;
        }
        public void doGet(HttpServletRequest req,HttpServletResponse resp)
                  throws ServletException,IOException{
            System.out.println("** 2、Servlet服务 --> doGet()、doPost()") ;
        }
        public void doPost(HttpServletRequest req,HttpServletResponse resp)
                  throws ServletException,IOException{
            this.doGet(req,resp) ;
        }
        public void destroy(){
            System.out.println("** 3、Servlet销毁 --> destory()") ;
            try{
                Thread.sleep(3000) ;
            }catch(Exception e){}
        }/*
        public void service(ServletRequest req,
                                 ServletResponse res)
                          throws ServletException,
                                 IOException{
            System.out.println("************ 服务 **************") ;
        }
        */
    }

    一个基本生命周期编译后,就可以在web-INF/web.xml中进行映射配置。下面直接在根目录下配置

    <servlet>
            <servlet-name>life</servlet-name>
            <servlet-class>com.alice.servlet.LifeCycleServlet</servlet-class>
            <load-on-startup>1</load-on-startup>
        </servlet>
        <servlet-mapping>
            <servlet-name>life</servlet-name>
            <url-pattern>/LifeServlet</url-pattern>

    访问路径为:

     4、取得初始化配置信息

    public class InitParamServlet extends HttpServlet {
        private String initParam = null ;    // 用于保存初始化参数
        public void init() throws ServletException{
            System.out.println("*****************") ;
        }
    
        public void init(ServletConfig config) throws ServletException{
            System.out.println("#######################") ;
            this.initParam = config.getInitParameter("ref") ;    // 接收的初始化参数名称暂时为ref
        }
    
        public void doGet(HttpServletRequest req,
                         HttpServletResponse resp)
                  throws ServletException,
                         IOException{
            System.out.println("** 初始化参数:" + this.initParam) ;
        }
        public void doPost(HttpServletRequest req,
                         HttpServletResponse resp)
                  throws ServletException,
                         IOException{
            this.doGet(req,resp) ;
        
        }
    
    
    
    }

    之后,要做web.xml中配置

    <servlet>
            <servlet-name>initparam</servlet-name>
            <servlet-class>com.alice.servlet.InitParamServlet</servlet-class>
            <init-param>
                <param-name>ref</param-name>
                <param-value>www.baidu.cn</param-value>
            </init-param>
        </servlet>
        <servlet-mapping>
            <servlet-name>initparam</servlet-name>
            <url-pattern>/InitParamServlet</url-pattern>
        </servlet-mapping>

    如果一个servlet中覆写了两个init()方法,只有在web.xml中配置了参数的初始化方法才可以起作用。

    一般来说,取得初始化参数在一些系统架构中经常使用的。

    5、取得其他内置对象

    5.1 取session对象

    servlet本身提供的只有request和response对象,要想取得session对象,则只能依靠request对象,因为session本身属于http协议范畴,而且在每次发生请求时,服务器都会自动为客户端设置一个cookie,session中要使用cookie机制,cookie又只能通过request取得,那么自然地session也只能通过request取得。

    public class HttpSessionDemoServlet extends HttpServlet {
    	public void doGet(HttpServletRequest req,HttpServletResponse resp) throws ServletException,IOException{
    		HttpSession ses = req.getSession() ;
    		System.out.println("SESSION ID --> " + ses.getId()) ;
    		ses.setAttribute("username","李李") ;	 // 设置session属性
    		System.out.println("username属性内容:" + ses.getAttribute("username")) ;
    	}
    	public void doPost(HttpServletRequest req,HttpServletResponse resp) throws ServletException,IOException{
    		this.doGet(req,resp) ;
    	}
    }
    

      

    之后进行web.xml进行配置

    <servlet>
    		<servlet-name>sessiondemo</servlet-name>
    		<servlet-class>
    			com.alice.servlet.HttpSessionDemoServlet
    		</servlet-class>
    	</servlet>
    	<servlet-mapping>
    		<servlet-name>sessiondemo</servlet-name>
    		<url-pattern>/HttpSessionDemoServlet</url-pattern>
    	</servlet-mapping>
    

     5.2 取application对象

    public class ServletContextDemoServlet extends HttpServlet {
    	public void doGet(HttpServletRequest req,HttpServletResponse resp) throws ServletException,IOException{
    		ServletContext app = super.getServletContext() ;
    		System.out.println("真实路径:" + app.getRealPath("/")) ;
    	}
    	public void doPost(HttpServletRequest req,HttpServletResponse resp) throws ServletException,IOException{
    		this.doGet(req,resp) ;
    	}
    }
    

      

    <servlet>
            <servlet-name>applicationdemo</servlet-name>
            <servlet-class>
                com.alice.servlet.ServletContextDemoServlet
            </servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>applicationdemo</servlet-name>
            <url-pattern>/ServletContextDemoServlet</url-pattern>
        </servlet-mapping>
  • 相关阅读:
    oracle 数据库、实例、服务名、SID
    查看oracle数据库服务器的名字
    oracle表复制
    Oracle 备份、恢复单表或多表数据步骤
    如何查询一个表中有哪些列全为空
    mysql当查询某字段结果为空并赋值
    NoSQL初探之人人都爱Redis:(1)Redis简介与简单安装
    《大型网站技术架构》读书笔记四:瞬时响应之网站的高性能架构
    《大型网站技术架构》读书笔记三:大型网站核心架构要素
    《大型网站技术架构》读书笔记二:大型网站架构模式
  • 原文地址:https://www.cnblogs.com/snowwang/p/6103179.html
Copyright © 2020-2023  润新知