1.上一篇已经实现了与数据库的连接测试,这一次就实现对用户基本信息的注册功能,,,,,,本次整体构架如下图所示:
2.第一步,创建一个实体类User.java,实现对用户基本信息的封装,如下图所示:
代码如下:
1 packagelin.entity;2
3 public classUser {4
5 //定义的变量6 //与数据库中t_user中定义的名称一致7
8 //用户ID
9 private intid;10 //用户名
11 privateString name;12 //用户密码
13 privateString password;14 //用户邮箱
15 privateString email;16 //获取变量的get和set方法以及toSting方法
17 public intgetId() {18 returnid;19 }20 public void setId(intid) {21 this.id =id;22 }23 publicString getName() {24 returnname;25 }26 public voidsetName(String name) {27 this.name =name;28 }29 publicString getPassword() {30 returnpassword;31 }32 public voidsetPassword(String password) {33 this.password =password;34 }35 publicString getEmail() {36 returnemail;37 }38 public voidsetEmail(String email) {39 this.email =email;40 }41 @Override42 publicString toString() {43 return "User [id=" + id + ", name=" + name + ", password=" + password + ", email=" + email + "]";44 }45
46 }
1 packagelin.entity;2
3 public classUser {4
5 //定义的变量6 //与数据库中t_user中定义的名称一致7
8 //用户ID
9 private intid;10 //用户名
11 privateString name;12 //用户密码
13 privateString password;14 //用户邮箱
15 privateString email;16 //获取变量的get和set方法以及toSting方法
17 public intgetId() {18 returnid;19 }20 public void setId(intid) {21 this.id =id;22 }23 publicString getName() {24 returnname;25 }26 public voidsetName(String name) {27 this.name =name;28 }29 publicString getPassword() {30 returnpassword;31 }32 public voidsetPassword(String password) {33 this.password =password;34 }35 publicString getEmail() {36 returnemail;37 }38 public voidsetEmail(String email) {39 this.email =email;40 }41 @Override42 publicString toString() {43 return "User [id=" + id + ", name=" + name + ", password=" + password + ", email=" + email + "]";44 }45
46 }
View Code
3.第二步:创建一个servlet类,实现对数据库中用户信息的插入、查找等,具体的实现代码如下所示:
1 packagelin.Servlet;2
3 importjava.io.IOException;4 importjava.sql.Connection;5 importjava.sql.PreparedStatement;6 importjava.sql.ResultSet;7 importjava.sql.SQLException;8
9 importjavax.servlet.ServletException;10 importjavax.servlet.annotation.WebServlet;11 importjavax.servlet.http.HttpServlet;12 importjavax.servlet.http.HttpServletRequest;13 importjavax.servlet.http.HttpServletResponse;14
15 importlin.db.DBServlet;16 importlin.entity.User;17
18 /**
19 * Servlet implementation class RegisterServlet20 */
21 /*@WebServlet("/RegisterServlet")*/
22 public class RegisterServlet extendsHttpServlet {23 private static final long serialVersionUID = 1L;24
25 /**
26 *@seeHttpServlet#HttpServlet()27 */
28 publicRegisterServlet() {29 super();30 //TODO Auto-generated constructor stub
31 }32
33 /**
34 *@seeHttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)35 */
36 protected void doGet(HttpServletRequest request, HttpServletResponse response) throwsServletException, IOException {37 //TODO Auto-generated method stub38 //跳转到register.jsp
39 request.getRequestDispatcher("/WEB-INF/page/register.jsp").forward(request, response);40 }41
42 /**
43 *@seeHttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)44 */
45 protected void doPost(HttpServletRequest request, HttpServletResponse response) throwsServletException, IOException {46 //TODO Auto-generated method stub47 //contentType=”text/html;charset=UTF-8”的作用是指定服务器响应给浏览器的编码。
48 /*request.setCharacterEncoding(“UTF-8”)的作用是设置对客户端请求和数据库取值时的编码,49 * 不指定的话使用iso-8859-1。(只解决POST乱码)*/
50 request.setCharacterEncoding("UTF-8");51 response.setContentType("text/html);charset=UTF-8");52
53 System.out.println("注册的用户名是:"+request.getParameter("name"));54
55 //获取实体User中的变量,将变量插入到数据库中,完成注册
56 User user=newUser();57 //获取注册的用户名,"name"要与jsp页面中的变量名一致
58 String name=request.getParameter("name");59 //获取注册的密码
60 String password=request.getParameter("password");61 //获取注册的邮箱
62 String email=request.getParameter("email");63
64 //将获取到的注册信息放入user中
65 user.setName(name);66 user.setPassword(password);67 user.setEmail(email);68
69 try{70 //获取数据库的连接,并将user中的数据插入数据库中71 //查询当前的用户名和邮箱在数据库中是否已经被注册过
72 String sql="select id from t_users where name =? or email=?";73 DBServlet conn=newDBServlet();74 //与数据库获取连接
75 Connection connection=conn.getConn();76 //SQL语句被预编译并存储在PreparedStatement对象中
77 PreparedStatement statement=connection.prepareStatement(sql);78 //将第一个问号的name值添加进去
79 statement.setString(1, name);80 statement.setString(2, email);81 //执行sql语句
82 ResultSet rs=statement.executeQuery();83
84 //判断rs集合中是否为null,为null表示数据库中不存在重复的85 //否则存在重复数据,注册失败
86 if(rs.next())87 {88 System.out.println("注册失败,用户名或者邮箱已经存在,");89 //重新跳转到注册页面
90 request.getRequestDispatcher("/WEB-INF/page/register.jsp").forward(request, response);;91 }92 else
93 {94 String sql1="insert into t_users (name,password,email) values(?,?,?)";95 statement=connection.prepareStatement(sql1);96 statement.setString(1, name);97 statement.setString(2, password);98 statement.setString(3, email);99
100 int result=statement.executeUpdate();101 if(result==1)102 {103 System.out.println("注册成功,欢迎你:"+name);104 request.setAttribute("remind", "注册成功");105 request.getRequestDispatcher("/WEB-INF/page/register.jsp").forward(request, response);106 }107 else
108 {109 System.out.println("注册失败");110 request.getRequestDispatcher("/WEB-INF/page/register.jsp").forward(request, response);111 }112
113 }114
115 //关闭数据库连接
116 rs.close();117 statement.close();118 connection.close();119 } catch(SQLException e) {120 //TODO Auto-generated catch block
121 System.out.println("数据库连接失败");122 e.printStackTrace();123 }124
125 }126
127 }
View Co
1 packagelin.Servlet;2
3 importjava.io.IOException;4 importjava.sql.Connection;5 importjava.sql.PreparedStatement;6 importjava.sql.ResultSet;7 importjava.sql.SQLException;8
9 importjavax.servlet.ServletException;10 importjavax.servlet.annotation.WebServlet;11 importjavax.servlet.http.HttpServlet;12 importjavax.servlet.http.HttpServletRequest;13 importjavax.servlet.http.HttpServletResponse;14
15 importlin.db.DBServlet;16 importlin.entity.User;17
18 /**
19 * Servlet implementation class RegisterServlet20 */
21 /*@WebServlet("/RegisterServlet")*/
22 public class RegisterServlet extendsHttpServlet {23 private static final long serialVersionUID = 1L;24
25 /**
26 *@seeHttpServlet#HttpServlet()27 */
28 publicRegisterServlet() {29 super();30 //TODO Auto-generated constructor stub
31 }32
33 /**
34 *@seeHttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)35 */
36 protected void doGet(HttpServletRequest request, HttpServletResponse response) throwsServletException, IOException {37 //TODO Auto-generated method stub38 //跳转到register.jsp
39 request.getRequestDispatcher("/WEB-INF/page/register.jsp").forward(request, response);40 }41
42 /**
43 *@seeHttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)44 */
45 protected void doPost(HttpServletRequest request, HttpServletResponse response) throwsServletException, IOException {46 //TODO Auto-generated method stub47 //contentType=”text/html;charset=UTF-8”的作用是指定服务器响应给浏览器的编码。
48 /*request.setCharacterEncoding(“UTF-8”)的作用是设置对客户端请求和数据库取值时的编码,49 * 不指定的话使用iso-8859-1。(只解决POST乱码)*/
50 request.setCharacterEncoding("UTF-8");51 response.setContentType("text/html);charset=UTF-8");52
53 System.out.println("注册的用户名是:"+request.getParameter("name"));54
55 //获取实体User中的变量,将变量插入到数据库中,完成注册
56 User user=newUser();57 //获取注册的用户名,"name"要与jsp页面中的变量名一致
58 String name=request.getParameter("name");59 //获取注册的密码
60 String password=request.getParameter("password");61 //获取注册的邮箱
62 String email=request.getParameter("email");63
64 //将获取到的注册信息放入user中
65 user.setName(name);66 user.setPassword(password);67 user.setEmail(email);68
69 try{70 //获取数据库的连接,并将user中的数据插入数据库中71 //查询当前的用户名和邮箱在数据库中是否已经被注册过
72 String sql="select id from t_users where name =? or email=?";73 DBServlet conn=newDBServlet();74 //与数据库获取连接
75 Connection connection=conn.getConn();76 //SQL语句被预编译并存储在PreparedStatement对象中
77 PreparedStatement statement=connection.prepareStatement(sql);78 //将第一个问号的name值添加进去
79 statement.setString(1, name);80 statement.setString(2, email);81 //执行sql语句
82 ResultSet rs=statement.executeQuery();83
84 //判断rs集合中是否为null,为null表示数据库中不存在重复的85 //否则存在重复数据,注册失败
86 if(rs.next())87 {88 System.out.println("注册失败,用户名或者邮箱已经存在,");89 //重新跳转到注册页面
90 request.getRequestDispatcher("/WEB-INF/page/register.jsp").forward(request, response);;91 }92 else
93 {94 String sql1="insert into t_users (name,password,email) values(?,?,?)";95 statement=connection.prepareStatement(sql1);96 statement.setString(1, name);97 statement.setString(2, password);98 statement.setString(3, email);99
100 int result=statement.executeUpdate();101 if(result==1)102 {103 System.out.println("注册成功,欢迎你:"+name);104 request.setAttribute("remind", "注册成功");105 request.getRequestDispatcher("/WEB-INF/page/register.jsp").forward(request, response);106 }107 else
108 {109 System.out.println("注册失败");110 request.getRequestDispatcher("/WEB-INF/page/register.jsp").forward(request, response);111 }112
113 }114
115 //关闭数据库连接
116 rs.close();117 statement.close();118 connection.close();119 } catch(SQLException e) {120 //TODO Auto-generated catch block
121 System.out.println("数据库连接失败");122 e.printStackTrace();123 }124
125 }126
127 }
de
4.在创建Servlet的同时,其配置文件web.xml中要对Servlet进行配置:如下图所示:
1 <?xml version="1.0" encoding="UTF-8"?>
2
3 Test1
4
5 index.html
6 index.htm
7 index.jsp
8 default.html
9 default.htm
10 default.jsp
11
12
13
14 RegisterServlet
15 lin.Servlet.RegisterServlet
16
17
18 RegisterServlet
19 /register
20
24
5.第四步:创建一个register.jsp注册页面,实现前端页面与后端数据的交互
代码如下:
1
2 pageEncoding="UTF-8"%>
3
4
5
6
7
Insert title here
8
9
10
11
${remind}
12
注册页面
13
18
19 登录名:
密码为:
邮箱为:
22 value="注册">
23
24
25
26
6.第五步:在index.jsp中添加下面一句话,在访问该项目时,直接跳转到注册页面:
1
2 pageEncoding="UTF-8"%>
3
4
5
6
7
Insert title here
8
9
10
11
12
7.第六步:进行测试啦啦啦------(运行tomcat,在浏览器中输入:http://localhost:8080/Test1)
点击回车:
输入用户名、密码、邮箱(注意:本次的代码并没有对用户名、密码、邮箱进行规范约束)
点击注册,浏览器页面的变化如下所示:
后端控制台输出如下所示:
8.对于用户的注册功能已经使用Servlet完成了实现-----
OK,,,,,,,,,