将字符串变量从servlet传递给jsp

时间:2013-09-24 21:41:46

标签: jsp servlets

我在映射到我的servlet的浏览器链接中打开,并期望显示传递的值。 但我所看到的是“无效”

的Servlet

public class TestServlet extends HttpServlet {    
    public TestServlet() {
        super();       
    }
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {           
            request.setAttribute("var", "a"); 
            request.getRequestDispatcher("index.jsp").forward(request, response);    
    }


}

JSP:

<% 
String  s1  = (String) session.getAttribute("var");        
%>
<%= s1 %>

3 个答案:

答案 0 :(得分:1)

问题是您在请求范围中设置属性,但是正在从会话范围中读取它。尝试替换此行:

request.setAttribute("var", "a");

这一个:

request.getSession().setAttribute("var", "a");

这样你就可以在两个地方引用会话范围。或者,您可以在JSP中使用request.getAttribute()在两个位置使用请求范围。

答案 1 :(得分:0)

您可以直接更改

,而不是通过jsp页面中的会话范围访问该属性
String  s1  = (String) session.getAttribute("var");  

    String s1 = request.getAttribute("var");

或者如果您仍想通过会话范围访问它,您可以在servlet的会话范围中设置变量,例如:

Http session = request.getSession();
     session.setAttribute("var","a");

那么你可以像在JSP页面中那样访问它,或者你可以简单地做David所说的:

 request.getSession().setAttribute("var", "a");
无论哪种方式都可行。

答案 2 :(得分:0)

SERVLET部分:

String str = request.getParameter("str1");
request.setAttribute("str1", "hello, welcome!! how are you??");
getServletContext().getRequestDispatcher("/Demo.jsp").forward(request,response);

JSP部分(将包含在任何标记段落或文本框中等)

$ {STR}