servlet-mapping为servlet类提供一个url,在地址栏中就可以访问你的servlet,例:
<servlet>
<servlet-name>HelloWorld</servlet-name>
<servlet-class>com.hx.webfrom.HelloWorld<servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorld</servlet-name>
<servlet-class>/hello<servlet-class>
</servlet-mapping>
在地址栏中输入http://localhost:8080/hello就可以访问了
tomcat按/index.jsp在web.xml里找mapping,找到name:
<servlet-mapping>
<servlet-name>org.apache.jsp.index_jsp</servlet-name>
<url-pattern>/index.jsp</url-pattern>
</servlet-mapping>
再按name找类:
<servlet>
<servlet-name>org.apache.jsp.index_jsp</servlet-name>
<servlet-class>org.apache.jsp.index_jsp</servlet-class>
</servlet>
找org.apache.jsp.index_jsp后生成对象,将已经生成的request,response等对象作参数初始化/init()、和调用方法(doGet(),doPost())。
(以上没有考虑cache,pool等许多细节,但不影响理解)
在配置web.xml的servlet-mapping
结论:
• '/XXX/*'
• '*.html'
• '/'
• 其他都是精确映射. 例: '/XXX/Y*.html' 只能映射/XXX/Y*.html 的URL请求.
例: '/XXX' 只可以映射/XXX的URL请求.
10.2 Specification of Mappings
In the web application deployment descriptor, the following syntax is used to define mappings:
• A string beginning with a '/' character and ending with a '/*' postfix is used as a path
mapping.
• A string beginning with a '*.' prefix is used as an extension mapping.
• All other strings are used as exact matches only
• A string containing only the '/' character indicates that servlet specified by the mapping becomes the "default" servlet of the application.
翻译如下:
10.2 映射规则说明
在web应用的部署描述中(web.xml)中, 以下语法结构用于定义映射:
• 以'/'开头 并以'/*'结尾的字符串用于做路径的映射.
• 以'*.'开头 用于做扩展的映射.
• 其他的所有字符串都是只做精确映射.
• 一个只是'/'的字符串 将当前这个servlet明确为应用的默认servlet.