调试:
controller 成功接收到参数。并且给model传入数据。界面也跳转了
jsp文件中使用 ${user.id} 获取数据
但是处理的依然是 ${user.id} 而不是传入来的数据。
原因: 默认创建的web,其配置文件 web.xml文件是使用 2.3版本
<!DOCTYPE web-app PUBLIC"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN""http://java.sun.com/dtd/web-app_2_3.dtd" >
导致后面的servlet、jsp、EL等采用的全是2.3版本,而在2.3版本中,jsp页面是不支持EL的,无法得到正确的解析。
解决方案:
1、将前面的那一段代码删除掉。然后加入下面代码
<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_3_0.xsd"id="WebApp_ID" version="3.0">
这个还要接着分析一下,是在pom.xml文件中导入哪个依赖生成的
我百度了一会,说是创建web-app项目时默认就是2.3,需要自己手动修改。所以这个一定要注意。
2、新建web.xml:
把web.xml删掉。在Project Structure 里面的Modules重新添加一个Web.xml,能够生成并选择版本,但是这只是作用于当前项目。
删除以后打开对应模块现在爆红,点击➖号,然后再点加号,
选择web.xml文件,此时就可以选择想要的版本了,默认4.0就行了。
3、永久解决办法:
修改默认版本,具体步骤如下:
进入“1.3”文件夹,找到jar包,如下图
用解压软件打开文件,记住不是解压。
按下图这个路径依次打开,找到web.xml文件:
直接打开web.xml,修改头文件,保存就可以了(注意:是在解压软件打开的的界面直接打开并修改web.xml,而不是解压成文件夹之后修改,也就是要保证jar包本来的结构不变)。
下面这个就是3.0的web.xml头文件,直接复制就可以。
<?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_3_0.xsd" id="WebApp_ID" version="3.0">
原因:用maven新建webapp项目时,就是以这个***1.3.jar包里的web.xml为模板去生成新项目的web.xml,所以修改它就等于修改了模板。