最近使用idea创建maven项目时,需要使用到jstl表达式,针对遇到的问题,在这里做一下标记
-
servlet代码如下
UserService userService=new UserServiceImpl();
List<User> list = userService.getUserList();
request.setAttribute("list",list);
request.getRequestDispatcher("Hello.jsp").forward(request,response);
<c:forEach items="${requestScope.list}" var="user">
<li>${user.uname}</li>
</c:forEach>
但是在程序运行时出现的结果却是这样
用户名
${user.uname}
在网上有很多办法但都不能解这个问题,比如导入jstl标签
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
也引入了·jstl包和standard包,其中jstl在引入1.2版本是可能会有一些问题,我使用的是1.2.2版本,依赖如下
<dependency>
<groupId>javax.servlet.jsp.jstl</groupId>
<artifactId>javax.servlet.jsp.jstl-api</artifactId>
<version>1.2.2</version>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
但是这样还是不行,依然显示${user.uname},最后在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>
/
发现我的xml是2.3版本,只要在jsp页面加上如下代码就行了
<%@ page isELIgnored="false" %>
显示结果
用户名
tom
marry