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");
我在将 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");