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"})

但是没人这么写 😓