Java 使用servlet将JSP表单转换为JDBC
我陷入了一些将JSP表单转换为JDBC的代码中。 我在编码方面相对较新,但在互联网上搜索了很长时间后,我仍然没有解决一个问题。 我需要在我的jsp表单中将数据类型“插入”到一个表中 JSP: SQL: 我的问题是它没有将其插入数据库,而根据我新获得的经验,我不知道为什么。我查了几个例子,但它们都像我的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
- 亚历山大
@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>
}