insert data into database using servlet and jsp in eclipse

java, jsp, mysql, servlets, xml

Solution

Check that `doPost()` method of servlet is called from the jsp form and remove `conn.commit`.

Problem

I am trying to add or insert values into table of database using servlet and jsp and MySQL Workbench as database. These are the following details: 1.> Register.java ``` package register.com; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.sql.*; import javax.servlet.*; /** * Servlet implementation class Register */ @WebServlet("/register") public class Register extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public Register() { super(); // TODO Auto-generated constructor stub } /** * @see Servlet#init(ServletConfig) */ public void init(ServletConfig config) throws ServletException { // TODO Auto-generated method stub } /** * @see HttpServlet#service(HttpServletRequest request, HttpServletResponse response) */ protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub response.setContentType("text/html"); PrintWriter pw = response.getWriter(); //String connectionURL = "jdbc:mysql://127.0.0.1:3306/newData";// newData is the database //Connection connection; Connection conn=null; String url="jdbc:mysql://localhost:3306/"; String dbName="userlogindb"; String driver="com.mysql.jdbc.Driver"; //String dbUserName="root"; //String dbPassword="root"; try{ String Fname = request.getParameter("fname"); String Mname = request.getParameter("mname"); String Lname = request.getParameter("lname"); String Uname = request.getParameter("username"); String Emailid = request.getParameter("emailid"); String Mobno = request.getParameter("mobno"); String Address = request.getParameter("address"); String Password1 = request.getParameter("password1"); String Password2 = request.getParameter("password2"); Class.forName(driver).newInstance(); conn = DriverManager.getConnection(url+dbName,"root", "root"); PreparedStatement pst =(PreparedStatement) conn.prepareStatement("insert into 'userlogindb'.'registerutable'(fname,mname,lname,username,emailid,mobno,address,password1,password2) values(?,?,?,?,?,?,?,?,?)");//try2 is the name of the table pst.setString(1,Fname); pst.setString(2,Mname); pst.setString(3,Lname); pst.setString(4,Uname); pst.setString(5,Emailid); pst.setString(6,Mobno); pst.setString(7,Address); pst.setString(8,Password1); pst.setString(9,Password2); int i = pst.executeUpdate(); conn.commit(); String msg=" "; if(i!=0){ msg="Record has been inserted"; pw.println("<font size='6' color=blue>" + msg + "</font>"); } else{ msg="failed to insert the data"; pw.println("<font size='6' color=blue>" + msg + "</font>"); } pst.close(); } catch (Exception e){ pw.println(e); } } } ``` 2.> index.jsp ``` <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> </head> <body> <form name="registrationform" action="register" method="post"> <p> Enter your first name: <input type="text" name="fname"><br> Enter your middle name: <input type="text" name="mname"><br> Enter your last name: <input type="text" name="lname"><br> </p><br> <p> Enter username: <input type="text" name="username"><br> </p><br> <p> Enter email id: <input type="text" name="emailid"><br> Enter mobile number: <input type="text" name="mobno"><br> Enter address: <textarea rows="5" cols="5" name="address"></textarea><br> </p><br> <p> Enter the password: <input type="password" name="password1"><br> Reenter the password: <input type="password" name="password2"><br> </p><br> <p> <input type="submit"> </p><br> </form> </body> </html> ``` 3.> web.xml ``` <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>RegisterExample</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <servlet> <description>Register Servlet</description> <display-name>Register</display-name> <servlet-name>Register</servlet-name> <servlet-class>register.com.Register</servlet-class> </servlet> <servlet-mapping> <servlet-name>Register</servlet-name> <url-pattern>/register</url-pattern> </servlet-mapping> </web-app> ``` 4.> I have added mysql-connector-java-5.0.8-bin.jar and servlet-api-3.0.jar is anything else needed to add it. I have created a connection to database in Data Source Explorer. When I m compiling or debuging it shows no error. During runtime also there is no error. When I fill in the form and submit it shows only blank screen :( No output is displayed. :( Also in the database values are not updated. Please help me. I m getting hangover with this snippet.

Original source