问题: SpringMVC项目中, jsp文件无法显示从Controller类中传递过来的ModelAndView的模型数据

原因: 并不是所有的jsp页面都支持EL表达式的, 它与web.xml版本(即: servlet版本)有关。

这是官方给出的解释:

If isELIgnored is true, EL expressions are ignored when they appear in static text or tag attributes. If it is false, EL expressions are evaluated by the container only if the attribute has rtexprvalue set to true or the expression is a deferred expression.The default value of isELIgnored varies depending on the version of the web application deployment descriptor. The default mode for JSP pages delivered with a Servlet 2.4 descriptor is to evaluate EL expressions; this automatically provides the default that most applications want. The default mode for JSP pages delivered using a descriptor from Servlet 2.3 or before is to ignore EL expressions; this provides backward compatibility.

大致意思是:

2.3及以下的版本, 默认忽略EL表达式,即不解析EL表达式。从2.4版本开始,默认不忽略EL表达式,即可以解析EL表达式。

基于Maven搭建web项目,默认的web.xml版本是2.3版本

解决办法一:

在jsp文件的页头中添加 <%@page isELIgnored=“false” %> , 它的作用是, 不忽略EL表达式, 这样就可以解析EL表达式了

但这种方式,只对添加了 <%@page isELIgnored=“false” %> 的jsp文件有效 , 没有添加添加 <%@page isELIgnored=“false” %> 的jsp文件就无法解析EL表达式 , 局限性较大

解决办法二

修改web.xml的版本。但目前idea工具暂时还没有提供可以直接创建web.xml的选项和配置。所以需要我们从外部copy所需版本的web.xml头文件代码,来替换掉默认创建的web.xml的头文件内容,

下面提供从2.3~4.0各个版本的web.xml头文件内容 , 方便我们根据各自所需版本替换修改

J2EE 1.3 ———— servlet2.3 (前提:JDK1.3 以上、 Tomcat4.1以上)

<!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>

J2EE 1.4 ———— servlet2.4 (前提:JDK1.4 以上、 Tomcat5.5以上)

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"xmlns="http://java.sun.com/xml/ns/j2ee"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" ></web-app>

Java EE 5 ———— servlet2.5 (前提:JDK5.0 以上、 Tomcat6.0以上)

<?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/javaeehttp://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"version="2.5"></web-app>

Java EE 6 ———— servlet3.0 (前提:JDK6.0 以上、 Tomcat7.0以上)

<?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/javaeehttp://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"version="3.0"></web-app>

Java EE 7 ———— servlet3.1 (前提:JDK7.0 以上、 Tomcat8.0以上)

<?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_3_1.xsd"version="3.1">
</web-app>

Java EE 8 ———— servlet4.0 (前提:JDK8.0 以上、 Tomcat9.0以上)

<?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>

这种方式,只对本项目有效,下次使用maven模板创建新的项目,默认的web.xml文件的版本还是2.3版本



扩展:

按照上面的两种方式,第一种只对本jsp文件有效 ,第二种只对本项目有效。局限性太大,就怕哪次忘记作出修改了,就可能导致项目出问题。

那么,有没有一种方式从根本上解决,基于maven搭建web项目时,web.xml的版本是自己所需的,而不是默认的2.3版本。

答案是:肯定有的

找到我们的maven本地仓库,然后按照org\apache\maven\archetypes\maven-archetype-webapp\1.4 这个路径路径下,找到 maven-archetype-webapp-1.4 jar包。

然后用压缩软件打开maven-archetype-webapp-1.4

找到web.xml文件

copy自己所需版本的web.xml头文件来替换掉默认的2.3版本,然后保存即可。

在做了上诉修改之后,那么你以后再基于maven来创建web项目,自动生产的web.xml版本就是你修改后的版本,如下:


这里再讲点废话:

如果有不知道自己的maven本地仓库的,用idea创建一个基于maven的web项目。在这个创建过程中会有这一步,叫你选择本地仓库路径的。如果你不选则,则maven会自动帮你指定本地仓库,默认是:C:\用户\用户名.m2\repository ,如下图红框处。

如果你想要自己指定maven本地仓库路径,需要勾选Override复选框之后才可以选择。


Servlet不同版本之间的区别

关于web.xml配置的那些事儿

c标签和EL表达式无法结合使用

