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