1

可能重复:
如何将对象从 servlet 传递到调用 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 页面中得到空结果

4

2 回答 2

1

将其放在会话(session.setAttribute("foo", bar);)或请求中;然后可以通过您给它的名称(在我的示例中为“foo”)从 JSP 访问它。

编辑:使用简单<%= ID %><%= Name %>而不是<%out.println.....%>. 注意=java标签开头的,表示输出表达式的结果。

于 2012-08-27T13:40:05.890 回答
1

我认为不需要 servlet 的服务(doGet/doPost)方法。为了访问JSP 中的请求属性,您必须请求servletvia url-pattern,这样您就不必使用 session。

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
于 2012-08-27T15:04:59.497 回答