2013-04-18 120 views
0

我正在開發一個JAVA應用程序,其中一個servlet正在接受來自JSP頁面的輸入。在db中插入值後,它會重定向到另一個servlet。然後,第二個servlet將使用ArrayList分配一個JSP頁面。但是我不能從第二個servlet重定向到JSP頁面。 ArrayList將進入JSP頁面,但頁面不顯示任何內容。我正在使用NetBeans 6.8。 如果有人能解決這個問題,我會很感激。Servlet-Servlet-Jsp重定向

代碼1日的Servlet:

RequestDispatcher dispatcher = request.getRequestDispatcher("/Servlet1?id="+id); 
dispatcher.forward(request, response); 

守則第2 Servlet的:

request.setAttribute("list",list); 
String url="test2.jsp"; 
RequestDispatcher v=request.getRequestDispatcher(""+url+""); 
v.forward(request, response); 
+0

最好從第二個servlet中顯示一些代碼。 – 2013-04-18 07:03:44

+0

添加您的代碼以瞭解確切的問題。 – 2013-04-18 07:05:55

+0

@Sankha:在你問你的地區說兩個不同的東西,看起來很模糊: 1)但我不能從第二個servlet重定向到JSP頁面。 2.)ArrayList將進入JSP頁面,但頁面沒有顯示任何內容 請確認瀏覽器是否轉到第二個jsp。 – 2013-04-18 07:16:57

回答

0

試試這2日的servlet ..

request.setAttribute("list",list); 
String url="test2.jsp"; 
RequestDispatcher v=request.getRequestDispatcher(url); 
v.forward(request, response); 

在jsp頁面。 ..

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 
<html> 
<head> 
<title></title> 
</head> 
<body> 
<c:forEach items="${list}" var="item"> 
     ${item}<br> 
</c:forEach> 
</body> 
</html> 
+0

不,它不工作... – Sankha 2013-04-18 07:22:07

+0

調試你的代碼..看看列表是否爲空? – 2013-04-18 07:30:18

+0

,也看看你有什麼異常... – 2013-04-18 07:31:13

0
public class MySqlConnection { 

    Connection c; 

    public Connection getConnection() throws ClassNotFoundException, SQLException { 
     String driver = "com.mysql.jdbc.Driver"; 
     String url = "jdbc:mysql://localhost:3306/"; 
     String dbName = "ignite292"; 
     String user = "root"; 
     String password = "root"; 
     Class.forName(driver); // You don't need to call it EVERYTIME btw. Once during application's startup is more than enough. 
     c = (Connection) DriverManager.getConnection(url + dbName, user, password); 
     return c; 
    } 

    public void closeConnection() { 
     try { 
      if (!c.isClosed()) { 
       c.close(); 
      } 
     } catch (Exception e) { 
     } 
    } 
} 
0

第一件事,如果你使用任何重定向機制,它不應該在RequestScope。它必須在會話或上下文範圍內(根據您的要求)。因此,第二個Servlet產生的代碼可能如下

request.getSession().setAttribute("list",list); 
String url="/test2.jsp"; 
RequestDispatcher v=request.getRequestDispatcher(""+url+""); 
v.forward(request, response); 

嘗試使用此代碼。

0

Sankha,

您可以將這些對象添加到會話對象中。並且您可以在任何jsp和servlet中使用該會話obj。

假設你有一個arrayList對象有一些數據對象。並且您試圖將您的servlet重定向到jsp或servlet到servlet。 例如: -

RequestDispatcher dispatcher = request.getRequestDispatcher("/Servlet1?id="+id); 
dispatcher.forward(request, response); 
request.setAttribute("list",list); // **Insted of using request object use session implicit object**. 
String url="test2.jsp"; 
RequestDispatcher v=request.getRequestDispatcher(""+url+""); 
v.forward(request, response); 

請參考下面的代碼來解決您的問題。

RequestDispatcher dispatcher = request.getRequestDispatcher("/Servlet1?id="+id); 
dispatcher.forward(request, response); 
**session.setAttribute("list",list);** 
String url="test2.jsp"; 
RequestDispatcher v=request.getRequestDispatcher(""+url+""); 
v.forward(request, response); 

,並通過使用

名單的DataList = session.getAttribute( 「名單」)得到該列表對象;

希望這會幫助你。