Servlet-实现用户的注册功能

时间:2019-09-19
本文章向大家介绍Servlet-实现用户的注册功能,主要包括Servlet-实现用户的注册功能使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

  1.上一篇已经实现了与数据库的连接测试,这一次就实现对用户基本信息的注册功能,,,,,,本次整体构架如下图所示:

  2.第一步,创建一个实体类User.java,实现对用户基本信息的封装,如下图所示:

  代码如下:

 1 package lin.entity;
 2 
 3 public class User {
 4     
 5     //定义的变量
 6     //与数据库中t_user中定义的名称一致
 7     
 8     //用户ID
 9     private int id;
10     //用户名
11     private String name;
12     //用户密码
13     private String password;
14     //用户邮箱
15     private String email;
16     //获取变量的get和set方法以及toSting方法
17     public int getId() {
18         return id;
19     }
20     public void setId(int id) {
21         this.id = id;
22     }
23     public String getName() {
24         return name;
25     }
26     public void setName(String name) {
27         this.name = name;
28     }
29     public String getPassword() {
30         return password;
31     }
32     public void setPassword(String password) {
33         this.password = password;
34     }
35     public String getEmail() {
36         return email;
37     }
38     public void setEmail(String email) {
39         this.email = email;
40     }
41     @Override
42     public String toString() {
43         return "User [id=" + id + ", name=" + name + ", password=" + password + ", email=" + email + "]";
44     }
45 
46 }
 1 package lin.entity;
 2 
 3 public class User {
 4     
 5     //定义的变量
 6     //与数据库中t_user中定义的名称一致
 7     
 8     //用户ID
 9     private int id;
10     //用户名
11     private String name;
12     //用户密码
13     private String password;
14     //用户邮箱
15     private String email;
16     //获取变量的get和set方法以及toSting方法
17     public int getId() {
18         return id;
19     }
20     public void setId(int id) {
21         this.id = id;
22     }
23     public String getName() {
24         return name;
25     }
26     public void setName(String name) {
27         this.name = name;
28     }
29     public String getPassword() {
30         return password;
31     }
32     public void setPassword(String password) {
33         this.password = password;
34     }
35     public String getEmail() {
36         return email;
37     }
38     public void setEmail(String email) {
39         this.email = email;
40     }
41     @Override
42     public String toString() {
43         return "User [id=" + id + ", name=" + name + ", password=" + password + ", email=" + email + "]";
44     }
45 
46 }
View Code

  3.第二步:创建一个servlet类,实现对数据库中用户信息的插入、查找等,具体的实现代码如下所示:

  1 package lin.Servlet;
  2 
  3 import java.io.IOException;
  4 import java.sql.Connection;
  5 import java.sql.PreparedStatement;
  6 import java.sql.ResultSet;
  7 import java.sql.SQLException;
  8 
  9 import javax.servlet.ServletException;
 10 import javax.servlet.annotation.WebServlet;
 11 import javax.servlet.http.HttpServlet;
 12 import javax.servlet.http.HttpServletRequest;
 13 import javax.servlet.http.HttpServletResponse;
 14 
 15 import lin.db.DBServlet;
 16 import lin.entity.User;
 17 
 18 /**
 19  * Servlet implementation class RegisterServlet
 20  */
 21 /*@WebServlet("/RegisterServlet")*/
 22 public class RegisterServlet extends HttpServlet {
 23     private static final long serialVersionUID = 1L;
 24        
 25     /**
 26      * @see HttpServlet#HttpServlet()
 27      */
 28     public RegisterServlet() {
 29         super();
 30         // TODO Auto-generated constructor stub
 31     }
 32 
 33     /**
 34      * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
 35      */
 36     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 37         // TODO Auto-generated method stub
 38         //跳转到register.jsp
 39           request.getRequestDispatcher("/WEB-INF/page/register.jsp").forward(request, response);
 40     }
 41 
 42     /**
 43      * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
 44      */
 45     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 46         // TODO Auto-generated method stub
 47         //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=new User();
 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=new DBServlet();
 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 package lin.Servlet;
  2 
  3 import java.io.IOException;
  4 import java.sql.Connection;
  5 import java.sql.PreparedStatement;
  6 import java.sql.ResultSet;
  7 import java.sql.SQLException;
  8 
  9 import javax.servlet.ServletException;
 10 import javax.servlet.annotation.WebServlet;
 11 import javax.servlet.http.HttpServlet;
 12 import javax.servlet.http.HttpServletRequest;
 13 import javax.servlet.http.HttpServletResponse;
 14 
 15 import lin.db.DBServlet;
 16 import lin.entity.User;
 17 
 18 /**
 19  * Servlet implementation class RegisterServlet
 20  */
 21 /*@WebServlet("/RegisterServlet")*/
 22 public class RegisterServlet extends HttpServlet {
 23     private static final long serialVersionUID = 1L;
 24        
 25     /**
 26      * @see HttpServlet#HttpServlet()
 27      */
 28     public RegisterServlet() {
 29         super();
 30         // TODO Auto-generated constructor stub
 31     }
 32 
 33     /**
 34      * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
 35      */
 36     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 37         // TODO Auto-generated method stub
 38         //跳转到register.jsp
 39           request.getRequestDispatcher("/WEB-INF/page/register.jsp").forward(request, response);
 40     }
 41 
 42     /**
 43      * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
 44      */
 45     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 46         // TODO Auto-generated method stub
 47         //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=new User();
 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=new DBServlet();
 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 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
 3   <display-name>Test1</display-name>
 4   <welcome-file-list>
 5     <welcome-file>index.html</welcome-file>
 6     <welcome-file>index.htm</welcome-file>
 7     <welcome-file>index.jsp</welcome-file>
 8     <welcome-file>default.html</welcome-file>
 9     <welcome-file>default.htm</welcome-file>
