Java servlet到jsp传递值
我想简单地将值servlet传递给jsp页面。我想运行jsp文件,从获取servlet中显示onload数据 但我得到了null: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: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”);