1

我在映射到我的 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 %>
4

3 回答 3

1

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

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

通过这个:

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

这样,您将在两个地方都引用会话范围。request.getAttribute()或者,您可以通过在 JSP 中使用来在这两个地方使用请求范围。

于 2013-09-24T21:47:43.507 回答
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");

无论哪种方式都可以。

于 2013-09-25T06:41:40.533 回答
0

SERVLET 部分:

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

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

${str}

于 2015-06-26T05:49:16.853 回答