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