JavaWEB-(十六)Servlet的配置方式

本文最后更新于:December 3, 2021 pm

Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。从原理上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。

目录

1.web.xml配置

在Servlet2.5之前使用。是一种通用方式。
基本内容在前面已经有过。这里不再叙述,只是说一下 <url-pattern> 里面配置URL的方式。

1.1 url-pattern匹配配置方式

  1. 精准匹配:/具体名称

只要URL路径是具体的名称的时候才会触发Servlet。

如:

1
2
3
4
5
6
7
8
<servlet>
<servlet-name>my</servlet-name>
<servlet-class>com.tothefor.MyWeb.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>my</servlet-name>
<url-pattern>/hs</url-pattern>
</servlet-mapping>
  1. 后缀匹配:*.xxx

只要是以xxx结尾的就可以匹配触发Servlet。

1
2
3
4
5
6
7
8
<servlet>
<servlet-name>my</servlet-name>
<servlet-class>com.tothefor.MyWeb.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>my</servlet-name>
<url-pattern>*.abcd</url-pattern>
</servlet-mapping>
  1. 通配符匹配:/* (不会影响精准匹配)

匹配所有请求,包含服务器的所有资源。

1
2
3
4
5
6
7
8
<servlet>
<servlet-name>my</servlet-name>
<servlet-class>com.tothefor.MyWeb.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>my</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
  1. 通配符匹配:/

匹配所有请求,包含服务器的所有资源,不包括 .jsp。

1.2 load-on-startup

配置在Servlet标签里面的。这个可以用来控制加载的时机。

    1. 元素标记容器是否应该在web应用程序启动的时候就加载Servlet(不需要访问触发)。
    1. 它的值必须为一个整数,表示Servlet被加载的先后顺序。
    1. 如果该元素的值为负数或者没有设置,则容器会当Servlet被请求时(被访问触发)再加载。
    1. 如果值为正整数或者0时,表示容器在应用启动时就加载并初始化这个Servlet,值越小,Servlet的优先级越高,就越先被加载。当值相同时,容器会自己选择顺序来加载。

示例:

1
2
3
4
5
6
7
8
9
<servlet>
<servlet-name>my</servlet-name>
<servlet-class>com.tothefor.MyWeb.HelloServlet</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>my</servlet-name>
<url-pattern>/hs</url-pattern>
</servlet-mapping>

2.注解配置(推荐)

Servlet3.0 后支持。使用注解配置就可以不用再配置web.xml了。如果配置了web.xml也不会有冲突。

使用方法:只需要在类名上面添加 @WebServlet(“/hs”) 即可。

2.1 @WebServlet注解常用属性

  • name:Servlet名字(可选)。
  • value:配置URL路径,可以配置多个。
  • urlPatterns:配置URL路径,和value作用一样,但不能同时使用。
  • loadOnStartup:配置Servlet的创建的时机,如果是0或者是正整数,则启动程序时就创建;如果是负数,则访问时创建。当数为正整数时,数越小优先级越高。

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package com.tothefor.MyWeb;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet(name = "helloServlet" , value = {"/hs","hss"} , loadOnStartup = 0) //urlPatterns = {"/hs","/hss"}
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("这是doGet");
}

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("这是doPost");
}
}