html file
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>hi</title>
</head>
<body>
<form action="Try.java" method="get" >
name: <input type="text" name="name" ></input>
<input type="submit" name="submit" value="submit" style="color: blue">
</form>
</body>
</html>
servlet code
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Try extends HttpServlet {
private static final long
serialVersionUID = 1L;
Connection con;
Statement stm;
public Try() {
super();
}
protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException,
IOException {
res.setContentType("text/html");
PrintWriter out=res.getWriter();
try {
String pname=req.getParameter("name");
Class.forName("oracle.jdbc.driver.OracleDriver");
System.out.println("driver loaded");
String url="jdbc:oracle:thin:@an-PC:1525/orclg";
Connection
con=DriverManager.getConnection(url,"user","pass");
out.println("connection"+con);
Statement stm=con.createStatement();
String sql="Insert into name(names)values('"+pname+"')";
stm.executeUpdate(sql);
System.out.println("Record inserted.....");
con.close();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace(); }
}
protected void doPost(HttpServletRequest request,HttpServletResponse response) throws
ServletException, IOException {
}
}
following are the Exceptions
java.lang.ClassNotFoundException:oracle.jdbc.driver.OracleDriver在org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)在org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)在java.lang.Class.forName0(本地方法)在java.lang.Class.forName(Class.java:259)在Try.doGet(Try.java:41)在javax.servlet.http.HttpServlet.service(HttpServlet.java:617)在javax.servlet.http.HttpServlet.service(HttpServlet.java:723)在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)在org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)在org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)在org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)在org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)在org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)在org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)在org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)在org.apache.coyote.http11.Http11Protocol $ Http11ConnectionHandler.process(Http11Protocol.java:606)在org.apache.tomcat.util.net.JIoEndpoint $ Worker.run(JIoEndpoint.java:489)在java.lang.Thread.run(Thread.java:745)
您应该学习解释堆栈跟踪。堆栈跟踪的第一行表示Java运行时无法找到类oracle.jdbc.driver.OracleDriver
。这是Oracle JDBC驱动程序类。
因此获得Oracle driver JAR并将其放在Web应用程序的WEB-INF/lib
文件夹中。
虽然:为了防止SQL injection attacks,您永远不要通过字符串操作使用未转义的请求参数创建SQL。请改用准备好的语句。并且不要忘记关闭语句并提交事务。
PreparedStatement stm = con.prepareStatement("insert into name (names) values (?)");
stm.setString(1, pname);
stm.executeUpdate();
con.commit();
stm.close();
这将自动转义引号等字符。另外,您应该在插入之前验证该值(例如,不超过100个字符,具体取决于名称列的长度)。
此声明可能是您的问题:
String sql="Insert into name(names)values("+"'pname')";
我认为引号应如下:
String sql="Insert into name(names)values('"+pname+"')";
java.lang.ClassNotFoundException:oracle.jdbc.driver.OracleDriver,您将OracleDriver添加到库中并再次运行