有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java ServletJSP重定向

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

  1. # 1 楼答案

    桑卡

    您可以将这些对象添加到会话对象中。您可以在任何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);
    

    并使用

    列表数据列表=会话。获取属性(“列表”)

    希望这对你有帮助

  2. # 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>
    
  3. # 3 楼答案

    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) {
            }
        }
    }
    
  4. # 4 楼答案

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

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

    请尝试使用此代码