本实例实现用userreg.jsp页面中的表单提交注册请求,把注册信息提交给regservlet写入数据库并且查询新用户显示出来。
一、准备工作。
1.jdbc数据驱动开发包mysql-connector-java-5.1.26-bin.jar,拷贝并放置在WEB-INF下的lib中。
2.创建数据库user.
3.创建Web Project工程。
二、新建页面userreg.jsp.
1
2
3
4
5
6
7
我的userreg.jsp页面8
9
10
11
12
13
14
用户名:15
密码:16
验证密码:17
邮箱:18
19
20
21
22
23
24
25 varpassword=document.getElementById("password");26 varconfirm=document.getElementById("confirm");27 /*验证两次输入的密码是否一致*/
28 functioncheck(){29 if(password.value!=confirm.value){30 alert("两次输入密码不一致,请检查后重新输入");31 password.value="";32 confirm.value="";33 password.focus();34 }else{35 document.forms[0].submit();36 }37 }38
39
40
View Code
javascript中的代码函数用于在点击"注册"后验证两次的密码输入是否一致。至于"清空"按钮事件响应可以参考以上代码添加。
三、创建注册用户数据封装类regedUser.
1 packagecom.kaly.data;2
3 public classregedUser {4 private int ID;//用户ID
5 private String name;//用户名
6 private String nickName;//用户昵称
7 private String email;//电子邮箱
8
9 publicregedUser() {10
11 }12
13 public regedUser(intiD, String name, String nickName, String email) {14 super();15 ID =iD;16 this.name =name;17 this.nickName =nickName;18 this.email =email;19 }20
21 public void setUserData(intiD, String name, String nickName, String email) {22 ID =iD;23 this.name =name;24 this.nickName =nickName;25 this.email =email;26 }27
28 public intgetID() {29 returnID;30 }31
32 public void setID(intiD) {33 ID =iD;34 }35
36 publicString getName() {37 returnname;38 }39
40 public voidsetName(String name) {41 this.name =name;42 }43
44 publicString getNickName() {45 returnnickName;46 }47
48 public voidsetNickName(String nickName) {49 this.nickName =nickName;50 }51
52 publicString getEmail() {53 returnemail;54 }55
56 public voidsetEmail(String email) {57 this.email =email;58 }59
60 @Override61 publicString toString() {62 return "regedUser [ID=" + ID + ", name=" + name + ", nickName="
63 + nickName + ", email=" + email + "]";64 }65
66 }
View Code
四、创建数据库连接工具类GetData.
1 packagecom.kaly.data;2
3 importjava.sql.Connection;4 importjava.sql.DriverManager;5 importjava.sql.SQLException;6
7 public classGetData {8 //jdbc驱动类名
9 String driverStr="com.mysql.jdbc.Driver";10 //数据库url
11 String dataStr="jdbc:mysql://192.168.2.100:3306/userinfo";12 //访问数据库的用户名
13 String username="root";14 //访问数据库的密码
15 String password="admin";16 //数据库连接对象
17 privateConnection conn;18 //构造方法
19 publicGetData(){20 try{21 //加载驱动类
22 Class.forName(driverStr);23 } catch(ClassNotFoundException e) {24 e.printStackTrace();25 }26 }27 //获得数据库连接对象的方法
28 publicConnection getConnection(){29
30 try{31 conn =(Connection) DriverManager.getConnection(dataStr,username,password);32 } catch(SQLException e) {33 e.printStackTrace();34 }35 returnconn;36 }37 //关闭数据库连接
38 public voidclose(){39 if (conn!=null) {40 try{41 conn.close();42 } catch(SQLException e) {43 e.printStackTrace();44 }45 }46 }47 }
View Code
五、创建Servlet处理类regservlet.使用模版创建。
1 packagecom.kaly.servlet;2
3 importjava.io.IOException;4 importjava.io.PrintWriter;5 importjava.sql.Connection;6 importjava.sql.PreparedStatement;7 importjava.sql.ResultSet;8 importjava.sql.SQLException;9
10 importjavax.servlet.ServletException;11 importjavax.servlet.http.HttpServlet;12 importjavax.servlet.http.HttpServletRequest;13 importjavax.servlet.http.HttpServletResponse;14
15 importcom.kaly.data.GetData;16 importcom.kaly.data.regedUser;17
18 public class regservlet extendsHttpServlet {19
20 public voiddoGet(HttpServletRequest request, HttpServletResponse response)21 throwsServletException, IOException {22 doPost(request, response);23 }24
25 public voiddoPost(HttpServletRequest request, HttpServletResponse response)26 throwsServletException, IOException {27 request.setCharacterEncoding("utf-8");28 response.setCharacterEncoding("utf-8");29 response.setContentType("text/html);charset=utf-8");30 //上面这一句解决在使用PrintWriter输出信息时的中文乱码问题31 //获取表单请求的注册信息
32 String regName=request.getParameter("name");33 String regPwd=request.getParameter("password");34 String regEmail=request.getParameter("email");35
36 GetData data=new GetData();//实例化GetData对象
37 Connection connection=data.getConnection();//从data获得数据库连接对象
38 regedUser user=new regedUser();//创建用户数据封装对象
39 ResultSet rs;40 //下面用来把注册信息添加到数据表
41 try{42 PreparedStatement pStatement=connection.prepareStatement("insert into user(username,password,nickname,info) values(?,?,?,?)");43 pStatement.setString(1, regName);44 pStatement.setString(2, regPwd);45 pStatement.setString(3, "新用户"+regName);//随机生成一个昵称,可以用专用的程序进行修改
46 pStatement.setString(4, regEmail);//没有更改数据库,所以把email写入到info字段
47 pStatement.executeUpdate();//这里和查询时不一样
48 pStatement.close();49 } catch(SQLException e) {50 e.printStackTrace();51 }52 //下面用来将刚注册的用户数据封装起来用于显示
53 try{54 PreparedStatement pStatement=connection.prepareStatement("select * from user where username=?");55 pStatement.setString(1, regName);56 rs=pStatement.executeQuery();57 while(rs.next()){58 user.setUserData(rs.getInt(1), rs.getString(2), rs.getString(4), rs.getString(5));59 }60 } catch(SQLException e) {61 e.printStackTrace();62 }63 data.close();64 //用PrintWriter显示注册信息
65 PrintWriter pw=response.getWriter();66 pw.print("注册用户ID为:"+user.getID()+"
");67 pw.print("注册用户名为:"+user.getName()+"
");68 pw.print("用户昵称是:"+user.getNickName()+"
");69 pw.print("用户邮箱地址:"+user.getEmail()+"
");70 pw.flush();71 pw.close();72 }73
74 }
View Code
六、修改web.xml.
多次证明,模版自动生成的web.xml配置文件中,关于servlet的节点不正确,应该按照代码中修改一下。
1 <?xml version="1.0" encoding="UTF-8"?>
2
3 xmlns="http://java.sun.com/xml/ns/javaee"
4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
6
7 This is the description of my J2EE component
8 This is the display name of my J2EE component
9 loginserv
10 com.kaly.servlet.loginserv
11
12
13 This is the description of my J2EE component
14 This is the display name of my J2EE component
15 regservlet
16 com.kaly.servlet.regservlet
17
18
19
20
21 loginserv
22 /loginserv
23
24
25 regservlet
26 /regservlet
27
28
29
View Code
七、一切就绪,重启服务,加载页面。
在这里为了测试方便,没有使用密码框,可以改过来。
现在输入新的信息,把两次的密码填写不一致。
点击"注册"后会弹出提示。
点击确定后两个密码输入框会被清空,光标置于密码框内,要求重新输入。我们重新输入两个一样的密码之后,再点击"注册"。会跳转到信息显示页面。
实际上这个页面现实的内容是添加完注册信息之后又从数据库中查询得到的。便于我们实现在用户注册之后立即自动登录。
八、查看此时的数据库user。
最后一条就是我们刚刚注册添加的用户数据。
九、整个项目的结构是这样的。