创建这个简单的Web应用
mvn archetype:create -DgroupId=org.sonatype.mavenbook.ch05 \ -DartifactId=simple-webapp \ -DpackageName=org.sonatype.mavenbook \ -DarchetypeArtifactId=maven-archetype-webapp
packaging 元素包含的值是 war
。这种打包类型配置让 Maven 以 WAR 文件的形式生成一个 web 应用。
配置Jetty插件
<project> [...] <build> <finalName>simple-webapp</finalName> <plugins> <plugin> <groupId>org.mortbay.jetty</groupId> <artifactId>maven-jetty-plugin</artifactId> </plugin> </plugins> </build> [...] </project>
调用 Jetty 插件的 Run 目标在 Jetty Servlet 容器中启动你的 web 应用
mvn jetty:run
运行:http://localhost:8080/simple-webapp
添加一个简单的Servlet
package org.sonatype.mavenbook.web; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class SimpleServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out = response.getWriter(); out.println( "SimpleServlet Executed" ); out.flush(); out.close(); } }
匹配 Simple Servlet,修改WEB-INF/web.xml
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app> <display-name>Archetype Created Web Application</display-name> <servlet> <servlet-name>simple</servlet-name> <servlet-class>org.sonatype.mavenbook.web.SimpleServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>simple</servlet-name> <url-pattern>/simple</url-pattern> </servlet-mapping> </web-app>
运行 mvn compile 以编译项目
编译失败了,因为你的 Maven 项目没有对 Servlet API 的依赖。
添加 Servlet 2.4 规格说明作为依赖
<project> [...] <dependencies> [...] <dependency> <groupId>org.apache.geronimo.specs</groupId> <artifactId>geronimo-servlet_2.4_spec</artifactId> <version>1.1.1</version> <scope>provided</scope> </dependency> </dependencies> [...] </project>
如果你对在这个简单 web 应用编写自定义 JSP 标签感兴趣,需要添加对 JSP 2.0 规格说明的依赖。
<project> [...] <dependencies> [...] <dependency> <groupId>org.apache.geronimo.specs</groupId> <artifactId>geronimo-jsp_2.0_spec</artifactId> <version>1.1</version> <scope>provided</scope> </dependency> </dependencies> [...] </project>
运行 mvn compile 以编译你的项目
运行 mvn clean install
运行 mvn jetty:run
访问:http://localhost:8080/simple-webapp/simple