从servlet传递variables到jsp

我怎样才能将variables从servlet传递给jsp? setAttributegetAttribute对我不起作用:-(

在将请求转发给jsp之前,可以将所有值设置为响应对象。 或者你可以把你的值放入一个会话bean并在jsp中访问它。

在以下情况下将无法工作:

  1. 您正在通过response.sendRedirect("page.jsp")将响应redirect到新的请求 。 新创build的请求对象当然不会再包含这些属性,并且不能在redirect的JSP中访问。 您需要转发而不是redirect。 例如

     request.setAttribute("name", "value"); request.getRequestDispatcher("page.jsp").forward(request, response); 
  2. 您正在以错误的方式访问它或使用错误的名称 。 假设您已经使用名称"name"来设置它,那么您应该能够在转发的 JSP页面中访问它,如下所示:

     ${name} 

简单的方法,我发现是,

在servlet中:

您可以设置该值并将其转发到JSP,如下所示

 req.setAttribute("myname",login); req.getRequestDispatcher("welcome.jsp").forward(req, resp); 

在Welcome.jsp中,你可以通过

 .<%String name = (String)request.getAttribute("myname"); %> <%= name%> 

(或)直接你可以打电话

 <%= request.getAttribute("myname") %>. 

使用

了request.setAttribute( “的attributeName”);

接着

。getServletContext()方法的getRequestDispatcher( “/ file.jsp”)向前();

然后它将在JSP中被访问。

作为一个方面说明 – 在你的jsp避免使用java代码。 使用JSTL。

除了使用属性将信息从servlet传递到JSP页面之外,还可以传递参数 。 这是通过redirect到指定所讨论的JSP页面的URL并添加普通的parameter passing通过URL机制来完成的。

一个例子。 servlet代码的相关部分:

 protected void doGet( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException { response.setContentType( "text/html" ); // processing the request not shown... // // here we decide to send the value "bar" in parameter // "foo" to the JSP page example.jsp: response.sendRedirect( "example.jsp?foo=bar" ); } 

而JSP页面的相关部分example.jsp

 <% String fooParameter = request.getParameter( "foo" ); if ( fooParameter == null ) { %> <p>No parameter foo given to this page.</p> <% } else { %> <p>The value of parameter foo is <%= fooParameter.toString() %>.</p> <% } %> 

这是一个包含stringvariablesa的servlet代码。 a的值是从表单的html页面获得的。 然后将该variables设置为请求对象。 然后使用forwardrequestdispatcher方法将其传递给jsp。

 String a=req.getParameter("username"); req.setAttribute("name", a); RequestDispatcher rd=req.getRequestDispatcher("/login.jsp"); rd.forward(req, resp); 

在jsp中按照以下程序中显示的步骤进行操作

 <%String name=(String)request.getAttribute("name"); out.print("your name"+name);%> 

您也可以使用RequestDispacher并将数据与所需的jsp页面一起传递。

 request.setAttribute("MyData", data); RequestDispatcher rd = request.getRequestDispatcher("page.jsp"); rd.forward(request, response);