2010-08-31 244 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);%>