生命周期:是一个程序的存在周期,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. Shell 编程基础之括号的作用

    一.小括号() 单小括号 命令组.括号中的命令将会新开一个子shell顺序执行,所以括号中的变量不能够被脚本余下的部分使用.括号中多个命令之间用分号隔开,最后一个命令可以没有分号,各命令和括号之间不必 ...

  2. Java 集合系列08之 List总结(LinkedList, ArrayList等使用场景和性能分析)

    概要 前面,我们学完了List的全部内容(ArrayList, LinkedList, Vector, Stack). Java 集合系列03之 ArrayList详细介绍(源码解析)和使用示例 Ja ...

  3. FastDFS 自动部署和配置脚本

    写了一个自动安装和配置FastDFS的脚本,还没有写好关于nginx的配置.先贴上,如下: 自动安装FastDFS,(这部分是之前同事写好的) #!/bin/bash #instll gcc echo ...

  4. [转]CentOS下安装伪分布式Hadoop-1.2.1

    From: http://blog.csdn.net/yinan9/article/details/16805275 环境:CentOS 5.10(虚拟机下) [root@localhost hado ...

  5. objective-c 多线程注意的问题

    1.资源竞争:当每个线程都去访问同一段内存时,会导致所谓i资源竞争问题,这时候可以通过“@synchronized block”将实例变量包围起来,创建一个互斥锁, 这样你就可以确保在互斥锁中的代码一 ...

  6. jQuery 源码理解的基础

    /** * Created by cyk on 14-4-17. */function Person() { var temp = this; //this指向Person console.log(& ...

  7. ios8 tableView设置滑动删除时 显示多个按钮

      ** *  tableView:editActionsForRowAtIndexPath:     //设置滑动删除时显示多个按钮 *  UITableViewRowAction          ...

  8. osg学习示例之遇到问题四骨骼动画编译osgCal

    osg学习示例之遇到问题四骨骼动画编译osgCal 转自:http://blog.csdn.net/wuwangrun/article/details/8239451 今天学到书<OpenSce ...

  9. SpringMVC——接收请求参数和页面传参

    Spring接收请求参数: 1.使用HttpServletRequest获取 @RequestMapping("/login.do") public String login(Ht ...

  10. JavaScript的几种继承方式

    看<JavaScript高级程序设计>做的一些笔记 ECMAScript只支持实现继承,不支持接口继承(因为函数没有签名) 原型链(实现继承的主要方法): function SuperTy ...