2010-08-31 131 views

回答

10

你可以forwaring请求到JSP之前设置的所有值到响应对象,或者你可以把你的价值观到在一个会话bean和访问JSP

+0

感谢花花公子如下所示这些步骤。我做了同样的事情,它为我工作。 :-) – Developer 2010-09-25 06:47:34

14

使用

了request.setAttribute( “的attributeName”);。

然后

getServletContext()。getRequestDispatcher(“/ file.jsp”)。forward();

然后它将在JSP中被访问。

作为一个附注 - 在你的jsp中避免使用java代码。使用JSTL。

+0

感谢Bozho!我现在不太了解JSTL。但是我肯定会学习它。 – Developer 2010-09-25 06:46:47

+0

为什么'getServletContext()'而不是'request'? – CodyBugstein 2014-09-02 22:20:18

74

会失败时的工作:

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

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

    ${name} 
    
+0

转发后,例如,张贴表单被认为是一个不好的做法,你应该使用真正的重定向(301)。然后你必须通过会话传递状态或获取参数。 – lukyer 2015-10-12 00:41:27

+0

是完美答案@BalusC – Binay 2016-05-10 03:07:13

+0

@BalusC,你是什么意思,“你应该能够在转发的JSP页面中访问它,如下所示:$ {name}”??我试着写<%out.println($ {name});%>,但它不起作用。但<%out.println(request.getAttribute(“name”));%>做了。 – Pavel 2018-02-07 00:29:19

12

除了使用属性从传递信息servlet到JSP页面,也可以通过参数。这只需通过重定向到指定所讨论的JSP页面的URL并添加普通的参数传递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> 
<% 
    } 
%> 
17

简单的方式,我发现,

在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") %>. 
+0

所有答案都有效,但这个看起来很简单.. – Siva 2016-03-28 12:16:47

1

您还可以使用RequestDispacher和传承随着数据你想要的jsp页面。

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

这是一个包含字符串变量a的servlet代码。 a的值是从带有表单的html页面获得的。 然后将该变量设置为请求对象。然后使用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);%>