在本 Java 教程中,我将帮助您使用@WebServlet注释从头开始开发 Java servlet,以及如何在 Tomcat 服务器上部署、运行和测试 servlet。
本教程与Java servlet 初学者快速入门指南 (XML)类似,不同之处在于 servlet 配置和映射是通过注解而不是在web.xml文件中完成的。没有使用 XML 的东西。
表中的内容:
- servlet注解快速介绍
- 创建目录结构
- 编写带注释的 servlet 类
- 编写 JSP 页面
- 编译servlet
- 创建 WAR 文件
- 部署和测试 Web 应用程序
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 的最简单方法:
1 2 3 4 | @WebServlet ( "/Submit" ) public class QuickServlet extends HttpServlet { // servlet code here... } |
这里 servlet QuickServlet 映射到 URL 模式:/Submit。 - 声明一个带有附加信息的 servlet:
1 2 3 4 5 6 7 8 | @WebServlet ( name = "AnnotatedServlet" , description = "A sample annotated servlet" , urlPatterns = { "/QuickServlet" } ) public class QuickServlet extends HttpServlet { // servlet code here... } |
此处的 servlet 声明了附加信息,例如名称和描述。 - 声明一个具有多个 URL 模式的 servlet:
1 2 3 4 5 6 | @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( "Hello, I am a Java servlet!" ); 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( "Area of the rectangle is: " + area + "" ); 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 &#61; "/QuickServlet" >Click here to send GET request a > < br />< br /> < form action &#61; "QuickServlet" method &#61; "post" > Width: < input type &#61; "text" size &#61; "5" name &#61; "width" /> Height < input type &#61; "text" size &#61; "5" name &#61; "height" /> < input type &#61; "submit" value &#61; "Calculate" />
form >
body >
html > |
5. 编译servlet
键入以下命令来编译 servlet 类&#xff1a;
javac -cp TOMCAT_HOME \lib\servlet-api.jar" -d CLASS_DIR SRC_DIR \QuickServlet.java
代替&#xff1a;
- TOMCAT_HOME &#61; C:\Program Files\Apache Software Foundation\Tomcat 7.0。
- CLASS_DIR &#61;WebContent \ WEB-INF \ 类
- SRC_DIR &#61;src\net\codejava\servlet
6. 创建WAR文件
键入以下命令&#xff0c;将WebContent目录打包为 WAR 文件&#xff08;注意末尾有一个点&#xff09;&#xff1a;
jar cfv deploy\QuickServletApp.war -C WebContent 。
请注意&#xff0c;没有web.xml文件&#xff0c;因为我们使用了&#64;WebServlet注解来声明和映射 servlet。
7. 部署和测试 Java servlet
请参阅教程&#xff1a;Java servlet 初学者快速入门指南 (XML)以部署和测试应用程序。