-1

我已经阅读了很多关于同一个问题的内容,我试图遵循答案,但它从来没有奏效。

我有一个 servlet 名称:get_import.java 我有一个 jsp 名称:import.jsp

首先,在 processRequest() 中,我启动了一个 String s = "abcdef",然后我写道:

s=request.setAttribute("validate", s);
RequestDispatcher rd = getServletContext().getRequestDispatcher("import.jsp");
rd.forward(request,response);

然后,在 import.jsp 中,我写道:

<%  String st = (String)request.getAttribute("validate");
    out.println("<h1>Result: " +st+ "</h1>");
%>

然后输出是:结果:空

我无法解释为什么jsp中变量的值为null,请帮我解决这个问题或找到其他出路。非常感谢!!

4

2 回答 2

2

您有多种选择:

1.将其存储在会话中。

String username = request.getParameter("username");
if (username != null && username.length() > 0) 
{
 session.setAttribute("username", username);
}

2.将其存储为表单中的隐藏字段。

<input name="filter" type="hidden" value=""/>

3.将其存储在cookie中。

username = getCookie(userCookieName);

// Get from cookie.
 function getCookie(name) {
    if (document.cookie) {
           index = document.cookie.indexOf(name);
           if (index !== -1) {
           f = (document.cookie.indexOf("=", index) + 1);
           t = document.cookie.indexOf(";", index);
             if (t === -1) {
               t = document.cookie.length;
               }
             return(document.cookie.substring(f, t));
           }
      }
 return ("");
}

4.不是真正的另一种选择,而是一种机制 - 在 URL 中传递它:

.... onclick="window.location = 'details.jsp?filter=...'
于 2013-11-08T10:04:11.233 回答
0

尝试像这样在会话中存储值

session.setAttribute("validate", s);

然后,在 import.jsp 中:

<%  String st = (String)session.getAttribute("validate");
    out.println("<h1>Result: " +st+ "</h1>");
%>

一个侧面说明尽量避免在 jsp 页面中编写 java。最好的替代方法是JSTL / EL

于 2013-11-08T09:56:58.667 回答