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,,,,,,,,,

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM