Servlet 常称为服务器端小程序,即运行在服务器端的程序,用于处理及响应客户的请求。

Servlet类 是个特殊的java类,继承于HttpServlet。

---------------------------------------------------------------

方法

客户端通常只有GET和POST两种请求方式,Servlet为了响应则两种请求,必须重写doGet()和doPost()方法。大部分时候,Servlet对于所有的请求响应都是完全一样的,此时只需要重写service()方法即可响应客户端的所有请求。

另外,HttpServlet还有两个方法:

(1). init(ServletConfig config):创建Servlet实例时,调用该方法的初始化Servlet资源。

(2). destroy():销毁Servlet实例时,自动调用该方法的回收资源。

通常无需重写init()和destroy()两个方法,除非需要在初始化Servlet时,完成某些资源初始化的方法,才考虑重写init()方法,如果重写了init()方法,应在重写该方法的第一行调用super.init(config),该方法将调用HttpServlet的init()方法。

如果需要在销毁Servlet之前,先完成某些资源的回收,比如关闭数据库连接,才需要重写destory方法()。

---------------------------------------------------------------

Servlet创建时机

(1). 客户端第一次请求某个Servlet时,系统创建该Servlet的实例,大部分Servlet都是这种Servlet。

(2). Web应用启动时立即创建Servlet实例,即load-on-start Servlet。

---------------------------------------------------------------

Servlet的生命周期

(1). 创建Servlet实例。

(2). Web容器调用Servlet的init()方法,对Servlet进行初始化。

(3). Servlet初始化后,将一直存在于容器中,用于响应客户端请求,如果客户端发送GET请求,容器调用Servlet的doGet()方法处理并响应请求;如果客户端发送POST请求,容器调用Servlet的doPost()方法处理并响应请求。或者统一使用service()方法处理来响应用户请求。

(4). Web容器决定销毁Servlet时,先调用Servlet的destory()方法,通常在关闭Web应用时销毁Servlet实例。

---------------------------------------------------------------

Servlet配置

配置Servlet有两种方式:

(1). 在Servlet类中使用@WebServlet Annotation进行配置。

(2). 在web.xml文件中进行配置。

我们用web.xml文件来配置Servlet为例

<servlet>

声明一个Servlet

<icon>、<display-name>和<description>元素的用法和<filter>的用法相同。

<init-param>元素与<context-param>元素具有相同的元素描述符,可以使用<init-param>子元素将初始化参数名和参数值传递给Servlet,

<description>:为Servlet指定一个文本描述。

<display-name>:为Servlet提供一个简短的名字被某些工具显示。

<icon>:为Servlet指定一个图标,在图形管理工具中表示该Servlet。

<servlet>必须含有<servlet-name>和<servlet-class>,或者<servlet-name>和<jsp-file>。 描述如下:

1). <servlet-name>用来定义servlet的名称,该名称在整个应用中必须是惟一的。

2). <servlet-class>用来指定servlet的完全限定的名称。

3). <jsp-file>用来指定应用中JSP文件的完整路径。这个完整路径必须由/开始。

备注:JSP文件可以被编译成Servlet

<load-on-startup>

如果load-on-startup元素存在,而且也指定了jsp-file元素,则JSP文件会被重新编译成Servlet,同时产生的Servlet也被载入内存。

<load-on-startup>的内容可以为空,或者是一个整数。这个值表示由此servlet被Web容器载入内存的顺序,小的会被先加载。

例如:有两个Servlet元素都含有<load-on-startup>子元素,则<load-on-startup>子元素值较小的Servlet将先被加载。

如果<load-on-startup>子元素值为空或负值,则由Web容器决定什么时候加载Servlet。如果两个Servlet的<load-on-startup>子元素值相同,则由Web容器决定先加载哪一个Servlet。<load-on-startup>1</load-on-startup>表示启动容器时,初始化Servlet。

---------------------------------------------------------------

Servlet-mapping配置

<servlet-mapping>

1). <servlet-name>:Servlet的名字,与<servlet>元素中声明的名字一致。

2). <url-pattern>:指定相对于Servlet的URL的路径。该路径相对于web应用程序上下文的根路径。<servlet-mapping>将URL模式映射到某个Servlet,即该Servlet处理的URL。

