错误原因:
1.Java web 的Servlet类没有配置好,并且缺少一个 Dao类(Date Access Object通常用于操作数据库的).
2.代码的某些名称错误,导致数据库数据存储错误。
添加的Dao类如下:
1 packagecom.Dao;2
3 importjava.sql.Connection;4 importjava.sql.PreparedStatement;5 importjava.sql.ResultSet;6 importjava.sql.SQLException;7 importjava.sql.Statement;8 importjava.util.ArrayList;9 importjava.util.List;10 importcom.DBUtil.UserDBUtil;11
12 importjdk.nashorn.internal.ir.RuntimeNode.Request;13
14 public classDao {15 public booleanadd(String username,String password,String name,String studentID,String sex,String phone,String email,String xueyuan,String xi,String classes,String year,String shengyuandi,String beizhu) {16 String sql = "insert into use02 values ('" + username + "','" + password +"','" + name +"','" +studentID +"','" + sex +"','" +phone +"','" + email +"','" +xueyuan +"','"+xi +"','"+classes +"','"+year+"','"+shengyuandi +"','"+beizhu +"')";17 //创建数据库链接
18 Connection conn =UserDBUtil.getConnection();19 Statement state = null;20 boolean f = false;21 int a = 0;22 try{23 state =conn.createStatement();24 a =state.executeUpdate(sql);25 } catch(Exception e) {26 e.printStackTrace();27 } finally{28 //关闭z 连接29 //DB.close(state, conn);
30 }31
32 if (a > 0) {33 f = true;34 }35 returnf;36 }37 }
修改后的Servlet代码如下:
1 importjava.io.IOException;2
3
4 importjavax.servlet.ServletException;5 importjavax.servlet.ServletRequest;6 importjavax.servlet.annotation.WebServlet;7 importjavax.servlet.http.HttpServlet;8 importjavax.servlet.http.HttpServletRequest;9 importjavax.servlet.http.HttpServletResponse;10
11 import com.Dao.*;12 import com.DBUtil.*;13
14 /**
15 * Servlet implementation class UserServlet16 */
17 @WebServlet("/AddServlet")18 public class AddServlet extendsHttpServlet {19 private static final long serialVersionUID = 1L;20
21 /**
22 *@seeHttpServlet#HttpServlet()23 */
24 publicAddServlet() {25 super();26 //TODO Auto-generated constructor stub
27 }28 Dao dao = newDao();29
30 protected void service(HttpServletRequest req, HttpServletResponse resp) throwsServletException, IOException {31 req.setCharacterEncoding("utf-8");32 String method = req.getParameter("method");33 if ("add".equals(method)) {34
35 add(req, resp);36 System.out.println("!!!");37 }38 }39 private void add(HttpServletRequest req, HttpServletResponse resp) throwsIOException, ServletException {40 //TODO Auto-generated method stub
41 String username = req.getParameter("username");42 String password = req.getParameter("password");43 String name = req.getParameter("name");44 String studentID = req.getParameter("studentID");45 String sex = req.getParameter("sex");46 String phone = req.getParameter("phone");47 String email = req.getParameter("email");48 String xueyuan = req.getParameter("xueyuan");49 String xi = req.getParameter("xi");50 String classes = req.getParameter("classes");51 String year = req.getParameter("year");52 String shengyuandi = req.getParameter("shengyuandi");53 String beizhu = req.getParameter("beizhu");54 if(dao.add(username,password,name,studentID,sex,phone,email,xueyuan,xi,classes,year,shengyuandi,beizhu)) {55 req.setAttribute("message", "注册成功!");56 req.getRequestDispatcher("index1.jsp").forward(req, resp);57 return;58 }else{59 req.setAttribute("message", "账号重复,请重新输入!");60 req.getRequestDispatcher("index1.jsp").forward(req, resp);61 return;62 }63 //req.getRequestDispatcher("index1.jsp").forward(req, resp);
64 }65
66
67 }
bean类
1 public classUser {2 privateString username;3 privateString password;4 privateString name;5 privateString studentID;6 privateString sex;7 privateString phone;8 privateString email;9 privateString xueyuan;10 privateString xi;11 privateString classes;12 privateString year;13 privateString shengyuandi;14 privateString beizhu;15 publicString getUsername() {16 returnusername;17 }18 public voidsetUsername(String username) {19 this.username =username;20 }21 publicString getPassword() {22 returnpassword;23 }24 public voidsetPassword(String password) {25 this.password =password;26 }27 publicString getName() {28 returnname;29 }30 public voidsetName(String name) {31 this.name =name;32 }33 publicString getStudentID() {34 returnstudentID;35 }36 public voidsetStudentID(String studentID) {37 this.studentID =studentID;38 }39 publicString getSex() {40 returnsex;41 }42 public voidsetSex(String sex) {43 this.sex =sex;44 }45 publicString getPhone() {46 returnphone;47 }48 public voidsetPhone(String phone) {49 this.phone =phone;50 }51 publicString getEmail() {52 returnemail;53 }54 public voidsetEmail(String email) {55 this.email =email;56 }57 publicString getXueyuan() {58 returnxueyuan;59 }60 public voidsetXueyuan(String xueyuan) {61 this.xueyuan =xueyuan;62 }63 publicString getXi() {64 returnxi;65 }66 public voidsetXi(String xi) {67 this.xi =xi;68 }69 publicString getClasses() {70 returnclasses;71 }72 public voidsetClasses(String classes) {73 this.classes =classes;74 }75 publicString getYear() {76 returnyear;77 }78 public voidsetYear(String year) {79 this.year =year;80 }81 publicString getShengyuandi() {82 returnshengyuandi;83 }84 public voidsetShengyuandi(String shengyuandi) {85 this.shengyuandi =shengyuandi;86 }87 publicString getBeizhu() {88 returnbeizhu;89 }90 public voidsetBeizhu(String beizhu) {91 this.beizhu =beizhu;92 }93 publicUser(String username, String password, String name, String studentID, String sex, String phone, String email,94 String xueyuan, String xi, String classes, String year, String shengyuandi, String beizhu) {95 super();96 this.username =username;97 this.password =password;98 this.name =name;99 this.studentID =studentID;100 this.sex =sex;101 this.phone =phone;102 this.email =email;103 this.xueyuan =xueyuan;104 this.xi =xi;105 this.classes =classes;106 this.year =year;107 this.shengyuandi =shengyuandi;108 this.beizhu =beizhu;109 }110
111
112
113 }
数据库连接程序:
1 importjava.sql.Connection;2
3 importjava.sql.DriverManager;4 //import java.sql.ResultSet;
5 importjava.sql.SQLException;6 //import java.sql.Statement;
7
8 public classUserDBUtil {9 staticConnection con;10 public staticConnection getConnection() {11 try{12 Class.forName("com.mysql.cj.jdbc.Driver");13 System.out.println("数据库驱动加载成功");14 } catch(ClassNotFoundException e) {15 //TODO Auto-generated catch block
16 e.printStackTrace();17 }18
19 try{20 con=DriverManager.getConnection("jdbc:mysql://localhost:3306/user?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B88&serverTimezone=GMT%2B8&useSSL=false","root","101032");21 System.out.println("数据库链接成功!");22 } catch(SQLException e) {23 //TODO Auto-generated catch block
24 e.printStackTrace();25 }26
27 returncon;28 }29
30 public static voidmain(String[] args) {31 UserDBUtil c=newUserDBUtil();32 c.getConnection();33
34 }
jsp 页面源代码实现:
1
2 pageEncoding="UTF-8"%>
3
4
5
6
7
用户注册8
9
10
11
12
13
14
15
16 登陆账号
17
18
19
20 登陆密码
21
22
23
24 姓名
25
26
27
28 学号
29
30
31
32 性别
33 男34 35 女36
37
38
39
40
41
42
43
44
45
46 手机号
47
48
49
50 邮箱
51
52
53
54 所在学院:
55
56
57
58 所在系:
59
60
61
62 所在班级:
63
64
65
66
67 入学年份(届):
68
69 2014
70 2015
71 2016
72 2017
73 2018
74 2019
75
76
77
78 生源地:
79
80
81
82 备注:
83
84
85
86
87
88
89
90
91
92
93
94 //正则表达式
95 function check(form){96
97 if(form.username.value.length<6 || form.username.value.length>12 || new RegExp("[^0-9a-zA-Z]").test(form.username.value)){98 alert("登陆账号必须由6-12位英文字符或数字组成!");99 form.user.focus();100 return false;101 }102 if(new RegExp("[^a-zA-Z]").test(form.username.value.substring(0,1))){103 alert("登陆账号必须以英文字母开头!");104 form.user.focus();105 return false;106 }107 if(form.password.value.length <= 8 || new RegExp("[^0-9a-zA-Z]").test(form.password.value)){108 alert("密码必须由八位以上字母、数字组成!");109 form.phone.focus();110 return false;111 }112 if(form.studentID.value.length != 8 || new RegExp("[^0-9]").test(form.studentID.value)){113 alert("请输入八位学号!");114 form.phone.focus();115 return false;116 }117
118 if(form.phone.value.length != 11 || new RegExp("[^0-9]").test(form.phone.value)){119 alert("手机号请输入11位数字!");120 form.phone.focus();121 return false;122 }123
124 //以数字字母开头,中间可以是多个数字字母或下划线;然后是“@”;然后是数字字母;然后是“.”;最后是2-4个字母结尾
125 var regex = /^([a-zA-Z]|[0-9])(\w|\-)+@[a-zA-Z0-9]+\.([a-zA-Z]{2,4})$/;126 if(!regex.test(form.email.value)){127 alert("邮箱格式错误!");128 form.email.focus();129 return false;130 }131 return true;132 }133
134
135
136
数据库存储界面:
对于Java web数据库连接的理解:
Java类:
1.servlet 类 处理从前端接受的信息,即jsp 与数据库连接的接口
2.DBUtil 类 加载数据库驱动, 建立对数据库的连接。
3.Dao 类 实现对数据库的增删改查
4.Bean 类 存储信息的基础类
5.在lib目录下导入需要的jar的包
6. jsp 实现界面。
本人目前处于初学阶段,代码大部分都是对模板进行修改,没有完全理解,仍旧有许多需要学习的地方。
数据库的JDBC桥接:
面向对象的应用程序接口,制定了统一的访问各种关系型数据库的标准接口。
JDBC任务:
1.与数据库建立连接
2.向数据库发生sql语句
3.处理从数据库返回的结果
以下是之前的错误代码:
https://www.cnblogs.com/cxy0210/p/11715924.html
以上代码如有错误,敬请指正,感激不尽。