当request.getAttribute(“ data”)返回值时,无法在jsp中使用$ {data}显示数据

时间:2019-04-24 09:19:42

标签: java jsp servlets jstl

我正在尝试使用servlet构建Web应用程序,但是面对这个问题,我只是在servlet类中设置了数据,并使用$ {}将其感染到了jsp中。

JSP --->

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
        <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<c:out value="${data}"/>
<%= request.getAttribute("data") %>
</body>
</html>

Servlet类:

public class Naveen extends HttpServlet {
    private static final long serialVersionUID = 1L;


    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        Object data = "Some data, can be a String or a Javabean";
        request.setAttribute( "data", data );
        RequestDispatcher rd = request.getRequestDispatcher( "/new.jsp" );
        rd.forward( request, response );
        response.getWriter().append( "Served at:" ).append( request.getContextPath() );
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doGet( request, response );
    }

}

2 个答案:

答案 0 :(得分:0)

您需要在requestScope中使用c:out

<c:out value="${requestScope.data}">

有关详细示例,请参阅:https://www.journaldev.com/2090/jstl-tutorial-jstl-tags-example

我认为您是直接致电/new.jsp! 为了获得价值,您需要调用servlet URL。 这将解决您的问题,因为在servlet上,请求被分配为具有属性值/new.jsp的{​​{1}}。

答案 1 :(得分:0)

在您的jsp文件中尝试以下操作:添加 isELIgnored = false

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1" isELIgnored="false" %>

该属性默认情况下处于启用状态。您可以将其添加到每个jsp页面中,以成功进行EL(表达式语言)处理。