JSP 并发送对象

JSP and send object

我在将 servlet 发送到 JSP

时遇到问题

我有 "web.xml".

    <servlet>
    <description></description>
    <display-name>optimalizace5</display-name>
    <servlet-name>optimalizace5</servlet-name>
    <servlet-class>
BucketServlet2
 </servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>optimalizace5</servlet-name>
    <url-pattern>/optimalizace5</url-pattern>
  </servlet-mapping>

和 BucketServlet2:

public class BucketServlet2 extends HttpServlet{

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse resp)
        throws ServletException, IOException {

     request.getSession().setAttribute("vysledek_list", "10101101");
     getServletContext().getRequestDispatcher("/optimalizace4.jsp").forward(request, resp); 
     super.doPost(request, resp);
    }
}

和JSP:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Optimalizační úlohy</title>
</head>
<body>
<FORM action="/Eliminace_kosiku/optimalizace5" method="post">

Data:

<%=request.getParameter("vysledek_list")%>

</form>
</body>
</html>

从 JSP 发送到 servlet 正在运行。但是从 servlet 发送到 JSP 不起作用。我不知道,怎么了??

您将值放入 session,而不是请求对象。

request.getSession().setAttribute("vysledek_list", "10101101");
//          ^ setting attribute in session object.

所以需要从jsp.

中的session对象中取出值

Session在jsp中是隐式对象,可以像

一样直接使用
<%=session.getAttribute("vysledek_list")%>

注意:如果您不再需要它,请不要忘记将其从会话中删除。

<%session.removeAttribute("vysledek_list");%>

另一种做法:参考this.

您只需更改 doPost 方法代码中的以下行

request.getSession().setAttribute("vysledek_list", "10101101");

request.setAttribute("vysledek_list", "10101101");

更新: 在第二种方法中添加,在 jsp 中使用 getAttribute 方法而不是 getParameter 方法。

<%=request.getAttribute("vysledek_list")%>

getParameter取URL参数值。在 Servlet 处,您在会话中设置了值,因此,您应该使用 session.getAttribute 而不是 getParameter

<%=request.getSesstion().getAttribute("vysledek_list")%>

还有一点,当你在 Servlet 中使用 forward 方法时,request.setAttribute 足以将值传递给 JSP 页面。您不应在 session 处存储临时值(即相同的请求)。因此,将值设置为 request 而不是如下所示的 session

 request.setAttribute("vysledek_list", "10101101");