java - 数据库交互后重定向

标签 java oracle jsp servlets

这是我怀疑导致问题的 servlet 代码。将电影添加到数据库后,我不知道如何让 servlet 重定向回 l​​ist.jsp 页面。我认为这与 doGet() 方法有关。你能指出我正确的方向吗?我正在使用 Netbeans、Tomcat 和 Oracle 11g XE。

package movies;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@SuppressWarnings({"unused", "serial"})
public class MovieAdd extends HttpServlet {

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    Connection c = null;
    Statement stmt = null;
    ResultSet rs = null;
    String sql;

    PrintWriter out = response.getWriter();
    response.setContentType("text/html");

    String movie = request.getParameter("movie");
    String year = request.getParameter("year");
    String rating = request.getParameter("rating");
    String actors = "";

    for (int l = 0; l < 5; l++) {
        String m = "a" + (l + 1);
        String actor = request.getParameter(m);
        if (actor != null && actor != "" && !actor.isEmpty()) {
            actor = actor + ", ";
            actors = actors + actor;
        }
    }
    if (actors.endsWith(", ")) {
        actors = actors.substring(0, actors.length() - 2);
    }
    System.out.println(actors);
    try {
        Class.forName("oracle.jdbc.OracleDriver");
        c = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521/XE", "system", "password");//PUT DATABASE CONNECTION INFO
        c.setAutoCommit(false);
        System.out.println("Opened database successfully");

        stmt = c.createStatement();

        sql = "INSERT INTO MOVIES (NAME, YEAR, RATING, ACTORS) VALUES ('"
                + movie
                + "','"
                + year
                + "','"
                + rating
                + "','"
                + actors
                + "')";
        stmt.executeUpdate(sql);
        c.commit();

        sql = "SELECT * FROM MOVIES";
        rs = stmt.executeQuery(sql);
        while (rs.next()) {
            String movieDb = rs.getString("NAME");
            int yearDb = rs.getInt("YEAR");
            int ratingDb = rs.getInt("RATING");
            int actorsDb = rs.getInt("ACTORS");
            System.out.println("Movie:- " + movieDb);
            System.out.println("Year of Release:- " + yearDb);
            System.out.println("Rating:- " + ratingDb);
            System.out.println("Actors:- " + actorsDb + "\n");
        }
        stmt.close();
        c.close();

    } catch (Exception e) {
        System.err.println(e.getClass().getName() + ": " + e.getMessage());
        System.exit(0);
    }

    String site = "list.jsp";
    response.setStatus(HttpServletResponse.SC_MOVED_TEMPORARILY);
    response.setHeader("Location", site);
}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String site = "add.jsp";
    response.setStatus(HttpServletResponse.SC_MOVED_TEMPORARILY);
    response.setHeader("Location", site);
}


}

最佳答案

先生。洛查明是绝对正确的,我给了你答案,因为你对我最初的问题有正确的答案。我的代码的真正问题是,在这个 while 循环中,数据类型与数据库数据类型的实际不匹配。

    while (rs.next()) {
        String movieDb = rs.getString("NAME");
        int yearDb = rs.getInt("YEAR");
        int ratingDb = rs.getInt("RATING");
        int actorsDb = rs.getInt("ACTORS");//Should be a string, not an int
        System.out.println("Movie:- " + movieDb);
        System.out.println("Year of Release:- " + yearDb);
        System.out.println("Rating:- " + ratingDb);
        System.out.println("Actors:- " + actorsDb + "\n");

关于java - 数据库交互后重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29851514/

相关文章:

java - JProgressBar.setMaximum(int) 有时似乎不起作用

Oracle NUMBER 比较

java - Spring 形式选择选项

java - 无法使用 JSTL 访问 bean

mysql - javax.servlet.jsp.JspException : Unable to get connection, 数据源无效: "java.sql.SQLException: No suitable driver found"

java - 变量输出[]可能尚未初始化

java - 让方法在输入末尾打印所有输出

java - Android中ListView的问题

c# - Entity Framework 和多个模式

oracle - sysdate 和 current_date 有不同的类型?