2.7.2 Servlet的配置
2.7.2 Servlet的配置
编辑好的Servlet源文件并不能响应用户请求,还必须将其编译成class文件。将编译后的Firstservlet.class文件放在WEB-INF/classes路径下,如果Servlet有包,则还应该将class文件放在对应的包路径下(例如,本例的FirstServlet.class就放在WEB-INF/classes/lee路径下)。
如果需要直接采用javac命令来编译Servlet类,则必须将Servlet API接口和类添加到系统的CLASSPATH环境变量里。也就是将Tomcat 8.5安装目录下lib目录中servlet-api.jar和jsp-api.ar添加到CLASSPATH环境变量中.
为了让Servlet能响应用户请求,还必须将Servlet配置在web应用中。配置Servlet时,需要修改web.xml文件。
配置Servlet的两种方式
从Servlet3开始,配置Servlet有两种方式。
- 在
Servlet类中使用@WebServlet注解进行配置。 - 通过在
web.xml文件中进行配置。
@WebServlet注解属性
上面开发Servlet类时使用了@WebServlet注解修饰该Servlet类,使用@WebServlet时可指定如表2.2所示的常用属性。
| 属性 | 说明 |
|---|---|
asyncSupported |
指定该Servlet是否支持异步操作模式。关于Servlet的异步调用请参考2.2节 |
displayName |
指定该Servlet的显示名 |
initParams |
用于为该Servlet配置参数 |
loadOnStartup |
用于将该Servlet配置成load-on-startup的Servlet |
name |
指定该Servlet的名称 |
urlPatterns/value |
这两个属性的作用完全相同。都指定该Servlet处理的URL |
如果打算使用注解来配置Servlet,有两点需要指出。
- 不要在
web.xml文件的根元素(<web-app>)中指定metadata-complete="true"“。 - 不要在
web.xml文件中配置该Servlet
使用web.xml配置Servlet步骤
如果打算使用web.xml文件来配置该Servlet,则需要配置如下两个部分。
- 配置
Servlet的名字:对应web.xml文件中的<servlet>元素。 - 配置
Servlet的URL:对应web.xml文件中的<Servlet-mapping>元素。这一步是可选的。但如果没有为Servlet配置URL,则该Servlet不能响应用户请求。
接下来的Servlet、Filter、Listener等相关配置,都会同时介绍使用web.xml配置、使用注解配置两种方式。但实际项目中只要采用任意一种配置方式即可,不需要同时使用两种配置方式。
web.xml中配置Servlet示例
因此,配置一个能响应客户请求的Servlet,至少需要配置两个元素。关于上面的FirstServlet的配置如下:
1 | <!-- 配置Servlet的名字 --> |
如果在web.xm1文件中增加了如上所示的配置片段,则该Servlet的URL为/aa。
如果没有在web.xml文件中增加上面的配置片段,那么该Servlet类上的@WebServlet注解就会起作用,该Servlet的URL为/firstServlet
form.jsp
1 | <%@ page contentType="text/html; charset=UTF-8" language="java" errorPage="" %> |
在表单域中输入相应的数据,然后单击“提交”按钮,效果如图2.32所
在这种情况下,Servlet与JSP的作用效果完全相同。