我在StackOverflow上尝试了几种解决方案但似乎没有工作: 我想将一个字符串从Servlet传递给JSP并用EL显示它。
我在Netbeans上创建了一个简单的普通项目,这是我添加的代码:
Servlet代码:
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String message = "Hello";
request.setAttribute("message", message);
RequestDispatcher dispatcher = request.getRequestDispatcher("index.jsp");
dispatcher.forward(request, response);
}
JSP代码:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<h1>Hello World!</h1>
<h2 style="border: 2px solid brown; width: 20%"> Message is: ${message} </h2>
</body>
</html>
让我感到沮丧的是,即使是文档(Oracle Api Reference和HeadFirst O&#39; Reilly指南),这应该是直截了当的,但即使我使用scriptlet,我也只是没有文本。我尝试了Glassfish和TomEE
答案 0 :(得分:0)
而不是$ {message},请尝试使用$ {requestScope.message}
答案 1 :(得分:0)
我或多或少地确定你的问题是你的Servlet没有被调用。在Servlet中放置一个控制台(System.out.println)输出,看看输出是否正在打印。
不要尝试直接访问JSP页面。而是点击为Servlet映射的URL。
您的Servlet可以通过两种方式进行映射: 1.注释 2.部署描述符(web.xml)
@WebServlet("/processForm")
public class UploadServlet extends HttpServlet {
// implement servlet doPost() and doGet()...
}
在上面的情况下,如果您点击相对于您的webapp的 / processForm ,将调用UploadServlet,并且如果使用调度程序,将执行并转发Servlet的任何处理。
等效描述符如下所示:
<servlet>
<servlet-name>UploadServlet</servlet-name>
<servlet-class>com.bla.bla.UploadServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>UploadServlet</servlet-name>
<url-pattern>/processForm</url-pattern>
</servlet-mapping>