在本 Java 教程中,我将帮助您使用@WebServlet注释从头开始开发 Java servlet,以及如何在 Tomcat 服务器上部署、运行和测试 servlet。
本教程与Java servlet 初学者快速入门指南 (XML)类似,不同之处在于 servlet 配置和映射是通过注解而不是在web.xml文件中完成的。没有使用 XML 的东西。
表中的内容:
1. servlet注解快速介绍
Servlet API 3.0 引入了一个名为javax.servlet.annotation的新包,它提供了可用于注释 servlet 类的注释类型。注释可以替换 Web 部署描述符文件 ( web.xml ) 中的等效 XML 配置,例如 servlet 声明和 servlet 映射。Servlet 容器将在部署时处理带注释的类。
Servlet 3.0 中引入的注解类型有:
- @HandlesTypes
- @ServletSecurity、@HttpMethodConstraint 和 @HttpConstraint
- @MultipartConfig
- @WebFilter
- @WebInitParam
- @WebListener
- @WebServlet
注解@WebServlet用于声明一个servlet 类(该类仍然必须从HttpServlet类扩展)并为其配置映射。以下是使用@WebServlet注解的一些示例:
- 声明 servlet 的最简单方法:
1234
@WebServlet
(
"/Submit"
)
public
class
QuickServlet
extends
HttpServlet {
// servlet code here...
}
这里 servlet QuickServlet 映射到 URL 模式:/Submit。 - 声明一个带有附加信息的 servlet:
12345678
@WebServlet
(
name =
"AnnotatedServlet"
,
description =
"A sample annotated servlet"
,
urlPatterns = {
"/QuickServlet"
}
)
public
class
QuickServlet
extends
HttpServlet {
// servlet code here...
}
- 声明一个具有多个 URL 模式的 servlet:
123456
@WebServlet
(
urlPatterns = {
"/foo"
,
"/bar"
,
"/cool"
}
)
public
class
QuickServlet
extends
HttpServlet {
// servlet code here...
}
此处 servlet 使用三种不同的 URL 模式进行映射:/foo、/bar和/cool。
现在让我们构建一个简单的 Java Web 应用程序,它有一个使用@WebServlet注释配置的 servlet。假设您的计算机上安装了JDK 1.7和Tomcat 7.0 。当然,您可以使用较新的版本。
2.创建目录结构
由于我们不使用任何 IDE,因此创建以下目录结构:
并假设当前工作目录是QuickServlet目录。
3.编写带注释的servlet类
在src\net\code\java\servlet目录下创建名为QuickServlet.java的 servlet 类。粘贴以下代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
package net.codejava.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet (
name = "AnnotatedServlet" ,
description = "A sample annotated servlet" ,
urlPatterns = { "/QuickServlet" }
)
public class QuickServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException {
PrintWriter writer = response.getWriter();
writer.println( "<html>Hello, I am a Java servlet!</html>" );
writer.flush();
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException {
String paramWidth = request.getParameter( "width" );
int width = Integer.parseInt(paramWidth);
String paramHeight = request.getParameter( "height" );
int height = Integer.parseInt(paramHeight);
long area = width * height;
PrintWriter writer = response.getWriter();
writer.println( "<html>Area of the rectangle is: " + area + "</html>" );
writer.flush();
}
}
|
4.编写JSP页面
在WebContent目录下,使用以下代码创建一个名为index.jsp的 JSP 文件:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
< html >
< head >
< title >Quick Servlet Demo</ title >
</ head >
< body >
< a href = "/QuickServlet" >Click here to send GET request</ a >
< br />< br />
< form action = "QuickServlet" method = "post" >
Width: < input type = "text" size = "5" name = "width" />
Height < input type = "text" size = "5" name = "height" />
< input type = "submit" value = "Calculate" />
</ form >
</ body >
</ html >
|
5. 编译servlet
键入以下命令来编译 servlet 类:
javac -cp TOMCAT_HOME \lib\servlet-api.jar" -d CLASS_DIR SRC_DIR \QuickServlet.java
代替:
- TOMCAT_HOME = C:\Program Files\Apache Software Foundation\Tomcat 7.0。
- CLASS_DIR =WebContent \ WEB-INF \ 类
- SRC_DIR =src\net\codejava\servlet
6. 创建WAR文件
键入以下命令,将WebContent目录打包为 WAR 文件(注意末尾有一个点):
jar cfv deploy\QuickServletApp.war -C WebContent 。
请注意,没有web.xml文件,因为我们使用了@WebServlet注解来声明和映射 servlet。
7. 部署和测试 Java servlet
请参阅教程:Java servlet 初学者快速入门指南 (XML)以部署和测试应用程序。