zoukankan      html  css  js  c++  java
  • Servlet从浅入深

    Servlet是什么

             servlet 是运行在 Web 服务器中的小型 Java 程序(即:服务器端的小应用程序)。

             servlet 通常通过 HTTP(超文本传输协议)接收和响应来自 Web 客户端的请求。

    一.执行过程

              

    二.生命周期

             实例化------》初始化--------》服务-------》消亡

          出生           实例化----》初始化                 (第一次访问Servlet就出生了:默认情况下)

          活着           服务           应用活着Servlet就活着 

          死亡           消亡           应用卸载了   Servlet就消亡了

    三.创建Servlet的三种方式

      a.实现javax.servlet.Servlet接口(参见:编写一个servlet程序:)

      b.继承javax.servet.GenericServlet类(适配器模式)

      c.继承javax.servlet.http.HttpServlet类(模板方法设计模式)

    (开发中常用方式)

    Servlet --> GenericServlet --> HttpServlet  (继承HttpServlet)

    曾祖父           爷爷                        爸爸             孙子

    小技巧:使生成的servlet更清新一些

    找到:MyEclipseCommonplugins目录

    把com.genuitec.eclipse.wizards_9.0.0.me201108091322.jar复制到上面目录

    servlet的映射细节1.

    <servlet>
        <servlet-name>lifeCycleDemo()</servlet-name>
        <servlet-class>lifeCycleDemo.ServletCreate</servlet-class>
    </servlet>

    一个完整的映射(可以配置多个映射路径)

    <servlet-mapping>
        <servlet-name>lifeCycleDemo</servlet-name>
        <url-pattern>/Demo1</url-pattern>
    </servlet-mapping> 

    映射细节2:

    通配符* 代表任意字符串

      url-pattern: *.do  以*.字符串的请求都可以访问 注:不要加/
    
      url-pattern: /*  任意字符串都可以访问
    
      url-pattern: /action/* 以/action开头的请求都可以访问

    匹配规则:

    优先级:从高到低

    绝对匹配-->  /开头匹配 --> 扩展名方式匹配

    如果url-pattern的值是/,表示执行默认映射。所有资源都是servlet

    二、Servlet的线程安全

      servlet的创建时时机:第一次调用会创建该对象。

    但是里面的方法会在栈中执行完后进行销毁。但有些资源(成员变量)会存在共享

    单实例:每次访问多线程

    解决线程安全问题的最佳办法,不要写全局变量,而写局部变量。

    三.  servlet的消亡方法 

    手动调用servlet的消亡方法,servlet并不会消亡,只会在tomcat关闭的情况下才会进行销毁。

    消亡方法可以进行资源的额释放等操作  

  • 相关阅读:
    python爬虫-selenium八大定位笔记
    git pull : error: cannot lock ref 'refs/remotes/origin/*' (unable to update local ref) 解决方案
    Lua table.sort()原理和使用的坑
    Unity---有关游戏物体角度的两种赋值方法这件事
    C# #if、#endif和预处理指令
    Unity 4大坐标系 和 屏幕坐标与UI坐标的转换问题
    第2次参加游戏开发比赛
    Unity Text添加空格导致换行问题的两种解决方法(还有lua的解决方法)
    MySQL是如何处理千万级数据
    PHP使用守护进程处理队列
  • 原文地址:https://www.cnblogs.com/fjkgrbk/p/servlet.html
Copyright © 2011-2022 走看看