4

我想简单地将值 servlet 传递给 jsp 页面。我想运行 jsp 文件并通过获取 servlet 显示加载数据

但我得到了 null :"Servlet communicated message to JSP: null "

下面是我的代码。

爪哇代码

package api;

public class ServletToJSP extends HttpServlet {
      public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        //communicating a simple String message.
        String message = "Example source code of Servlet to JSP communication.";
        request.setAttribute("message", message);

        RequestDispatcher reqDispatcher = getServletConfig().getServletContext().getRequestDispatcher("javaPapers.jsp");
        reqDispatcher.forward(request,response);


      }
}

.jsp 文件

<%@ page import="api.ServletToJSP" language="java" %>


<html>
<body>
<%
  String message = (String) request.getAttribute("message");
  out.println("Servlet communicated message to JSP: "+ message);

 // Vector vecObj = (Vector) request.getAttribute("vecBean");
//  out.println("Servlet to JSP communication of an object: "+vecObj.get(0));
%>
</body>
</html>

web.xml

<servlet>
      <servlet-name>ServletToJSP</servlet-name>
      <servlet-class>api.ServletToJSP</servlet-class>
  </servlet>
  <servlet-mapping>

      <servlet-name>ServletToJSP</servlet-name>
      <url-pattern>/ServletToJSP/*</url-pattern>
  </servlet-mapping>
4

4 回答 4

3

有几件事要改变:

在小服务程序中

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    //communicating a simple String message.
    String message = "Example source code of Servlet to JSP communication.";
    request.setAttribute("message", message);
    request.getRequestDispatcher("javaPapers.jsp").forward(request,response);
}

在jsp中

<html>
  <body>
    Servlet communicated message to JSP: ${message}
  </body>
</html>

所做的更改:

  • 在 servlet 中,使用 request.getRequestDispatcher(String url)
  • 在 jsp 中,删除了 servlet 导入。
  • 在jsp中,使用EL来获取属性值。
于 2014-09-19T01:01:14.983 回答
0

request.setAttribute("message", message);使用以下代码传递参数应该可以工作:

RequestDispatcher  rd = getServletContext().getRequestDispatcher("yourPage.jsp");
rd.forward(request,response);

您还可以使用 dispatcher 中的 URL 传递属性:

RequestDispatcher  rd = getServletContext().getRequestDispatcher("yourPage.jsp?message=some message");
    rd.forward(request,response);

您还可以使用会话对象共享信息。

session.setAttribute("message","your message");

然后在jsp中检索它使用:

String message=(String)session.getAttribute("message");
于 2013-09-03T09:48:07.320 回答
0

代替

RequestDispatcher reqDispatcher = getServletConfig().getServletContext().getRequestDispatcher("javaPapers.jsp");

RequestDispatcher reqDispatcher = request.getRequestDispatcher("javaPapers.jsp");
于 2013-09-03T07:05:52.277 回答
-1

您必须使用上下文路径将消息从 servlet 获取到 jsp。这肯定会奏效,我已经做到了。

String msg = "Message from servlet to jsp";
response.sendRedirect(response.encodeRedirectURL(contextPath+"/report/test.jsp?msg="+msg));
于 2015-08-02T08:59:52.357 回答