servletmapping作用(<servlet-name>druidstatview</servlet-name> 什么作用)

本文目录
druidstatview 什么作用- 一个请求和多个servlet-mapping匹配,会去执行哪个servlet
- servlet映射路径是什么意思
- serlvet类在服务器上通过
元素配置后,为什么还需要 - servelt,创建的两个标签的作用是什么
druidstatview 什么作用
在web.xml文件中经常看到这样的配置《servlet-name》default《/servlet-name》,这个配置的作用是:对客户端请求的静态资源如图片、JS文件等的请求交由默认的servlet进行处理,如下所示:
《servlet-mapping》
《servlet-name》default《/servlet-name》
《url-pattern》*.jpg《/url-pattern》
《/servlet-mapping》
《servlet-mapping》
《servlet-name》default《/servlet-name》
《url-pattern》*.png《/url-pattern》
《/servlet-mapping》
《servlet-mapping》
《servlet-name》default《/servlet-name》
《url-pattern》*.gif《/url-pattern》
《/servlet-mapping》
《servlet-mapping》
《servlet-name》default《/servlet-name》
《url-pattern》*.ico《/url-pattern》
《/servlet-mapping》
《servlet-mapping》
《servlet-name》default《/servlet-name》
《url-pattern》*.gif《/url-pattern》
《/servlet-mapping》
《servlet-mapping》
《servlet-name》default《/servlet-name》
《url-pattern》*.js《/url-pattern》
《/servlet-mapping》
《servlet-mapping》
《servlet-name》default《/servlet-name》
《url-pattern》*.css《/url-pattern》
《/servlet-mapping》
如何你的DispatcherServlet拦截"*.do"这样的有后缀的URL,就不存在访问不到静态资源的问题。
如果你的DispatcherServlet拦截"/",为了实现REST风格,拦截了所有的请求,那么同时对*.js,*.jpg等静态文件的访问也就被拦截了。
一个请求和多个servlet-mapping匹配,会去执行哪个servlet
针对同一个匹配的url ,只会保留web.xml文件中定义的最后一个可匹配的
servlet-mapping处理
---tomcat的处理中的相关源码:StandardContext.java
/**
* Add a new servlet mapping, replacing any existing mapping for
* the specified pattern.
*
* @param pattern URL pattern to be mapped
* @param name Name of the corresponding servlet to execute
* @param jspWildCard true if name identifies the JspServlet
* and pattern contains a wildcard; false otherwise
*
* @exception IllegalArgumentException if the specified servlet name
* is not known to this Context
*/
public void addServletMapping(String pattern, String name,
boolean jspWildCard) {
// Validate the proposed mapping
if (findChild(name) == null)
throw new IllegalArgumentException
(sm.getString("standardContext.servletMap.name", name));
pattern = adjustURLPattern(RequestUtil.URLDecode(pattern));
if (!validateURLPattern(pattern))
throw new IllegalArgumentException
(sm.getString("standardContext.servletMap.pattern", pattern));
// Add this mapping to our registered set
synchronized (servletMappings) {
String name2 = (String) servletMappings.get(pattern);
if (name2 != null) {
// Don’t allow more than one servlet on the same pattern -----看这里的处理
Wrapper wrapper = (Wrapper) findChild(name2);
wrapper.removeMapping(pattern);
mapper.removeWrapper(pattern);
}
servletMappings.put(pattern, name);
}
Wrapper wrapper = (Wrapper) findChild(name);
wrapper.addMapping(pattern);
// Update context mapper
mapper.addWrapper(pattern, wrapper, jspWildCard);
fireContainerEvent("addServletMapping", pattern);
}
servlet映射路径是什么意思
我讲一下原理吧、下面是一个简单的servlet、
《servlet》 《display-name》 this is a servlet test《/display-name》--描述信息、可有可无《servlet-name》 HelloServlet 《/servlet-name》--servlet的内部名称《servlet-class》包名****.类名***《/servlet-class》--映射的类《/servlet》
《servlet-mapping》 《servlet-name》 HelloServlet 《/servlet-name》--通过servlet的内部名称把URL与CLASS绑定《url-pattern》/HelloServlet《/url-pattern》 --用户访问serlvet的URL《/servlet-mapping》
可能上面看的不太懂、我简单的说下、首先、从*.jsp页面提交、这个时候form里的为:《form action="HelloServlet"》、然后通过HelloServlet这个访问路径得到servlet的名称、也就是我们定义的HelloServlet、当然action里面的名称可以随便改、但注意配置《url-pattern》这个节点时也要保证一致、得到servlet内部名称后、就会根据这个名称找到相应的《servlet》节点、然后就找到了我们映射的类了、就这么简单了、最终执行映射类的内容、我是这样理解的、谢谢、
今天情人节、祝你情人节快乐、也祝全天人的情人终成眷属、
serlvet类在服务器上通过元素配置后,为什么还需要
里面有一个节点《url-pattern》,是配置访问的url的,而且可以配置多个访问路径指向这个servlet,比如:
《servlet-mapping》
《servlet-name》IndexServlet《/servlet-name》
《url-pattern》/toinsert《/url-pattern》
《url-pattern》/toinsert2《/url-pattern》
《/servlet-mapping》
servelt,创建的两个标签的作用是什么
《servlet》 下的 servlet-class 是你当前的servlet的路径 包含包名和类名 用 “.”分割
servlet-name 这个你可以自定义 但是 必须和 《servlet-mapping》 下面的 servlet-name相同 这是一种映射关系 因为要通过 servlet-name 来找到对应的类
url-pattern是你访问的url
访问的顺序是这样的 通过url 找到 《servlet-mapping》下面的 servlet-name,然后根据servlet-name 来找《servlet》里面名称一样的 最终找到你的servlet类

更多文章:
在from子句中可以出现(如何在from 子句中嵌套查询下面的语句在access中出错!)
2026年10月11日 05:20
countif函数统计个数怎么用(countif函数怎么用 详解Excel中countif函数的使用方法)
2026年10月11日 03:30
正则匹配数字之前的字符(正则表达式如何匹配前面是数字、中间是“/”、后面也是数字,就像2/3专业的模式)
2026年10月11日 03:00
orlnsertbootmediinselected(我电脑开机显示这个是什么意思or insert boot media in select)
2026年10月10日 23:00
display的用法(display是什么意思 详解display的含义和用法)
2026年10月10日 22:00
html全部居中代码(怎么让网页居中显示,html如何让网页居中)
2026年10月10日 21:10




