1.Servlet的生命周期:
        (1)被创建:
            默认情况下,Servlet第一次被访问时,被服务器创建。会调用init()方法。
                一个Servlet只会被创建一次。init()方法也只会被调用一次。
                Servlet是单例的。而服务器时多线程的。可能存在线程安全问题。
                  为了避免安全问题,在Servlet中尽量不要定义成员变量。即使定义了。也不要进行其他操作(只能查询)。

可以配置启动服务器时,创建Servlet
                配置启动创建
                   值:
                       0和正整数:在服务器启动时创建
                           数字越小 优先级越高
                       负整数:-1是默认值。在第一次被访问时创建
                <load-on-startup>2</load-on-startup>
            
         (2)提供服务:
                每一次被被访问,都会调用service方法提供服务。调用多次。
                提供服务:
                    1.获取请求消息数据
                    2.设置响应消息数据
        
         (3)被销毁:
             服务器关闭时,servlet被销毁。
            
             服务器正常关闭前,会销毁Servlet,在销毁之前,会调用destory()方法。只调用一次。

   2.Servlet的实现方式:
        (1)实现Servlet接口:
            * ServletConfig:Servlet配置对象
                * getInitParameter(String name) :获取servlet的初始化参数值
                * Enumeration getInitParameterNames() :获取servlet的初始化参数的名称枚举
                * ServletContext getServletContext()  :获取ServletContext
                * String getServletName() :获取Servlet名称
                
                * 服务器创建的。
                * 对于getServletConfig()的实现。
                    1.定义成员变量。ServletConfig config
                    2.在init 方法中 对其赋值
                    3.在getServletConfig() 返回成员变量。
 
        (2)继承GenericServlet:
              优化1:对于getServletConfig()的实现。
                在该类中,init方法有两个,一个有参的,一个无参的。我们要复写无参的。
            
              优化2:实现了ServletConfig 接口
                我们可以通过简单方式获取ServletContext对象。
                    
                    
        (3)继承HTTPServlet:对HTTP协议的封装。
            // 1.获取请求方式
            String method = req.getMethod();
            //2.根据方式的不同,执行不同的操作
            if("GET".equals(method)){
                //get方式的代码
                doGet(req,resp);
            }else if("POST".equals(method)){
                //get方式的代码
                doPost(req,resp);
            }
            
            以后我们需要复写 doGet()和 doPost();

  代码演示:

 import java.io.IOException;

 import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse; public class ServletTest implements Servlet { /**
* 初始化方法。Servlet创建之后调用,调用一次
*/
public void init(ServletConfig config) throws ServletException { System.out.println("init() 被调用了。。。");
} /**
* 获取ServletConfig对象的方法
*/
public ServletConfig getServletConfig() {
// TODO Auto-generated method stub
return null;
} /**
* 提供服务的方法,调用多次
*/
public void service(ServletRequest req, ServletResponse res)
throws ServletException, IOException { res.setContentType(getServletInfo());
String ip = req.getRemoteAddr();
System.out.println(req.getRemoteAddr() +"哎呀,怎么就被访问了呢?!。。。。。。");
if("192.168.1.65".equals(ip)){
res.getWriter().write("<h1>你被和谐了!。。。</h1>");
return;
}
res.getWriter().write("<h3>haha Servlet</h3>"); } /**
* 获取Servlet信息的方法。如:版本号,作者等
*/
public String getServletInfo() {
// TODO Auto-generated method stub
return null;
} /**
* 销毁方法 调用一次。
*/
public void destroy() { System.out.println("destroy() 要挂了...");
} }

  XML文件:

 <?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <servlet>
<servlet-name>one</servlet-name>
<servlet-class>Serlet.ServletTest</servlet-class>
<load-on-startup>5</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>one</servlet-name>
<url-pattern>/one</url-pattern>
</servlet-mapping> <display-name></display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>

