生命周期:是一个程序的存在周期,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. 读取Excel数据到Table表中

    方法一: try { List<DBUtility.CommandInfo> list = new List<DBUtility.CommandInfo>(); string ...

  2. iOS 原生网络请求(推荐使用AFNetWorking库)

    .     同步GET请求       //第一步,创建URL       NSURL *url = [NSURL URLWithString:@"http://api.hudong.com ...

  3. Ajax从服务器端获取数据

    写在前面的话 Ajax从服务器获取的数据都是字符串,但是通过不同的解析,可以解析为XML或JSON来进行应用. 一般来说.使用XML格式的数据比较通用,但是服务器和客户端解析起来都比较复杂一些;而使用 ...

  4. Python: 常用list, string处理功能

    #1. keep strings in double quote as one word when split string to words #e.g. str = ‘a b "is si ...

  5. OpenResy+Lua 利用百度识图 将图片地址解析成文字

    LUA代码:(注:LUA里有一个调用百度识图的接口IP:123.125.115.189(stu.baidu.com),不知为什么我的虚拟机无法解析stu.baidu.com,所以我只能PING出IP来 ...

  6. topcoder SRM 618 DIV2 WritingWords

    只需要对word遍历一遍即可 int write(string word) { ; ; i < word.length(); ++ i){ cnt+=word[i]-; } return cnt ...

  7. 第一天 Linux 是什么

    众所周知,Linux的核心原型是1991年由托瓦兹(Linus Torvalds)写出来 计算机是由一堆硬件所组成的,为了有敁率的控制这些硬件资源,于是乎就有操作系统产生了.       到了1985 ...

  8. IOS本地通知

        发送通知: UILocalNotification *newNotification = [[UILocalNotification alloc] init]; if (newNotifica ...

  9. 20145330第六周《Java学习笔记》

    20145330第六周<Java学习笔记> . 这周算是很忙碌的一周.因为第六周陆续很多实验都开始进行,开始要准备和预习的科目日渐增多,对Java分配的时间不知不觉就减少了,然而第十和十一 ...

  10. OSG使用更新回调来更改模型

    OSG使用更新回调来更改模型 转自:http://blog.sina.com.cn/s/blog_668aae7801017gl7.html 使用回调类实现对场景图形节点的更新.本节将讲解如何使用回调 ...