JSP中的el表达式$(user[i])不能取值问题的理解

JSP中的el表达式$(user[i])不能取值问题的理解

今天用serlvet和jsp实现一个后台数据传输到前端显示的案例,直接看代码。

JSP页面代码:

<h2>表格</h2>
<table>
    <%
        int i;
        for ( i= 0; i < 5; i++) {
    %>
        <tr>
            <td>${users[i].username}</td>
            <td>${users[i].password}</td>
            <td>${users[i].phone}</td>
        </tr>
    <%
    }
    %>
    </table>

servlet代码:

@WebServlet("/user")
public class UserServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        ArrayList<User> users = new ArrayList<>();
        users.add(new User("yang","123","1231231"));
        users.add(new User("wang","123","1231231"));
        users.add(new User("haha","123","1231231"));
        users.add(new User("lala","123123","1231231"));

        req.setAttribute("users",users);
        req.getRequestDispatcher("users.jsp").forward(req,resp);
    }
}

运行结果:
在这里插入图片描述

数据竟然没有显示出来!!!! 后台也没有报错信息
我愣了一下,然后检测了后台代码发现没有什么问题。但是后台的用户数据为什么没有显示呢?


后面我用传统的方式取值:

<table>
    <%
        List<User> users=(ArrayList)request.getAttribute("users");
        for (User user : users) {
    %>
            <tr>
                <td><%=user.getUid()%></td>
                <td><%=user.getName()%></td>
                <td><%=user.getAge()%></td>
            </tr>
    <%
        }
    %>
</table>

发现可以取出来,数据是发送到了前端页面了:

在这里插入图片描述

经过分析,可能问题出在el表达式里面,于是我将i改为1,取出第一个用户显示。

我去! 竟然显示出来了!
在这里插入图片描述
问题显然易见了,就是这个i没有起到作用,于是我上网搜索相关的文献,但是找了许久都没有提到这个点的,大部分都是利用jstl标签和传统的方式来显示list集合中的数据。

后来我分析之后:因为 i 是java代码块中的变量,el表达式和代码块是没有联系的(el只能取域对象中的数据,域对象:pageContext<request<session<application),所以取不到代码块中的 i 这样解释的话就可以验证为什么 i 没有起到作用了。


那我们只能放弃这种方式,我们可以使用传统方式(上面有) 或 用jstl标签:<c:forEach var=“user” items=&{users} >

使用jstl标签时需要导入jar包和在jsp页面上面加入<%@taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %>

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

记或往

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值