servlet mysql 小程序_Servlet页面注册用户的小程序(一)

本实例实现用userreg.jsp页面中的表单提交注册请求,把注册信息提交给regservlet写入数据库并且查询新用户显示出来。

一、准备工作。

1.jdbc数据驱动开发包mysql-connector-java-5.1.26-bin.jar,拷贝并放置在WEB-INF下的lib中。

2.创建数据库user.

0cba87a536035bca1af6972db38db071.png

3.创建Web Project工程。

二、新建页面userreg.jsp.

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

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.

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

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.

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

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.使用模版创建。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

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的节点不正确,应该按照代码中修改一下。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

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

七、一切就绪,重启服务,加载页面。

ae50d1713bcbbd12297a4eda5e017cab.png

在这里为了测试方便,没有使用密码框,可以改过来。

现在输入新的信息,把两次的密码填写不一致。

3d21cb8436cf618cb874fcfab63aba4e.png

点击"注册"后会弹出提示。

782ab4f8ffb51ac1d77287fa08ebb5cb.png

点击确定后两个密码输入框会被清空,光标置于密码框内,要求重新输入。我们重新输入两个一样的密码之后,再点击"注册"。会跳转到信息显示页面。

3b650f41383e425799d1112cea27d2d8.png

实际上这个页面现实的内容是添加完注册信息之后又从数据库中查询得到的。便于我们实现在用户注册之后立即自动登录。

八、查看此时的数据库user。

最后一条就是我们刚刚注册添加的用户数据。

379b601d7ab99efd805695b1b5fc6a89.png

九、整个项目的结构是这样的。

f3b39a45066336bbb01e02c3a5a56026.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值