如何将对象从servlet传递给JSP?

时间:2012-08-27 13:38:00

标签: java jsp servlets

  

可能重复:
  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结果

2 个答案:

答案 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