Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用servlet将JSP表单转换为JDBC_Java_Jsp_Servlets_Jdbc - Fatal编程技术网

Java 使用servlet将JSP表单转换为JDBC

Java 使用servlet将JSP表单转换为JDBC,java,jsp,servlets,jdbc,Java,Jsp,Servlets,Jdbc,我陷入了一些将JSP表单转换为JDBC的代码中。 我在编码方面相对较新,但在互联网上搜索了很长时间后,我仍然没有解决一个问题。 我需要在我的jsp表单中将数据类型“插入”到一个表中 JSP: SQL: 我的问题是它没有将其插入数据库,而根据我新获得的经验,我不知道为什么。我查了几个例子,但它们都像我的 亚历山大 完整SERVLET: @WebServlet(name = "CampaignToJDBC", urlPatterns = {"/CampaignToJDBC"}) public c

我陷入了一些将JSP表单转换为JDBC的代码中。 我在编码方面相对较新,但在互联网上搜索了很长时间后,我仍然没有解决一个问题。 我需要在我的jsp表单中将数据类型“插入”到一个表中

JSP:

SQL:

我的问题是它没有将其插入数据库,而根据我新获得的经验,我不知道为什么。我查了几个例子,但它们都像我的

  • 亚历山大
完整SERVLET:

@WebServlet(name = "CampaignToJDBC", urlPatterns = {"/CampaignToJDBC"})
public class CampaignToJDBC extends HttpServlet {
public static String driver = "oracle.jdbc.driver.OracleDriver";
public static String URL = "jdbc:oracle:thin:@datdb.cphbusiness.dk:1521:dat";
public static String ID = "";
public static String PW = "";
private int id = 0;
Connection con = null;
PreparedStatement ps = null;

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    String pname = request.getParameter("pname");
    String pemail = request.getParameter("pemail");

    try {
        Class.forName(driver);
        con = DriverManager.getConnection(URL, ID, PW);
        String Query = "insert into campaigns(Pname, Pemail) values(?, ?)";
        ps = con.prepareStatement(Query);
        ps.setString(1, pname);
        ps.setString(2, pemail);

        ps.executeUpdate();

        id = id + 1;
    } catch (Exception e) {

    } finally {
        try {
            ps.close();
        } catch (SQLException ex) {
            Logger.getLogger(CampaignToJDBC.class.getName()).log(Level.SEVERE, null, ex);
        }
        try {
            con.close();
        } catch (SQLException ex) {
            Logger.getLogger(CampaignToJDBC.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    RequestDispatcher rd = request.getRequestDispatcher("display.jsp");
    rd.forward(request, response);
}

// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
/**
 * Handles the HTTP <code>GET</code> method.
 *
 * @param request servlet request
 * @param response servlet response
 * @throws ServletException if a servlet-specific error occurs
 * @throws IOException if an I/O error occurs
 */
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    processRequest(request, response);
}

/**
 * Handles the HTTP <code>POST</code> method.
 *
 * @param request servlet request
 * @param response servlet response
 * @throws ServletException if a servlet-specific error occurs
 * @throws IOException if an I/O error occurs
 */
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    processRequest(request, response);
}

/**
 * Returns a short description of the servlet.
 *
 * @return a String containing servlet description
 */
@Override
public String getServletInfo() {
    return "Short description";
}// </editor-fold>
}

请将您的业务逻辑与JSP和Servlet端分开。为逻辑创建一个单独的类,比如manager/controller之类的。在那里实现逻辑,并从控制台或UnitTest中进行尝试

如果工作正常,则从Servlet调用该方法。 首先,尝试使用常量参数。 查看日志文件,生成日志信息或使用System.out.println();看看发生了什么。在日志中搜索异常

SELECT查询在Servet中有效吗?表示连接良好。 试着靠近一点。

问题解决了

代码是正确的,但我忘了添加所需的驱动程序。因此,我所做的就是添加带有驱动程序的库,它就工作了。对不起,我的错


感谢大家的帮助:)

servlet中的那一行到底是什么??pelase为servlet类提供完整代码。关闭连接。这是好的,你们有试过的接球挡吗?如果是这样,它会抛出异常吗?检查异常好的,我添加了一个完整的servlet。但是我试着检查异常,我必须承认我没有完全理解它们,我试过你用System.out.println(“Driver successful”);说的话;。然后看了看日志。(正如我所说,我对这方面还不太熟悉)。这是GlassFish服务器告诉我的:
Info:Driver successful Info:ERROR Info:Driver successful Info:ERROR Info:Driver successful Info:ERROR
,所以看起来是连接失败了):Ok。请将错误日志(堆栈跟踪)复制到您的问题中。在Glassfish中,可以使用连接池,因此可以在管理控制台中尝试数据库连接。
        Connection con = null;
        PreparedStatement ps = null;

        // ____________________________________________

        String pname = request.getParameter("pname");
        String pemail = request.getParameter("pemail");

        Class.forName(driver);
        con = DriverManager.getConnection(URL);
        String Query = "insert into campaigns(pname, pemail) values(?, ?)";
        ps = con.prepareStatement(Query);
        ps.setString(1, pname);
        ps.setString(2, pemail);

        ps.executeUpdate();
DROP TABLE campaigns; 

CREATE TABLE campaigns(
Pname varchar2(32),
Pemail varchar2(32)
);
@WebServlet(name = "CampaignToJDBC", urlPatterns = {"/CampaignToJDBC"})
public class CampaignToJDBC extends HttpServlet {
public static String driver = "oracle.jdbc.driver.OracleDriver";
public static String URL = "jdbc:oracle:thin:@datdb.cphbusiness.dk:1521:dat";
public static String ID = "";
public static String PW = "";
private int id = 0;
Connection con = null;
PreparedStatement ps = null;

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    String pname = request.getParameter("pname");
    String pemail = request.getParameter("pemail");

    try {
        Class.forName(driver);
        con = DriverManager.getConnection(URL, ID, PW);
        String Query = "insert into campaigns(Pname, Pemail) values(?, ?)";
        ps = con.prepareStatement(Query);
        ps.setString(1, pname);
        ps.setString(2, pemail);

        ps.executeUpdate();

        id = id + 1;
    } catch (Exception e) {

    } finally {
        try {
            ps.close();
        } catch (SQLException ex) {
            Logger.getLogger(CampaignToJDBC.class.getName()).log(Level.SEVERE, null, ex);
        }
        try {
            con.close();
        } catch (SQLException ex) {
            Logger.getLogger(CampaignToJDBC.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    RequestDispatcher rd = request.getRequestDispatcher("display.jsp");
    rd.forward(request, response);
}

// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
/**
 * Handles the HTTP <code>GET</code> method.
 *
 * @param request servlet request
 * @param response servlet response
 * @throws ServletException if a servlet-specific error occurs
 * @throws IOException if an I/O error occurs
 */
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    processRequest(request, response);
}

/**
 * Handles the HTTP <code>POST</code> method.
 *
 * @param request servlet request
 * @param response servlet response
 * @throws ServletException if a servlet-specific error occurs
 * @throws IOException if an I/O error occurs
 */
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    processRequest(request, response);
}

/**
 * Returns a short description of the servlet.
 *
 * @return a String containing servlet description
 */
@Override
public String getServletInfo() {
    return "Short description";
}// </editor-fold>
}