Я создал форму jsp и сервлет, чтобы заполнить базу данных в mysql с помощью tomcat, но когда я нажимаю кнопку «Отправить» для передачи значений в базу данных, она показывает сообщение о том, что были затронуты 0 строк в таблице. В журнале сервера отображается исключение нулевого указателя. Я добавил MySQL JDBC драйвер, а также JSTL 1.2.2 в библиотеки. Я создал два исключенных класса java для установления соединения db и выполнения запросов.Не удается заполнить базу данных через сервлет
Вот код servelet:
public class SubmitUser extends HttpServlet {
private DbUpdate dbup = new DbUpdate();
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
String profession = request.getParameter("profession");
String features = request.getParameter("features");
String sql = "INSERT INTO test values('profession','features')";
int i = dbup.insertValues(sql);
Вот файл DbUpdate.java, который содержит выполнение запроса
public class DbUpdate {
private Statement st;
private int i;
private Connection c;
private DbConnection dbcon = new DbConnection();
public int insertValues(String sql){
try {
c = dbcon.connectDB();
Statement st = c.createStatement();
System.out.println("connected");
i = st.executeUpdate(sql);
} catch (SQLException ex) {
Logger.getLogger(DbConnection.class.getName()).log(Level.SEVERE, null, ex);
}
return i;
}
public static void main (String[] args){
//DbConnection dbcon =new DbConnection();
//dbcon.connectDB();
DbUpdate dbup = new DbUpdate();
}
}
Наконец файл DbConnection.java который установить соединение
public class DbConnection {
private String driver = "com.mysql.jdbc.Driver";
private String url = "jdbc:mysql://localhost:3306/online_feedback";
private Connection con = null;
private Statement st;
//private int i;
public Connection connectDB(){
try {
Class.forName(driver);
Connection con = DriverManager.getConnection(url, "root", "");
System.out.println("Conn obj :::" + con);
} catch (ClassNotFoundException ex) {
Logger.getLogger(DbConnection.class.getName()).log(Level.SEVERE, null, ex);
} catch (SQLException ex) {
Logger.getLogger(DbConnection.class.getName()).log(Level.SEVERE, null, ex);
}
return con;
}
public static void main (String []args){
DbConnection db = new DbConnection();
db.connectDB();
}
}
Я не могу понять, что пошло не так
Заранее спасибо
Это то, что я получаю в Servlet войти
SEVERE: Servlet.service() for servlet [SubmitUser] in context with path [/Feedback] threw exception
java.lang.NullPointerException
\t at feedback.DbUpdate.insertValues(DbUpdate.java:32)
\t at feedback.SubmitUser.processRequest(SubmitUser.java:76)
\t at feedback.SubmitUser.doGet(SubmitUser.java:120)
\t at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
\t at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
\t at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
\t at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
\t at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
\t at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
\t at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
\t at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
\t at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
\t at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
\t at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
\t at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
\t at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
\t at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
\t at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
\t at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
\t at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
\t at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
\t at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
\t at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
\t at java.lang.Thread.run(Thread.java:745)
SQL-запрос вы написали неправильно. – sumanta
Пожалуйста, покажите NullPointerException stacktrace. – Jason
Вам не нужен 'public static void main()' в каждом классе. Поскольку они не исполняются. – gprathour