本來是為了寫個springmvc的小demo,雛形搭建起來后想起來做成maven的好了,就重新建的maven項目,坑就從這里開始了...
maven創建web項目默認使用的是web 2.3版本,web.xml文件頭中也是2.3的版本..說實話之前沒怎么用maven創建過項目,后來覺得maven項目看源碼太方便了才更偏向於用maven的,所以這里也根本沒在意..引入的javax-servlet-api 2.5的版本.然后發現jsp文件中的el表達式都原樣輸出了,看起來el表達式根本沒解析..這就怪了,還好之前有個非maven創建的一模一樣的demo,運行一遍無任何問題..基本鎖定maven問題,而差異化的根源也確定在了web 2.3這個版本上..
然后百度,基本是這樣的答案:2.5之前web.xml文件中的頭定義中,el表達式默認是忽略不解析的,故需要顯示聲明解析el表達式,3種方案:
方案1,在jsp文件頭上添加如下:
<%@ page isELIgnored="false" %>
方案2,在web.xml文件中如下定義:
<jsp-config> <jsp-property-group> <url-pattern>*.jsp</url-pattern> <el-ignored>false</el-ignored> <scripting-invalid>true</scripting-invalid> </jsp-property-group> </jsp-config>
方案3,改變web.xml中的頭為2.5之上的版本..
<?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">
這3種方案都是確實有效的,我改了web.xml的頭為3.0的版本,再次運行ok了...