【maven】idea中基於maven-webapp骨架創建的web.xml問題

IDEA中基於maven-webapp骨架創建的web工程,默認的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>
</web-app>

可以看到默認的web.xml是2.3版本的,這版本不能識別EL表達式,非常不方便,所以一般都會替換成更高版本4.0。

解決方法主要有以下兩種,一種是直接overwrites web.xml文件,替換內容,一種是永久修改創建的骨架基礎文件。

#1-> 僅對當前項目有效,直接替換web.xml的內容即可

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
</web-app>

#2-> 修改創建的骨架基礎文件

在IDEA創建基於maven-archetype-webapp的web工程時,其實這個創建過程是依據一個特定的模板來創建的,而這個模板放置在路徑爲 org.apache.maven.archetypes:maven-archetype-webapp 。maven工程是不放置任何jar包的,所有的jar包都是放在倉庫中,這裏的模板其實也是jar包,放置在倉庫中。

打開本地倉庫,找到 [你的本地倉庫地址]\org\apache\maven\archetypes\maven-archetype-webapp

打開【1.4】這個文件夾

找到 maven-archetype-webapp-1.4.jar 用解壓文件直接打開,我這裏用的WinRAR

找到 maven-archetype-webapp-1.4.jar\archetype-resources\src\main\webapp\WEB-INF\web.xml

直接雙擊打開web.xml,發現就是默認情況下的web聲明,現在我們需要替換掉這個文件。

<!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>
</web-app>

如果能直接雙擊打開編輯,直接替換成以下的聲明,保存即可。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
</web-app>

但是也會遇到這樣一種情況,直接雙擊以後默認用瀏覽器打開,無法直接編輯文件。這種情況下,可以先把web.xml解壓到本地,然後修改替換保存之後。

在解壓界面,右鍵->添加文件到壓縮文件中,將修改後的web.xml替換到原來的位置,保存關閉退出即可。

需要特別注意的是,因爲是.jar文件,不要整個文件解壓到本地之後再替換操作,必須直接通過解壓管理工具雙擊打開操作。

這樣再次新建基於骨架創建的web工程就會發現默認的web.xml已經成功替換成我們需要的4.0版本啦。

參考資料:

https://blog.csdn.net/sinat_34104446/article/details/82895337?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

https://www.cnblogs.com/lee-yangyaozi/p/10970316.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章