卧疾丰暇豫,翰墨时间作。这篇文章主要讲述web.xml servletservlet-mapping配置相关的知识,希望能为你提供帮助。
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
< servlet> < servlet-name> dispatcherServlet< /servlet-name> < servlet-class> org.springframework.web.servlet.DispatcherServlet < /servlet-class> < init-param> < param-name> contextConfigLocation< /param-name> < param-value> classpath*:/spring-mvc.xml< /param-value> < /init-param> < load-on-startup> 1< /load-on-startup> < /servlet> < servlet-mapping> < servlet-name> dispatcherServlet< /servlet-name> < url-pattern> /< /url-pattern> < /servlet-mapping>
例子:
< servlet> < servlet-name> business< /servlet-name> < servlet-class> org.springframework.web.servlet.DispatcherServlet< /servlet-class> < init-param> < param-name> publishContext< /param-name> < param-value> false< /param-value> < /init-param> < load-on-startup> 1< /load-on-startup> < /servlet> < !-- < /span> < span style="font-family:SimSun; "> 用户登出< /span> < span style="font-family:Times New Roman; "> --> < servlet> < servlet-name> LogOutServlet< /servlet-name> < servlet-class> com.yonyou.mcloud.cas.web.servlet.LogOutServlet< /servlet-class> < init-param> < param-name> serverLogoutUrl< /param-name> < param-value> https://dev.yonyou.com:443/sso-server/logout< /param-value> < /init-param> < init-param> < param-name> serverName< /param-name> < param-value> http://10.1.215.40:80/business/< /param-value> < /init-param> < /servlet> < !--****************************servlet< /span> < span style="font-family:SimSun; "> 映射关系配置< /span> < span style="font-family:Times New Roman; "> *************************--> < servlet-mapping> < servlet-name> LogOutServlet< /servlet-name> < url-pattern> /logout< /url-pattern> < /servlet-mapping> < servlet-mapping> < servlet-name> business< /servlet-name> < url-pattern> /< /url-pattern> < /servlet-mapping>
【web.xml servletservlet-mapping配置】
推荐阅读
- Android开发-在Android应用里实现自动发送邮件的功能
- 解决krpano全景视频在QQ浏览器安卓不能正常播放的问题
- 关于 appiumget_attribute 方法的坑
- Android Studio - No cached version available for offline mode
- android布局属性tools:context的作用
- [Compose] 17. List comprehensions with Applicative Functors
- android关于fragment的构造函数用法建议
- Android组件化开发的简单应用
- 微信小程序引入外部组件 iView Weapp