【開發IDE】
InteIliJ IDEA 2019.3.3 (Ultimate Edition)
jdk 13.0.2
apache maven 3.6.3
【創建工程】
File->New->Project->Maven,這裏選擇從maven自帶的web骨架創建一個web工程,注意要勾選“Create from archetype”,才能選擇下面的骨架類型。
創建好的工程,目錄結構如圖所示
和標準的web目錄相比還缺少了一些文件夾,手動補齊
依次 main->New->Directory,會自動提示【java】和【resources】,直接雙擊即可
補充完後的目錄結構如下:
【java】下新建一個package【com.yy.servlet】,然後在這個包下新建一個servlet叫MyServlet.java
問題1 右鍵新建的時候會發現找不到Servlet這個文件模板,當然你可以直接新建一個Java Class然後自己繼承HTTPServlet,但考慮開發效率,我們一般還是會通過模板直接創建更高效。
出現這個問題的原因是現在這個工程是通過maven直接創建的,什麼jar包都沒有依賴,工程無法識別servlet,所以直接在【pom.xml】 裏添加servlet的jar包就可以了。
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
tips:假如不清楚具體怎麼寫,可以到maven的中央倉庫:https://mvnrepository.com/ 直接搜索所需要的jar包名稱,選擇合適的版本,同時會提供一段代碼,如下圖所示,直接將代碼複製到pom.xml中即可。
添加完成以後,就能正常添加servlet文件了。這裏還要注意一點,創建servlet的時候不要勾選【Create Java EE 6 annotated class】,這樣創建的servlet總是找不到會報404錯誤,應該是地址沒有指定清楚的緣故,還是手動在web.xml添加路徑比較好。
<web-app>
<display-name>Archetype Created Web Application</display-name>
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>com.yy.servlet.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
打開MyServlet.java文件,在doGet方法下添加
request.getRequestDispatcher("/index.jsp").forward(request,response);
在doPost方法下添加
doGet(request,response);
現在通過maven工具欄中的“M”標誌,執行mvn tomcat:run
打開瀏覽器,輸入:http://localhost:8080/maven_web_2/MyServlet 回車
問題2 運行報錯Compilation error
原因是maven默認使用的是tomcat6,而pom.xml文件裏顯示當前jdk是1.7,不兼容,造成compiler error
解決方案:主要有兩種方式,一種是調整jdk的版本,一種是調整Tomcat的版本。
第一種,調整jdk的版本,可參考maven的官方文檔 :http://maven.apache.org/plugins/maven-compiler-plugin/examples/set-compiler-source-and-target.html,直接在pom.xml文件中修改即可,修改也有兩種方式。
#1#->在<properties>標籤中直接修改
<project>
[...]
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
[...]
</project>
#2#->在<plugins>中標籤中添加
<project>
[...]
<build>
[...]
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
[...]
</build>
[...]
</project>
第二種,調整Tomcat的版本,默認是6,我們這裏修改成7,在pom.xml添加如下代碼
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
</plugin>
再次運行mvn tomcat7:run,成功!請注意這裏不再是tomcat:run而是tomcat7:rum
【參考資料】
http://maven.apache.org/plugins/maven-compiler-plugin/examples/set-compiler-source-and-target.html
http://tomcat.apache.org/maven-plugin-2.1/tomcat7-maven-plugin/plugin-info.html