二. Maven 创建一个简单 WEB 项目 如Servlet项目
二.一 创建一个war 类型的项目
打开eclipse, 文件–>新建—>其他–>Maven 选择 Maven Project,跳过原型,进入到下一步:
注意,这个时候 packaging 选择的是 war 类型。
二.二 添加web.xml 文件
新创建好 ServletMaven 的 Web 项目之后,发现项目 pom.xml 文件报错了。
显示错误文字是: web.xml is missing and <failOnMissingWebXml> is set to true
我们就需要添加一个 web.xml 文件了。
点击src/main/ 目录下,发现相比较 Jar项目,多了一个 webapp 文件夹。 其实这个 webapp 文件夹就相当于以前的 WebContent 文件夹。
构建标准的 web 目录结构。
在webapp 目录下,创建 一个 META-INF 文件夹 和 WEB-INF 文件夹。在 WEB-INF 文件夹,需要再添加一个web.xml 文件
web.xml 内容为:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> </web-app>
然后,再更新 Maven 项目, Alt+F5, 点击确定即可。
也可以利用工具完成 ,不需要手动添加。
选中 ServletMaven 项目, 右键 Java EE Tools——>Generate Deployment Descriptor Stub, 系统便会自动创建 web.xml 文件了。
推荐使用工具完成。
二.三 添加 servlet-api 和jsp-api 的依赖
<dependencies> <dependency> <groupId>javax.servlet</groupId> <artifactId>jsp-api</artifactId> <version>2.0</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> </dependency> </dependencies>
二.四 创建 Servlet 类
在 src/main/java 下,创建一个 HelloServlet 类
package com.yjl; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 岳泽霖 */ public class HelloServlet extends HttpServlet{ private static final long serialVersionUID = 1L; @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String message="你好啊,岳泽霖"; req.setAttribute("message",message); req.getRequestDispatcher("/index.jsp").forward(req,resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO 自动生成的方法存根 doGet(req, resp); } }
二.五 在web.xml 下,添加 servlet的映射
<servlet> <servlet-name>hello</servlet-name> <servlet-class>com.yjl.HelloServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>hello</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping>
二.六 在webapp 文件夹下 添加 index.jsp 文件
前台展示 message的值
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>第一个Web类型的Maven 项目</title> </head> <body> ${message} </body> </html>
二.七 在pom.xml 文件里面配置 tomcat 插件
Maven 项目,可以启动 Tomcat, 然后运行项目,不需要再单独将项目部署到 Tomcat上,进行运行了。 也就是说, Maven 内置了Tomcat 。
既然内置了 Tomcat,那么就可以设置在 Maven 内置的Tomcat上的端口号,项目名等信息了,非常方便。
<build> <plugins> <plugin> <groupId>org.apache.tomcat.maven</groupId> <!--tomcat的插件名, tomcat7-maven-plugin, 用的是tomcat7版本--> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <port>8026</port> <!--tomcat的端口号--> <path>/maven</path> <!--tomcat的项目名--> </configuration> </plugin> </plugins> </build>
老蝴蝶的 JDK版本是 JDK1.8, 注意版本号, tomcat7 用的是2.2, 不是2.0. 2.0版本的话,可以会版本不匹配。
如果Tomcat启动时报错,注意看一下,是否是版本不匹配导致 的。