---------------------------------------------------------------

加载Servlet的过程 

容器的Context对象对请求路径(URL)做出处理,去掉请求URL的上下文路径后,按路径映射规则和Servlet映射路径(<url- pattern>)做匹配,如果匹配成功,则调用这个Servlet处理请求。 
 

---------------------------------------------------------------

ServletConfig

访问Servlet配置参数通过ServletConfig对象来完成,ServletConfig提供如下方法:

java.lang.String.getInitParameter(java.lang.String name):用于获取初始化参数

ServletConfig获取配置参数的方法和ServletContext获取配置参数的方法完全一样,只是ServletConfig是取得当前Servlet的配置参数,而ServletContext是获取整个Web应用的配置参数。
 

---------------------------------------------------------------

引入springmvc.xml

  1. <servlet>
  2. <servlet-name>dispatcherServlet</servlet-name>
  3. <servlet-class>
  4. org.springframework.web.servlet.DispatcherServlet
  5. </servlet-class>
  6. <init-param>
  7. <param-name>contextConfigLocation</param-name>
  8. <param-value>classpath*:/spring-mvc.xml</param-value>
  9. </init-param>
  10. <load-on-startup>1</load-on-startup>
  11. </servlet>
  12.  
  13. <servlet-mapping>
  14. <servlet-name>dispatcherServlet</servlet-name>
  15. <url-pattern>/</url-pattern>
  16. </servlet-mapping>
 
例子:
  1. <servlet>
  2. <servlet-name>business</servlet-name>
  3. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  4. <init-param>
  5. <param-name>publishContext</param-name>
  6. <param-value>false</param-value>
  7. </init-param>
  8. <load-on-startup>1</load-on-startup>
  9. </servlet>
  10. <!-- </span><span style="font-family:SimSun;">用户登出</span><span style="font-family:Times New Roman;"> -->
  11. <servlet>
  12. <servlet-name>LogOutServlet</servlet-name>
  13. <servlet-class>com.yonyou.mcloud.cas.web.servlet.LogOutServlet</servlet-class>
  14. <init-param>
  15. <param-name>serverLogoutUrl</param-name>
  16. <param-value>https://dev.yonyou.com:443/sso-server/logout</param-value>
  17. </init-param>
  18. <init-param>
  19. <param-name>serverName</param-name>
  20. <param-value>http://10.1.215.40:80/business/</param-value>
  21. </init-param>
  22. </servlet>
  23. <!--****************************servlet</span><span style="font-family:SimSun;">映射关系配置</span><span style="font-family:Times New Roman;">*************************-->
  24. <servlet-mapping>
  25. <servlet-name>LogOutServlet</servlet-name>
  26. <url-pattern>/logout</url-pattern>
  27. </servlet-mapping>
  28. <servlet-mapping>
  29. <servlet-name>business</servlet-name>
  30. <url-pattern>/</url-pattern>
  31. </servlet-mapping>

