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
的作用效果完全相同。