显示从servlet发送到jsp的对象的信息

时间:2014-05-05 13:17:46

标签: java jsp object servlets jstl

我可以成功地将对象从servlet获取到jsp页面但是可以很好地计算如何使该对象中的各个元素显示,我试图让JSTL标记lib工作如下所示,但无济于事。我非常感谢任何有关这方面的帮助我知道它只有一些小的东西,因为jsp上有对象。

另外,这是最好的方法吗?有什么好的选择?

Servlet提供Welcome.jsp

protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
    HttpSession session = request.getSession(true);
    if (session.getAttribute("currentSessionUser") != null) {
        user = (User) session.getAttribute("currentSessionUser");
        userData = (User) ProfileDAO.displayUserProfile(user);

        request.setAttribute("userData", userData);
        request.getRequestDispatcher("Welcome.jsp").forward(request, response);
    } else {
        response.sendRedirect("LoginFailure.html");
    }
}

Welcome.jsp中

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    :
    :
    :
<title>Welcome</title>
</head>
<body>
Welcome to BLAHBLAH.COM

<%
    Object userData = request.getAttribute("userData");

%>
<table>
    <c:choose items="${userData}" var="userData">
        <tr>
            <td>${userData.name}</td>
            <td>${userData.information}</td>
            <td>${userData.address1}</td>
       </tr>
    </c:choose>
</table>

<p>userData></p>

2 个答案:

答案 0 :(得分:1)

我不确定您是否希望将JSTL作为一项要求,但这里是一个应该在JSP中运行的代码示例

<%
     User userData = (User)request.getAttribute("userData");
%>
<table>
    <tr>
       <td><%= userData.name %></td>
       <td><%= userData.information %></td>
       <td><%= userData.address1 %></td>
    </tr>
</table>

答案 1 :(得分:1)

不推荐在jsp中使用Scriptlets。我们需要使用

1.El表达
   或

2.TagLibrary

您的代码存在的问题是您在jsp中使用了一个scriptlet,这根本不是必需的

  Object userData = request.getAttribute("userData");

因为userData对象已在请求范围内使用此代码

request.setAttribute("userData", userData);

3.您可以使用类似

的El表达式直接打印userData对象的值
            <td>${userData.name}</td>
            <td>${userData.information}</td>
            <td>${userData.address1}</td>

4.您也可以使用jstl打印值,这是始终推荐的方法

  <c:out value="${userData.name}"/>
  <c:out value="${userData.information}"/>
  <c:out value="${userData.address1}"/>