Servlet的生命周期+实现方式的更多相关文章

  1. Servlet的生命周期及工作原理

    Servlet生命周期分为三个阶段: 1,初始化阶段  调用init()方法 2,响应客户请求阶段 调用service()方法 3,终止阶段 调用destroy()方法 Servlet初始化阶段: 在 ...

  2. JavaWeb学习之Servlet(二)----Servlet的生命周期、继承结构、修改Servlet模板

    [声明] 欢迎转载,但请保留文章原始出处→_→ 文章来源:http://www.cnblogs.com/smyhvae/p/4140466.html 一.http协议回顾: 在上一篇文章中:JavaW ...

  3. Servlet学习笔记(1)--第一个servlet&&三种状态对象(cookie,session,application)&&Servlet的生命周期

    servlet的404错误困扰了两天,各种方法都试过了,翻书逛论坛终于把问题解决了,写此博客来纪念自己的第一个servlet经历. 下面我会将自己的编写第一个servlet的详细过程提供给初学者,大神 ...

  4. servlet的生命周期与工作原理、使用!

    概念: Servlet是一个java程序运行在服务器上,处理客户端请求并做粗响应的程序!Servlet是和平台无关的服务器组件,它运行在Servlet容器中,Servlet容器 负责servlet和客 ...

  5. Servlet相关接口和Servlet的生命周期

    http://www.cnblogs.com/luotaoyeah/p/3860292.html Servlet相关接口和Servlet的生命周期 创建一个Servlet类最直接的方式是实现javax ...

  6. Servlet的生命周期?

    Servlet何时被创建: 1,默认情况下,当WEB客户第一次请求访问某个Servlet的时候,WEB容器将创建这个Servlet的实例. 2,当web.xml文件中如果<servlet> ...

  7. Servlet的生命周期与运行原理

    Servlet的生命周期:    1 加载classLoader    2 实例化 new    3 初始化 init(ServletConfig)    4 处理请求 service doGet d ...

  8. servlet的生命周期和servlet的继承关系

    一.servlet的生命周期 一个servlet类的对象   加载——>实例化——>初始化——>服务——>销毁 第一次访问某个servlet的时候 首先调用其 构造函数 pub ...

  9. http协议,servlet的生命周期

    1.http协议(http协议是无状态的) http协议是指计算机通信网络中两台计算机进行通信必须共同遵守的规定或规则,它允许将超文本标记语言(html)文档从web服务器传送到客户端的浏览器(目前我 ...

随机推荐

  1. AngularJS之代码风格36条建议【一】(九)

    前言 其实在新学一门知识时,我们应该注意下怎么书写代码更加规范,从开始就注意养成一个良好的习惯无论是对于bug的查找还是走人后别人熟悉代码都是非常好的,利人利己的事情何乐而不为呢,关于AngularJ ...

  2. 克隆您的Git代码库和添加源文件

    内容正在建设中 标签:Bitbucket

  3. PHP关于web页面交互内容

    学php学了有一段时间了总结总结给大家分享一下 PHP中的引用 第一段程序: <?php $first_name="firstName"; $first=&$firs ...

  4. 扩展KMP算法

    一 问题定义 给定母串S和子串T,定义n为母串S的长度,m为子串T的长度,suffix[i]为第i个字符开始的母串S的后缀子串,extend[i]为suffix[i]与字串T的最长公共前缀长度.求出所 ...

  5. 1Z0-053 争议题目解析704

    1Z0-053 争议题目解析704 考试科目:1Z0-053 题库版本:V13.02 题库中原题为: 704.View the Exhibit and examine the data manipul ...

  6. 9.Struts2在Action中获取request-session-application对象

    为避免与Servlet API耦合在一起,方便Action类做单元测试. Struts2对HttpServletRequest.HttpSession.ServletContext进行了封装,构造了三 ...

  7. IOS客户端UIwebview下web页面闪屏问题

    基于ios客户端uiwebview下的web页面,在其内容高度大于视窗高度时,如果点击超过视窗下文档的底部按钮,收缩内容高度,会发生闪屏问题. 外因是由文档的高度大于视窗的高度所致,本质原因未知. 解 ...

  8. CAST function should support INT synonym for SIGNED. i.e. CAST(y AS INT)

      Login / Register Developer Zone Bugs Home Report a bug Statistics Advanced search Saved searches T ...

  9. 【Python大系】Python快速教程

    感谢原作者:Vamei 出处:http://www.cnblogs.com/vamei 怎么能快速地掌握Python?这是和朋友闲聊时谈起的问题. Python包含的内容很多,加上各种标准库.拓展库, ...

  10. AbstractFactoryPattern(抽象工厂)

    /** * 抽象工厂模式 * 分为四部分 * 1.产品接口 * 2.产品实例 * 3.工厂接口(生产同一个产品的不同等级,这里是主要区别) * 4.工厂实例 * 工厂类最好用单例模式,但在这里主要是说 ...