0

我正在用 JAVA 开发一个应用程序,其中一个 servlet 从 JSP 页面获取输入。在 db 中插入值后,它将重定向到另一个 servlet。然后第二个 servlet 将调度一个带有 ArrayList 的 JSP 页面。但是我不能从第二个 servlet 重定向到 JSP 页面。ArrayList 将转到 JSP 页面,但该页面没有显示任何内容。我正在使用 NetBeans 6.8。如果有人能解决这个问题,我将不胜感激。

第一个 Servlet 的代码:

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

第二个 Servlet 的代码:

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

4 回答 4

0

首先,如果您使用任何重定向机制,它不应该在 RequestScope 中。它必须在会话或上下文范围内(根据您的要求)。因此,第二个 Servlet 的结果代码可能如下所示

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

试试这个代码。

于 2014-06-11T19:05:29.273 回答
0

桑卡,

您可以将这些对象添加到会话对象中。您可以在任何 jsp 和 servlet 中使用该会话 obj。

假设您有一个包含一些数据对象的 arrayList Obj。并且您正在尝试将您的 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);

并通过使用获取此列表对象

列表数据列表 = session.getAttribute("list");

希望这会帮助你。

于 2015-01-12T09:56:11.107 回答
0

在第二个 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>
于 2013-04-18T07:13:25.453 回答
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) {
        }
    }
}
于 2013-05-21T18:40:13.093 回答