生命周期:是一个程序的存在周期,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>

javaWeb中servlet开发(3)——Servlet生命周期的更多相关文章

  1. JavaWeb之 Servlet执行过程 与 生命周期

    Servlet的概念 什么是Servlet呢? Java中有一个叫Servlet的接口,如果一个普通的类实现了这个接口,这个类就是一个Servlet.Servlet下有一个实现类叫HttpServle ...

  2. [转]JavaWeb之 Servlet执行过程 与 生命周期

    https://www.cnblogs.com/vmax-tam/p/4122105.html Servlet的概念 什么是Servlet呢? Java中有一个叫Servlet的接口,如果一个普通的类 ...

  3. JavaEE Servlet 核心方法及生命周期

    做JavaWeb开发,免不了要和Servlet打交道.Servlet是Sun(Oracle)官方定义的一个Web开发规范,所有Servlet开发都必须遵守.自己以前也没有从头做过Web开发,所以这方面 ...

  4. HTTP协议 Servlet入门 Servlet工作原理和生命周期 Servlet细节 ServletConfig对象

    1 HTTP协议特点   1)客户端->服务端(请求request)有三部份     a)请求行--请求行用于描述客户端的请求方式.请求的资源名称,以及使用的HTTP协议版本号 请求行中的GET ...

  5. 【servlet】Servlet的API和生命周期]

    创建时间:6.15 一.Servlet的API(生命周期) (1)Servlet接口中的方法 1)init(ServletConfig config) 何时执行:servlet对象创建的时候执行 Se ...

  6. Servelet开发步骤和生命周期

    Servelet开发步骤和生命周期 (1)    程序员开发程序,实现servelet的init和destroy接口 .重写servlet的 doGet.doPost.doPut.doDelete四个 ...

  7. vue第七单元(vue的单文件组件形式-单文件组件的加载原理-vue-cli构建的开发环境以及生命周期)

    第七单元(vue的单文件组件形式-单文件组件的加载原理-vue-cli构建的开发环境以及生命周期) #课程目标 掌握安装 vue-cli 命令行工具的方法,掌握使用命令行在本地搭建开发环境,使用命令行 ...

  8. Flutter--Flutter中Widget、App的生命周期

    前言 在App的开发过程中,我们通常都需要了解App以及各个页面的生命周期,方便我们在App进入前台时启动一些任务,在进入后台后暂停一些任务.同时,各个页面的生命周期也很重要,每个页面消失时要做一些内 ...

  9. C/C++——C++变量的作用域与生命周期,C语言中变量的作用域和生命周期

    全局变量 作用域:全局作用域(全局变量只需在一个源文件中定义,就可以作用于所有的源文件.) 生命周期:程序运行期一直存在 引用方法:其他文件中要使用必须用extern 关键字声明要引用的全局变量. 内 ...

  10. 如何在web.config文件中配置Session变量的生命周期

    实例说明:在网上购物商城中,为了维护在线购物环境,一般只有注册会员才可以购买商品.实现购物功能时,先通过Session变量记录会员的登录名,然后在购买商品页面通过判断会员是否登录确定其能否购买商品. ...

随机推荐

  1. 8VC Venture Cup 2016 - Elimination Round

    在家补补题   模拟 A - Robot Sequence #include <bits/stdc++.h> char str[202]; void move(int &x, in ...

  2. ReSharper 配置及用法(二)

    下载工具 一:Reshaper是什么 即便是那些整天攻击 .NET 和 C# 的人,也常常不得不承认 Visual Studio 确实是个够强大的 IDE,除非他认为更少的 IDE 功能和命令行调试才 ...

  3. Unity Standard Assets 简介之 Utility

    决定写这个系列起因于刚才的偶然所见,我发现当前版本的Unity有一个 Utility 标准资源包,里面有一个 FPSCounter 脚本提供了显示游戏运行帧率的基本功能,而我几周前刚刚写过一个同样功能 ...

  4. Storm命令详解

    在Linux终端直接输入storm,不带任何参数信息,或者输入storm help,可以查看storm命令行客户端(Command line client)提供的帮助信息.Storm 0.9.0.1版 ...

  5. 如何在电脑上测试手机网站(补充)和phonegap

    颜海镜 介绍了专业人士精准测试手机网站的经验 http://www.cnblogs.com/yanhaijing/p/3557261.html, 因为太专业了,稍显复杂和琐碎,这里我介绍下我一直关注的 ...

  6. git两种合并方法 比较merge和rebase

    18:01 2015/11/18git两种合并方法 比较merge和rebase其实很简单,就是合并后每个commit提交的id记录的顺序而已注意:重要的是如果公司用了grrit,grrit不允许用m ...

  7. Codeforces Beta Round #6 (Div. 2 Only)

    A,B,C都是水题... D题,直接爆搜.我换了好多姿势,其实最简单的方法,就能过. #include <cstdio> #include <string> #include ...

  8. 原生js获取Html元素的实际宽度高度

    第一种情况就是宽高都写在样式表里,就比如#div1{width:120px;}.这中情况通过#div1.style.width拿不到宽度,而通过#div1.offsetWidth才可以获取到宽度. 第 ...

  9. CAS单点登录中文用户名乱码问题

    CAS单点登录中文用户名乱码问题,有两种情况 1. CAS server乱码 即在向server端提交用户名和密码时,发生了乱码,解决方法是: 打开WEB-INF/web.xml,在其它的Filter ...

  10. 建立和断开与MySQL服务器的连接

    MySQL 与 mysql 之间的区别: MySQL指完整的MySQL DBMS系统,mysql仅代表一个特定的客户程序. 连接服务器: >mysql -h host_name -p -u us ...