可能重复:
How to pass an Object from the servlet to the calling JSP
如何将对象从servlet传递给JSP?
我在servlet端使用了以下代码
request.setAttribute("ID", "MyID");
request.setAttribute("Name", "MyName");
RequestDispatcher dispatcher = request.getRequestDispatcher("MangeNotifications.jsp");
if (dispatcher != null){
dispatcher.forward(request, response);
}
和JSP方面的代码
<td><%out.println(request.getAttribute("ID"));%> </td>
<td><%out.println(request.getAttribute("Name"));%> </td>
我在JSP页面中得到null结果
答案 0 :(得分:1)
将其放入会话(session.setAttribute("foo", bar);
)或请求中;然后可以通过您给它的名称从JSP访问它(在我的示例中为“foo”)。
编辑:
仅使用<%= ID %>
和<%= Name %>
代替<%out.println.....%>
。请注意java标记开头的=
,指示输出表达式的结果。
答案 1 :(得分:1)
我认为不要求servlet的服务(doGet / doPost)方法。为了访问JSP中的 request 属性,您必须通过servlet
请求url-pattern
,这样您就不必使用会话。
SampleServlet.java
@WebServlet(name = "SampleServlet", urlPatterns = {"/sample"})
public class SampleServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setAttribute("ID", "MyID");
request.setAttribute("Name", "MyName");
RequestDispatcher dispatcher = request
.getRequestDispatcher("/MangeNotifications.jsp");
if (dispatcher != null){
dispatcher.forward(request, response);
}
}
}
MangeNotifications.jsp(我假设此文件位于web-context的根目录)
<br/>ID : ${ID} Or scriptlets <%-- <%=request.getAttribute("ID")%> --%>
<br/>ID : ${Name}
现在打开浏览器并设置这样的请求url somersetting,
http://localhost:8084/your_context/sample