在eclipse中使用servlet和jsp将数据插入数据库
我试图使用servlet和jsp以及MySQL Workbench作为数据库在数据库表中添加或插入值。 这些是以下细节:
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("" + msg + ""); } else{ msg="failed to insert the data"; pw.println("" + msg + ""); } pst.close(); } catch (Exception e){ pw.println(e); } } }
2.> index.jsp
Insert title here
3.> web.xml
RegisterExample index.html index.htm index.jsp default.html default.htm default.jsp Register Servlet Register Register register.com.Register Register /register
4.> 我添加了mysql-connector-java-5.0.8-bin.jar和servlet-api-3.0.jar是添加它所需的任何东西。 我在Data Source Explorer中创建了与数据库的连接。
当我编译或调试时,它没有显示任何错误。 在运行期间也没有错误。 当我填写表格并提交它只显示空白屏幕:(没有输出显示。:(也在数据库中的值不更新。
请帮帮我。 我用这个片段得到了宿醉。
检查从jsp表单调用servlet的doPost()
方法并删除conn.commit
。
你可以通过放置logger或println()来检查i
的值。 并检查最后关闭db conn。 rest你的代码看起来很好,它应该工作。
同样的问题在PreparedStatement
使用简单语句获取主要问题然后你成功插入记录同样使用如下。
String st2="insert into user(gender,name,address,telephone,fax,email, destination,sdate,edate,Participant,hcategory, Culture,Nature,People,Cities,Beaches,Festivals,username,password) values('"+gender+"','"+name+"','"+address+"','"+phone+"','"+fax+"', '"+email+"','"+desti+"','"+sdate+"','"+edate+"','"+parti+"', '"+hotel+"','"+chk1+"','"+chk2+"','"+chk3+"','"+chk4+"', '"+chk5+"','"+chk6+"','"+user+"','"+password+"')"; int i=stm.executeUpdate(st2);
在您的JSP
line
标记处,尝试此代码
String user = request.getParameter("uname"); out.println(user); String pass = request.getParameter("pass"); out.println(pass); Class.forName( "com.mysql.jdbc.Driver" ); Connection conn = DriverManager.getConnection( "jdbc:mysql://localhost:3306/rental","root","root" ) ; out.println("hello"); Statement st = conn.createStatement(); String sql = "insert into login (user,pass) values('" + user + "','" + pass + "')"; st.executeUpdate(sql);
从Register.java中删除conn.commit
在您的jsp更改操作中:
我有一个类似的问题,并能够通过识别我打算使用哪个JDBC驱动程序来解决它。 就我而言,我正在连接到Oracle数据库。 在创建连接变量之前,我放置了以下语句。
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
- 无法使用可执行文件C:\ Program Files \ Java \ jdk-10.0.1 \ bin \ java.exe确定Java版本
- GWT Editors框架 – ListEditor,删除项目,MVP违规
- 将varargs传递给Spring spEL导致“在com.sun.proxy上找不到方法”
- GXT(Ext-GWT):ContentPanel的布局问题
- MyBatis批量插入/更新Oracle
- Apache POI解析错误
- 如何让Maven在maven.build.timestamp中显示本地时区?
- Webdriver – 如何检查浏览器是否仍然存在或仍然打开?
- Java Fork-Join(Java 8)中出现意外的可伸缩性