如何在jsp中从servlet获取变量的值?

时间:2013-11-08 09:54:01

标签: java jsp servlets

我已经阅读了很多关于同一个问题的内容,我试着按照答案但是它永远不会奏效。

我有一个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>");
%>

然后输出为:结果:null

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

2 个答案:

答案 0 :(得分: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=...'

答案 1 :(得分:0)

尝试以这种方式将值存储在会话中

session.setAttribute("validate", s);

然后,在import.jsp中:

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

一方注意尝试避免在jsp网页中编写java.Best alternate JSTL / EL