10     <welcome-file>default.jsp</welcome-file>
11   </welcome-file-list>
12   
13   <servlet>
14     <servlet-name>RegisterServlet</servlet-name>
15     <servlet-class>lin.Servlet.RegisterServlet</servlet-class>
16   </servlet>
17   <servlet-mapping>
18      <servlet-name>RegisterServlet</servlet-name>
19      <url-pattern>/register</url-pattern>
20   </servlet-mapping>
24 </web-app>

 5.第四步:创建一个register.jsp注册页面,实现前端页面与后端数据的交互

 代码如下:

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 7 <title>Insert title here</title>
 8 </head>
 9 <body>
10 
11    <h2>${remind}</h2>
12     <h1>注册页面</h1>
13     <!-- 使用form表单实现对用户信息的注册,
14            action:规定当提交表单时,向何处发送表单数据。
15                                    此处使用Servlet实现数据的传送,与web.xml中的名称要保持一致
16            method: 表单数据将通过 method 属性附加到 URL 上
17        -->
18     <form action="register" method="post">
19         登录名: <input type="text" name="name"><br /> 密码为: <input
20             type="password" name="password"><br /> 邮箱为: <input
21             type="text" name="email"><br /> <input type="submit"
22             value="注册">
23     </form>
24 
25 </body>
26 </html>

6.第五步:在index.jsp中添加下面一句话,在访问该项目时,直接跳转到注册页面:

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 7 <title>Insert title here</title>
 8 </head>
 9 <body>
<--“register”要与web.xml中的url-pattern中的名称保持一致 --> 10 <%response.sendRedirect("register"); %> 11 </body> 12 </html>

7.第六步:进行测试啦啦啦------(运行tomcat,在浏览器中输入:http://localhost:8080/Test1

 点击回车:

 输入用户名、密码、邮箱(注意:本次的代码并没有对用户名、密码、邮箱进行规范约束)

 点击注册,浏览器页面的变化如下所示:

 后端控制台输出如下所示:

 8.对于用户的注册功能已经使用Servlet完成了实现-----

  OK,,,,,,,,,

原文地址:https://www.cnblogs.com/lin1216/p/11552490.html