我可以成功地将对象从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>

最佳答案

不建议在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}"/>

10-05 21:14
查看更多