Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java servlet到jsp传递值_Java_Jsp_Servlets - Fatal编程技术网

Java servlet到jsp传递值

Java servlet到jsp传递值,java,jsp,servlets,Java,Jsp,Servlets,我想简单地将值servlet传递给jsp页面。我想运行jsp文件,从获取servlet中显示onload数据 但我得到了null:“Servlet将消息传递给JSP:null” 下面是我的代码 java代码 package api; public class ServletToJSP extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) th

我想简单地将值servlet传递给jsp页面。我想运行jsp文件,从获取servlet中显示onload数据

但我得到了null:
“Servlet将消息传递给JSP:null”

下面是我的代码

java代码

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);


      }
}
<%@ 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>
jsp文件

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);


      }
}
<%@ 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>

ServletoJSP
api.ServletToJSP
ServletoJSP
/ServletoJSP/*
更换

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


使用
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");

要改变的事情很少:

servlet中的

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将消息传递给JSP:${message}
所作的修改:

  • 在servlet中,使用request.getRequestDispatcher(字符串url)
  • 在jsp中,删除了servlet导入
  • 在jsp中,使用EL获取属性值

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

String msg = "Message from servlet to jsp";
response.sendRedirect(response.encodeRedirectURL(contextPath+"/report/test.jsp?msg="+msg));

避免使用scriptlet,而是在此处使用Post web.xml代码。以及如何调用servlet?除了JSTL之外,还有一种允许访问值的表达式语言,因此您的消息将在jsp中以${message}的形式访问,而不需要其他scriptlet代码。你的欢迎文件是什么?如何调用servlet?ServletRequest.getRequestDispatcher(uri)只接受上下文根的绝对路径,因此必须以“/”开头。因此,代码可以更改为getServletConfig().getServletContext().getRequestDispatcher(“/javaPapers.jsp”);