zoukankan      html  css  js  c++  java
  • 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,,,,,,,,,

  • 相关阅读:
    centos7下mysql双主+keepalived
    Nginx 性能优化有这篇就够了!
    mysql对自增主键ID进行重新排序
    nginx 配置文件 2019-12-20
    zabbix服务端接收的数据类型,便于编写脚本向服务端提交数据
    zabbix自动注册,实现自动添加机器,减少人工干预
    zabbix企业微信告警配置教程
    websocket 连接测试端口服务是否正常代码
    mongodb Sort排序能够支持的最大内存限制为32M Plan executor error during find: FAILURE
    rabbitmq 的安装配置使用
  • 原文地址:https://www.cnblogs.com/lin1216/p/11552490.html
Copyright © 2011-2022 走看看