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