解決IDEA中Maven項(xiàng)目中JSTL標(biāo)簽無效問題
代碼如下(忽略編譯錯(cuò)誤,不影響結(jié)果)

最近剛換IDEA用上Maven,之前一直都是用Eclipse。這回踩了個(gè)坑,所以跟大家分享一下。
當(dāng)我準(zhǔn)備在IDEA上用Maven創(chuàng)建SSM項(xiàng)目的時(shí)候,我發(fā)現(xiàn)頁面的JSTL標(biāo)簽不生效,EL標(biāo)簽和導(dǎo)入的C標(biāo)簽會(huì)直接被輸出。
例如上圖最后頁面顯示的是${name},并沒有輸出我定義的“呵呵”,在pom.xml文件中有jstl的依賴包,但死活不生效。
嘗試了很多方法,網(wǎng)上找了很多資料,想起之前用IDEA創(chuàng)建普通web項(xiàng)目的時(shí)候,導(dǎo)入C標(biāo)簽會(huì)報(bào)錯(cuò),需要手動(dòng)添加jstl的dtd文件,于是試了一下還是沒用。
最后我打開項(xiàng)目中的web.xml文件才發(fā)現(xiàn)頭信息是2.3版本的,如下圖。

可能2.3版本可能isELIgnored默認(rèn)不是false(這只是我的猜測(cè))所以在jsp頁面添添加<%@ page isELIgnored=“false” %>這個(gè)命令就jstl就生效了。
但每個(gè)jsp頁面都要添加這個(gè)命令是一件很繁瑣的事情,所以把web.xml的頭信息更換為更高的版本。
我記得好像是2.4版本就默認(rèn)設(shè)置isELIgnored=false,但版本也不要太高,要對(duì)應(yīng)tomcat的版本,比如4.01版本的就要對(duì)應(yīng)tomcat9.0、3.0版本要對(duì)應(yīng)tomcat7。
相關(guān)對(duì)應(yīng)版本可以自己去搜一下,這里不做詳細(xì)闡述。提供幾個(gè)web.xml的頭信息。
2.4
<?xml version="1.0" encoding="UTF-8"?> <web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> </web-app>
2.5
<?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_2_5.xsd" version="2.5"> </web-app>
3.0
<?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" 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"> </web-app>
但還會(huì)有個(gè)問題,那就是每次創(chuàng)建Maven項(xiàng)目都要去修改這個(gè)web.xml文件也很繁瑣,所以還有個(gè)一勞永逸的方法。

通過上圖我們可以發(fā)現(xiàn)我們用IDEA創(chuàng)建項(xiàng)目的時(shí)候,是通過Maven倉庫中的maven-archetype-webapp這個(gè)jar包創(chuàng)建的,而org.apache.maven.archetypes是這個(gè)jar包在倉庫中的地址。

把maven-archetype-webapp-1.3.jar解壓一個(gè)副本出來,然后可以在archetype-resources\src\main\webapp\WEB-INF目錄下修改立面的web.xml文件,或者直接刪掉也可以,這取決于你的項(xiàng)目是否用得上web.xml這個(gè)配置文件。
然后把修改好的web.xml復(fù)制,把maven-archetype-webapp-1.3.jar中的web.xml文件刪除,再把復(fù)制好的文件粘貼進(jìn)去。
這種方式同樣也可以對(duì)pom.xml文件進(jìn)行初始化的配置。
總結(jié)
相關(guān)文章
Java 后端開發(fā)中Tomcat服務(wù)器運(yùn)行不了的五種解決方案
tomcat是在使用Java編程語言開發(fā)服務(wù)端技術(shù)使用最廣泛的服務(wù)器之一,但經(jīng)常在開發(fā)項(xiàng)目的時(shí)候會(huì)出現(xiàn)運(yùn)行不了的情況,這里總結(jié)出幾種能解決的辦法2021-10-10
解決Spring Batch框架job任務(wù)只跑一次的問題
這篇文章主要介紹了解決Spring Batch框架job任務(wù)只跑一次的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09
spring常用注解開發(fā)一個(gè)RESTful接口示例
這篇文章主要為大家介紹了使用spring常用注解開發(fā)一個(gè)RESTful接口示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2022-03-03
IntelliJ IDEA Run時(shí)報(bào)“無效的源發(fā)行版:16“錯(cuò)誤問題及解決方法
這篇文章主要介紹了IntelliJ IDEA Run時(shí)報(bào)“無效的源發(fā)行版:16“錯(cuò)誤問題及解決方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-05-05
SpringBoot自動(dòng)裝配之@Enable深入講解
這篇文章主要介紹了SpringBoot自動(dòng)裝配之@Enable,SpringBoot中提供了很多Enable開頭的注解,這些注解都是用于動(dòng)態(tài)啟用某些功能的。而其底層原理是使用@Import注?解導(dǎo)入一些配置類,實(shí)現(xiàn)Bean的動(dòng)態(tài)加載2023-01-01
MyBatis使用注解開發(fā)實(shí)現(xiàn)過程詳解
這篇文章主要介紹了MyBatis使用注解開發(fā)實(shí)現(xiàn)過程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03