SpringMVC项目中,jsp文件无法显示从Controller中传递过来的ModelAndView的模型数据相关推荐

  1. eclipse中JSP文件编写乱码问题及解决方案

    eclipse中JSP文件编写乱码问题及解决方案 遇到问题 编译JSP文件后,网页中中文显示乱码 开始解决问题 注:若未创建JSP文件项目则只需前三个步骤 若创建了JSP文件项目则还需步骤四! 步骤一 ...

  2. 【报错笔记】做struts项目建立jsp文件老是报错

    做struts项目建立jsp文件老是报错,所有项目都一样. 报错原因: 没有导入apache tomcat 解决方法: 点击项目名右键Build Path-Configure Build Path-A ...

  3. linux查看文件时显示行号,linux中查看文件时显示行号

    linux中查看文件时显示行号 [root@1-min etc]# cat -n rsyslog.conf              //显示所有行号(包括空行) [root@1-min etc]# ...

  4. linux怎么查看内容并显示行号,linux中查看文件时显示行号

    Linux中查看文件时显示行号 [[email protected] etc]# cat -n rsyslog.conf              //显示所有行号(包括空行) [[email pro ...

  5. html中导入文件并显示

    html中导入文件并显示 主要使用到: 1.input file <input type="file"/> 2. FileReade FileReader 步骤: &l ...

  6. 如何在 Linux 中复制文件到多个目录中

    在 Linux 中,cp 命令常被用于从一个文件夹中复制文件到另一个文件夹中,最简单的语法如下: # cp [options-.] source(s) destination 另外,你也可以使用高级复 ...

  7. 将windows系统主机上的文件拷贝到Linux系统中;将Linux系统中的文件粘贴到Windows主机中

    本篇文章主要实现将windows主机上的文件复制到Linux服务器上,这里为了方便演示,我举例放在C盘中的一个test101.py文件,现在我要将它放在Linux系统的home下的shao目录下. 首 ...

  8. 将用bootstrap框架的html文件转为eclipse中jsp文件

    eclipse中引入bootstrap框架 最近跟着我们专业一个很厉害很崇拜的老师捯饬毕设,他让我学自适应框架bootstrap,花了一周时间了解了该框架的 基本架构和用法,上去就写html文件,本来 ...

  9. 详解Intellij IDEA中.properties文件中文显示乱码问题的解决

    首先,你可能会见到如下提示: File encoding is disabled because .properties file (see Settings|Editor|File Encoding ...

最新文章

  1. visual studio code 里调试运行 Python代码
  2. html %3c% page,page.html
  3. Real VNC 5.1.1新增实用的技能:VNC Address Book
  4. 北京交通大学计算机科学与技术研究生导师,熊轲_北京交通大学研究生导师信息...
  5. CLH锁 、MCS锁
  6. 弧形玻璃清洁机器人_宅家大扫除清洁装备+清洁好物+全屋家电维护一文搞定
  7. 错误类型:“系统找不到 Microsoft.Office.Interop.Word(转)
  8. C语言getch()函数学习
  9. bogofilter notes
  10. 让Double类型完整显示,不用科学计数法显示E(Java)
  11. 阿里安全猎户座实验室(Alibaba Orion Security Lab)简介
  12. pcb过孔漏铜_【企业资讯】大正瑞地:专注PCB药水二十年,品质、性能可靠
  13. 魔百盒哪款型号配置高_松下负离子吹风机怎么样哪款好?推荐型号?2020年9月松下负离子电吹风选购攻略...
  14. LeetCode 835. 图像重叠
  15. 基于Spring Boot不同的环境使用不同的配置方法
  16. 给表空间增加数据文件
  17. JAVA入门到精通-第16讲-数组
  18. pycharm的terminal无法识别到命令 pytest 不是内部或外部命令,也不是可运行的程序 或批处理文件。
  19. WordPress直接调用头像地址
  20. 火车头文章标题伪原创插件(文章双标题插件)

热门文章

  1. Web前端基础---CSS样式--盒子模型--浮动与定位
  2. Android SDK安装与环境配置
  3. Could not open ServletContext resource [/WEB-INF/applicationContext.xml]”解决方案
  4. 细数判断数据类型的各种方法
  5. 阮一峰的Javascript模块化编程(三):require.js的用法
  6. share一段采集程序的代码
  7. 【高效能人士的七个习惯】 第二部分 个人的成功:从依赖到独立(史蒂芬·柯维)...
  8. wxAdditions使用小结
  9. How-to: 利用Visual Studio升级Windows Phone 7工程
  10. Java swing 代码例子