參考博客:http://geeksun.iteye.com/blog/2179658
http://www.bubuko.com/infodetail-387387.html
----------------------------------------------------
一、配置maven
二、創建一個maven項目
2.1
2.2
2.3 起好GroupId、ArtifacId
2.4 這個是選擇自己電腦上的maven目錄、setting.xml及本地倉庫
2.5 起個項目名(注意:Project location的地址是E:\Spring3\mavenDemo2--因為工作區間有其他項目,而不是把該項目直接部署到E:\Spring3目錄。)
2.6 左邊的是新建的界面,還有一些配置要完成。先點擊右邊的Enable Auto-Import
2.7 配置服務器
2.8 配置的服務器是本地的Tomcat
29. 給服務器起個名字(隨便取),下面的Warning 表示此服務器還沒有部署項目
30. 現在給這個Tomcat部署此項目
31. 部署的項目是以exploded結尾的war包
32. 配置好服務器后,看下下面紅框中的內容——這是服務器在運行前要做的事:Make是編譯的意思;Build...是發布指定的項目
33. 配好服務器,現在來配置一些項目的基本配置。下面的Project中的Project compoler output表示項目的編譯地址,這里不用管它(默認的maven項目的編譯地址是target目錄,也就是這里的out目錄)
34. 點擊左邊的Modules,現在為此項目配置Tomcat的依賴包
35.點擊Add Selected
36. 點擊左邊的Artifats,選擇以exploded結尾的war包(這和剛才部署Tomcat時Tomcat的部署項目一致)
說明:IntelliJ IDEA中的Artifact指的是你的項目的一種輸出形式,一般項目發布的輸出形式都是.war格式打包的。
三、簡單測試一下
3.1 配置pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.wql</groupId> <artifactId>mavenDemo2</artifactId> <packaging>war</packaging> <version>1.0-SNAPSHOT</version> <name>mavenDemo2 Maven Webapp</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> </dependencies> <build> <finalName>mavenDemo2</finalName> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.6</source> <target>1.6</target> </configuration> </plugin> <plugin> <artifactId>maven-surefire-plugin</artifactId> <configuration> <includes> <include>**/*Tests.java</include> </includes> </configuration> </plugin> </plugins> </build> </project>
3.2 在src目錄下新建java包
3.3 設置成Sources Root
3.4 在java包中新建包、java文件(Test.java)
package com.wql.test; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; /** * Created by Administrator on 15-12-2. */ @WebServlet("/mytest") public class Test extends HttpServlet{ @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doPost(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // System.err.println("---"); req.setCharacterEncoding("UTF-8"); String name=req.getParameter("name"); req.setAttribute("name",name); System.out.println(name); req.getRequestDispatcher("index2.jsp").forward(req, resp); } }
3.5 在webapp目錄下創建jsp文件 (注意:在idea14創建的maven項目中的webapp目錄下創建jsp文件不支持EL表達式,所以加上<%@ page isELIgnored="false" %>,原因及解決方法目前還不知道。)
<%-- Created by IntelliJ IDEA. User: Administrator Date: 15-11-3 Time: 上午9:12 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <!-- 支持EL表達式 --> <%@ page isELIgnored="false" %> <html> <head> <title></title> </head> <body> <form action="mytest" method="post"> <input name="name"> return:${name} <input value="提交" type="submit"> </form> </body> </html>
3.6 運行,結果如下(輸入“測試”)
后記:此博客遺留兩個問題:1.webapp目錄下的WEB-INF里的web.xml的版本是2.3的,比一般建立的非maven項目WebContent目錄下的WEB-INF里的web.xml低(2.5版本),這樣在里面一些標簽不支持,不知道如何設置;2.在webapp目錄下創建jsp文件不支持EL表達式,建一個jsp加一個<%@ page isELIgnored="false" %>也比較麻煩,不知如何解決。
--------
1.已解決。解決方法:把正常的web.xml版本覆蓋到webapp目錄下的WEB-INF里的web.xml即可。
2.已解決。解決方法如下:
配置web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <display-name>Archetype Created Web Application</display-name> <welcome-file-list> <welcome-file>login.jsp</welcome-file> </welcome-file-list> </web-app>
關鍵是將<?xml version="1.0" encoding="UTF-8"?>替換原來默認的描述文件。
總結:其實上面的2個問題就一句話:將web項目的web.xml的“xml version” 及web-app描述信息進行覆蓋maven項目默認生成的描述信息。(如果能在創建時自動選擇就好了)