web.xml servlet、servlet-mapping配置的更多相关文章

  1. JavaWeb项目中web.xml有关servlet的基本配置

    JavaWeb项目中web.xml有关servlet的基本配置: 我们注意到,tomcat下的conf中也有一个web.xml文件,没错的,所有的JavaWeb项目中web.xml都继承自服务器下的w ...

  2. Tomcat中的Web.xml和servlet.xml的学习

    Web.xml文件使用总结 作用: 存储项目相关的配置信息,保护servlet.解耦一些数据对程序的依赖 使用位置: 每个web项目中 Tomcat服务器中(在服务器目录conf目录中) 区别: We ...

  3. web.xml中servlet-mapping的配置

    <servlet-mapping>元素在Servlet和URL样式之间定义一个映射.它包含了两个子元素<servlet- name>和<url-pattern>,& ...

  4. WebApplicationInitializer究 Spring 3.1之无web.xml式 基于代码配置的servlet3.0应用

    本文转自http://hitmit1314.iteye.com/blog/1315816 大家应该都已经知道Spring 3.1对无web.xml式基于代码配置的servlet3.0应用.通过spri ...

  5. Servlet容器Tomcat中web.xml中url-pattern的配置详解[附带源码分析]

    目录 前言 现象 源码分析 实战例子 总结 参考资料 前言 今天研究了一下tomcat上web.xml配置文件中url-pattern的问题. 这个问题其实毕业前就困扰着我,当时忙于找工作. 找到工作 ...

  6. web.xml中servlet的配置

    <servlet>元素是配置Servlet所用的元素. <servlet-mapping>元素在Servlet和URL样式之间定义一个映射,即servlet类提供一个url,在 ...

  7. Servlet(五岁以下儿童)web.xml一些常用的配置

    (1)lode-on-startup,这Servlet该项目启动时它将被称为(从主要的电话init办法,为了安全起见,一般不应为Servlet建立URL制图).一些数据通常被用作前处理,或使用多线程建 ...

  8. web.xml中servlet mapping标签

    写了好多小项目后也没弄明白<url-pattern>的真正意义,写跳转的时候也是跳的三心二意的,今天查了一下web.xml的详细配置,看了看servlet-mapping的讲解,豁然开朗, ...

  9. web.xml之servlet与filter配置

    servlet配置 一个完整的servlet配置分为两块,< servlet >块和< servlet-mapping >块 < servlet > <ser ...

  10. java web.xml listener servlet 和filter加载顺序

    在该项目中总会遇到一些关于加载的优先问题.最近遇到了同样的类别似的,所以,如果你发现信息汇总下,以下是转载其他一些人,毕竟,人们写的不错.它不重复创建的轮.只是略作修改自己的观点. 首先能够肯定的是, ...

随机推荐

  1. .NET 4.0 中的契约式编程

    契约式编程不是一门崭新的编程方法论.C/C++ 时代早已有之.Microsoft 在 .NET 4.0 中正式引入契约式编程库.博主以为契约式编程是一种相当不错的编程思想,每一个开发人员都应该掌握.它 ...

  2. 『SharePoint 2010』Sharepoint 2010 Form 身份认证的实现(基于AD)

    一.进管理中心,创建一个应用程序,配置如下: 二.填端口号,和选择form身份认证,以及填写成员和角色,其他都默认就可以了 三.使用SharePoint 2010 Management Shell在里 ...

  3. cocos2d-x常用工具

    这些工具平常也用到,不过没有像这样整理出来,这是我在网上看到的.就记录一下. 位图字体工具Bitmap Font Tools BMFont (Windows)FonteditorGlyph Desig ...

  4. 关于微信小程序的场景值

    微信小程序 “场景值”     对运营同学和产品比较有用一般开发者需在这里埋点,获取场景址,看一下小程序,用户一般从哪个路口进的有利于提升产品体验

  5. swift中类与结构体

    写了12个Person来复习,不过完成同样的代码需要敲键盘的次数相比OC确实少了很多,这很多应该归功于Swift中不写分号,以及少了OC中的中括号. 一.类与结构体 两者在Swift中差不了多少了 类 ...

  6. ansible-puppet-saltstack---ITAMS

    ansible http://www.cnblogs.com/ee900222/p/ansible.html http://ju.outofmemory.cn/entry/67581 http://w ...

  7. Storm-源码分析- Disruptor在storm中的使用

    Disruptor 2.0, (http://ifeve.com/disruptor-2-change/) Disruptor为了更便于使用, 在2.0做了比较大的调整, 比较突出的是更换了几乎所有的 ...

  8. VMware 虚拟机 Ubuntu 不能全屏问题

    在刚安装完ubuntu后,屏幕不能全屏显示,此时: 1.安装VMware Tools 步骤: 1.1     进入ubuntu系统后,点击虚拟机上的[虚拟机]->[安装 vmware tools ...

  9. 登录plsql 报错 the account is locked --用户被锁

    登录数据库服务器,进入oracle用户下: [root@uumsnormal-oracle admin]# su - oracle [oracle@uumsnormal-oracle ~]$ sqlp ...

  10. UVA10534:Wavio Sequence(最长递增和递减序列 n*logn)(LIS)好题

    题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=68553#problem/B 题目要求: Wavio是一个整数序列,具有以下特性 ...