Servlet页面注册用户的小程序(一)

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

一、准备工作。

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

2.创建数据库user.

3.创建Web Project工程。

二、新建页面userreg.jsp.

 1 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
 2 <%request.setCharacterEncoding("utf-8"); %>
 3 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 4 <html>
 5   <head>
 6     <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
 7     <title>我的userreg.jsp页面</title>
 8   </head>
 9
10   <body>
11     <!-- 此处才是重要代码 -->
12     <form name="userregfrm" action="regservlet" method="post">
13         <table>
14             <tr><td align="right">用户名:</td><td><input type="text" name="name" id="name"value="zhangsanfeng"></td></tr>
15             <tr><td align="right">密码:</td><td><input type="text" name="password" id="password" value="mm123456"></td></tr>
16             <tr><td align="right">验证密码:</td><td><input type="text" name="confirm" id="confirm" value="mm123456"></td></tr>
17             <tr><td align="right">邮箱:</td><td><input type="text" name="email" id="email" value="[email protected]"></td></tr>
18             <tr><td align="center" colspan="2"><input type="button" value="注册" onclick="check()">&nbsp;&nbsp;&nbsp;&nbsp;<input name="clear" type="button" value="清空"></td></tr>
19         </table>
20     </form>
21     <!-- 此处才是重要代码 -->
22   </body>
23       <!-- 此处才是重要代码 -->
24   <script type="text/javascript">
25   var password=document.getElementById("password");
26   var confirm=document.getElementById("confirm");
27   /* 验证两次输入的密码是否一致 */
28       function check(){
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   </script>
39       <!-- 此处才是重要代码 -->
40 </html>

javascript中的代码函数用于在点击"注册"后验证两次的密码输入是否一致。至于"清空"按钮事件响应可以参考以上代码添加。
三、创建注册用户数据封装类regedUser.

 1 package com.kaly.data;
 2
 3 public class regedUser {
 4     private int ID;// 用户ID
 5     private String name;// 用户名
 6     private String nickName;// 用户昵称
 7     private String email;// 电子邮箱
 8
 9     public regedUser() {
10
11     }
12
13     public regedUser(int iD, 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(int iD, 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 int getID() {
29         return ID;
30     }
31
32     public void setID(int iD) {
33         ID = iD;
34     }
35
36     public String getName() {
37         return name;
38     }
39
40     public void setName(String name) {
41         this.name = name;
42     }
43
44     public String getNickName() {
45         return nickName;
46     }
47
48     public void setNickName(String nickName) {
49         this.nickName = nickName;
50     }
51
52     public String getEmail() {
53         return email;
54     }
55
56     public void setEmail(String email) {
57         this.email = email;
58     }
59
60     @Override
61     public String toString() {
62         return "regedUser [ID=" + ID + ", name=" + name + ", nickName="
63                 + nickName + ", email=" + email + "]";
64     }
65
66 }

四、创建数据库连接工具类GetData.

 1 package com.kaly.data;
 2
 3 import java.sql.Connection;
 4 import java.sql.DriverManager;
 5 import java.sql.SQLException;
 6
 7 public class GetData {
 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     private Connection conn;
18     //构造方法
19     public GetData(){
20         try {
21             //加载驱动类
22             Class.forName(driverStr);
23         } catch (ClassNotFoundException e) {
24             e.printStackTrace();
25         }
26     }
27     //获得数据库连接对象的方法
28     public Connection getConnection(){
29
30         try {
31             conn = (Connection) DriverManager.getConnection(dataStr,username,password);
32         } catch (SQLException e) {
33             e.printStackTrace();
34         }
35         return conn;
36     }
37     //关闭数据库连接
38     public void close(){
39         if (conn!=null) {
40             try {
41                 conn.close();
42             } catch (SQLException e) {
43                 e.printStackTrace();
44             }
45         }
46     }
47 }

五、创建Servlet处理类regservlet.使用模版创建。

 1 package com.kaly.servlet;
 2
 3 import java.io.IOException;
 4 import java.io.PrintWriter;
 5 import java.sql.Connection;
 6 import java.sql.PreparedStatement;
 7 import java.sql.ResultSet;
 8 import java.sql.SQLException;
 9
10 import javax.servlet.ServletException;
11 import javax.servlet.http.HttpServlet;
12 import javax.servlet.http.HttpServletRequest;
13 import javax.servlet.http.HttpServletResponse;
14
15 import com.kaly.data.GetData;
16 import com.kaly.data.regedUser;
17
18 public class regservlet extends HttpServlet {
19
20     public void doGet(HttpServletRequest request, HttpServletResponse response)
21             throws ServletException, IOException {
22         doPost(request, response);
23     }
24
25     public void doPost(HttpServletRequest request, HttpServletResponse response)
26             throws ServletException, 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()+"<br>");
67         pw.print("注册用户名为:"+user.getName()+"<br>");
68         pw.print("用户昵称是:"+user.getNickName()+"<br>");
69         pw.print("用户邮箱地址:"+user.getEmail()+"<br>");
70         pw.flush();
71         pw.close();
72     }
73
74 }

六、修改web.xml.

多次证明,模版自动生成的web.xml配置文件中,关于servlet的<url-pattern>节点不正确,应该按照代码中修改一下。

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app version="3.0"
 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   <servlet>
 7     <description>This is the description of my J2EE component</description>
 8     <display-name>This is the display name of my J2EE component</display-name>
 9     <servlet-name>loginserv</servlet-name>
10     <servlet-class>com.kaly.servlet.loginserv</servlet-class>
11   </servlet>
12   <servlet>
13     <description>This is the description of my J2EE component</description>
14     <display-name>This is the display name of my J2EE component</display-name>
15     <servlet-name>regservlet</servlet-name>
16     <servlet-class>com.kaly.servlet.regservlet</servlet-class>
17   </servlet>
18
19
20   <servlet-mapping>
21     <servlet-name>loginserv</servlet-name>
22     <url-pattern>/loginserv</url-pattern>
23   </servlet-mapping>
24   <servlet-mapping>
25     <servlet-name>regservlet</servlet-name>
26     <url-pattern>/regservlet</url-pattern>
27   </servlet-mapping>
28
29 </web-app>

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

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

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

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

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

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

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

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

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

时间: 2024-11-07 20:35:18

Servlet页面注册用户的小程序(一)的相关文章

公 司,如何注册开发,微信小程序?

公司如何注册开发微信小程序? 第一步:微信小程序的入口 可能很多人第一印象会在微信公众号的后台寻找小程序,如果是这样那就大错特错.小程序登录的入口还是微信管理后台的地址https://mp.weixin.qq.com/,第二步:注册信息填写 注册信息是和微信公众号注册流程一样,一个邮箱只能注册一次.已经注册过微信公众号的邮箱是不可以再注册的. 第三步:账号信息的填写 首先是账号基本信息的填写:包括机构的名称,营业执照号或是三证合一统一社会信用代码. 其次是验证方式:小程序注册于微信公众号也是两种

Servlet页面登录的数据库验证程序(一)

一.基本思想是MVC模式,一个登录页面login.jsp,一个服务器处理程序Servlet.java,一个MySql数据库userinfo. 另外还有相关的数据封装类User和数据库连接类GetData,如果要加入密码验证,可能还要一个错误处理页面error.jsp.在这个小实例中,为了思路简单一点,暂时没有密码验证. 使用的工具是MyEclipse2015. 由于设计jdbc数据库的应用,需要准备mysql-connector-java-5.1.26-bin.jar开发包,拷贝到 WEB_IN

类似tabBar的切换页面效果(微信小程序)

微信小程序开发,我们经常遇到类似tabBar的页面切换效果:                  这种效果,微信小程序开发应该如何实现呢?项目源码: 页面切换-横向: 页面切换-竖向: 页面切换的需求是: 当点击任何一个标题时,选中标题的状态区别显示,页面切换到标题对应的页面:当滑动页面时,页面对应的标题呈现选中状态. 代码实现的逻辑是: 定义变量selectedTitle.标题的id.样式title-selected(当id和selectedTitle相等时).当点击任何一个标题时,将选中标题的

微信小程序如何把后台返回的多条json数据的时间戳转换为时间放到页面上 (微信小程序 时间戳转换为时间)

小程序端 在utils文件夹下的util.js写入 //时间戳转换时间   function toDate(number){   var n=number * 1000;   var date = new Date(n);   var Y = date.getFullYear() + '/';   var M = (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1) + '/';   var D = date

公司如何注册开发微信小程序?

第一步:微信小程序的入口 可能很多人第一印象会在微信公众号的后台寻找小程序,如果是这样那就大错特错.小程序登录的入口还是微信管理后台的地址https://mp.weixin.qq.com/,第二步:注册信息填写 注册信息是和微信公众号注册流程一样,一个邮箱只能注册一次.已经注册过微信公众号的邮箱是不可以再注册的. 第三步:账号信息的填写 首先是账号基本信息的填写:包括机构的名称,营业执照号或是三证合一统一社会信用代码. 其次是验证方式:小程序注册于微信公众号也是两种验证方式,建议大家选对公账户打

生成指定页面带参数的小程序码及踩坑

//获取accessToken let that = this; const APP_ID = 'yourapp_id';// 小程序appid const APP_SECRET = 'yourapp_secreat';// 小程序app_secret let access_token = ''; wx.request({ url:"https://api.weixin.qq.com/cgi-bin/token", data: { grant_type: 'client_credent

c#后台生成指定页面带参数的小程序码

出于安全考虑,小程序禁用了直接在小程序端调用api.weixin.qq.com的功能,只能通过后台来调用,以下是实现的过程. 这是官方的文档https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/qr-code/wxacode.getUnlimited.html: 1.首先获取accesstoken public string GetAccessToken(string strAPPID, string strS

python后端注册登录验证小程序

一共四个文件 实现的功能是:注册账号,写到mysql数据库user(id,name,password,createtime)表中,password字段为使用md5加密后密码,并实现密码验证登录. 先上效果图: 1.注册 2.登录验证 3.数据库 说明:数据中24,25是只加密用户输入的密码字符串,18,19,26,27是加密的name,password,createtime三个字段内容的组合字符,20到23的没有加密. 1.配置文件config.py #mysql info for host,u

新增四则运算用户选择功能小程序

一 设计思想 1.因为要设定许多可控参数,可以把这些参数构成一个数组,也就是一个参数集,然后对每个参数分情况进行设定: 2.数组中包括题目数量.乘除控制.数值范围.分数控制.正负控制.打印列数共6个元素: 3.对于控制变量,可以设置为1和0 控制: 二 程序代码 #include "stdafx.h" #include "stdlib.h" //调用其中随机函数 #include "iostream.h" #include "time.