Servlet-Servlet-Jsp重定向

时间:2013-04-18 07:01:44

标签: java jsp

我正在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 个答案:

答案 0 :(得分: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>

答案 1 :(得分: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) {
        }
    }
}

答案 2 :(得分:0)

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

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

尝试使用此代码。

答案 3 :(得分: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);

使用

获取此列表对象

列出dataList = session.getAttribute(“list”);

希望这会对你有所帮助。