Servlet-访问
Servlet的访问
XML配置文件
<servlet>
<servlet-name>servlet1</servlet-name>
<servlet-class>com.xiaobai.servlet.Servlet1</servlet-class></servlet>
<servlet-mapping>
<servlet-name>servlet1</servlet-name>
<url-pattern>/s1</url-pattern>
<url-pattern>/s2</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>servlet1</servlet-name>
<url-pattern>/a</url-pattern>
<url-pattern>/b</url-pattern>
</servlet-mapping>
一个servlet-name(别名)可以对应多个url-pattern(上下文路径,访问路经)
这代表着多个访问路径访问相同的servlet页面
同时,一个servlet可以对应多个servlet-mapping(但是这么写没必要)
url-pattern
- 精确匹配
- /s1
- 模糊匹配
- /:匹配全部(不包括.jsp文件)
- /*:匹配全部
- /a/*:匹前缀,后缀模糊
- *.action:匹配后缀,前缀是模糊的
*作为通配符,他在哪里,哪里就是模糊的
Servlet注解方式的配置
直接在Servlet中配置**@WebServlet("/s1")**
同时缺省web.xml配置方式
即可配置成功
注解的源码
String name() default "";
String[] value() default {};
String[] urlPatterns() default {};
其中,name的值等同于web.xml中servlet-name标签内容,也就是别名
而value和urlPatterns互为彼此的 别名,这样做的好处是,当给value赋值时,是不需要在注解里写value=""这样的内容,可直接写"/s1"这样引号加上下文路经(访问路径)的方式来给注解赋值
所以,以下的注解时等价的
@WebServlet("/s1")
@WebServlet(value="/s1")
@WebServlet(urlPatterns="/s1")
他们的内容相当于web.xml中url-pattern标签内容,也就是路经
因为上下文路经可以有多个的缘故,注解也可以写成:
@WebServlet(urlPatterns = {"/s1", "/s2", "/s3"})
但是没人这么写 😓