源碼和數據庫下載地址:http://download.csdn.net/detail/biexiansheng/9759722javascript
1:首先須要設計好數據庫和數據表,這裏簡單截圖說明我建立的字段和類型。css
2:進入正題,開始開發前臺和後臺代碼。首先建立一個動態web工程,而後先建立一個實體類。html
1 package com.bie.po; 2 /** 3 * @author BieHongLi 4 * @version 建立時間:2017年2月21日 上午9:59:03 5 * 用戶的實體類 6 */ 7 public class User { 8 9 private Integer id; 10 private String name; 11 private String password; 12 private String email; 13 private String phone; 14 public Integer getId() { 15 return id; 16 } 17 public void setId(Integer id) { 18 this.id = id; 19 } 20 public String getName() { 21 return name; 22 } 23 public void setName(String name) { 24 this.name = name; 25 } 26 public String getPassword() { 27 return password; 28 } 29 public void setPassword(String password) { 30 this.password = password; 31 } 32 public String getEmail() { 33 return email; 34 } 35 public void setEmail(String email) { 36 this.email = email; 37 } 38 public String getPhone() { 39 return phone; 40 } 41 public void setPhone(String phone) { 42 this.phone = phone; 43 } 44 45 //重寫toString 方法 46 @Override 47 public String toString() { 48 return "User [id=" + id + ", name=" + name + ", password=" + password + ", email=" + email + ", phone=" + phone 49 + "]"; 50 } 51 52 53 }
3:而後建立login.jsp登錄頁面java
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>用戶登錄頁面</title> 8 <style type="text/css"> 9 h1{text-align:left;} 10 h4{text-align:left;color:red;} 11 body{background:url(images/1.png)} 12 a{text-decoration:none;font-size:20px;color:black;} 13 a:hover{text-decoration:underline;font-size:24px;color:red;} 14 </style> 15 16 </head> 17 <body> 18 <form action="user/userlogin" method="post"> 19 <h1>用戶登錄頁面</h1> 20 <h4>裝飾中......</h4> 21 <hr/> 22 <table align="left"> 23 <tr> 24 <td>帳號:</td> 25 <td><input type="text" name="name" id="name"></td> 26 </tr> 27 <tr> 28 <td>密碼:</td> 29 <td><input type="password" name="password" id="password"></td> 30 </tr> 31 <tr> 32 <td colspan="1"> 33 </td> 34 <td> 35 <input type="submit" value="登錄"/> 36 <input type="reset" value="重置"/> 37 <a href="register.jsp" target="_blank">註冊</a> 38 </td> 39 </tr> 40 </table> 41 </form> 42 </body> 43 </html>
4:再建立註冊頁面register.jspmysql
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>註冊的頁面</title> 8 <style type="text/css"> 9 h1{text-align:center;} 10 h4{text-align:right;color:red;} 11 body{background:url(images/2.png)} 12 </style> 13 14 <script type="text/javascript" src="js/jquery.min.js"></script> 15 <script type="text/javascript"> 16 $(document).ready(function(){ 17 //alert("測試jQuery是否能用"); 18 $("#form1").submit(function(){ 19 var name=$("#name").val();//獲取提交的值 20 if(name.length==0){//進行判斷,若是獲取的值爲0那麼提示帳號不能爲空 21 //alert("aa");//測試使用 22 $("#nameError").html("帳號不能爲空"); 23 return false; 24 } 25 26 //密碼進行驗證不能爲空 27 var password=$("#password").val();//獲取提交的密碼的值 28 if(password.length==0){ 29 $("#passwordError").html("密碼不能爲空"); 30 return false; 31 } 32 33 //確認密碼進行驗證 34 var relpassword=$("#relpassword").val();//獲取提交的確認密碼的值 35 if(relpassword.length==0){ 36 $("#relpasswordError").html("確認密碼不能爲空哦"); 37 return false; 38 } 39 40 if(password!=relpassword){ 41 $("#relpasswordError").html("確認密碼輸入不正確,請從新輸入"); 42 return false; 43 } 44 }); 45 46 }); 47 </script> 48 </head> 49 <body> 50 <form action="user/userregister" method="post" id="form1"> 51 <h1>用戶註冊頁面</h1> 52 <h4>裝飾中......</h4> 53 <hr/> 54 <table align="center"> 55 <tr> 56 <td>帳 號:</td> 57 <td> 58 <input type="text" name="name" id="name"/> 59 <div id="nameError" style="display:inline;color:red;"></div> 60 </td> 61 </tr> 62 <tr> 63 <td>密 碼:</td> 64 <td> 65 <input type="password" name="password" id="password"> 66 <div id="passwordError" style="display:inline;color:red;"></div> 67 </td> 68 </tr> 69 <tr> 70 <td>確認密碼:</td> 71 <td> 72 <input type="password" name="relpassword" id="relpassword"> 73 <div id="relpasswordError" style="display:inline;color:red;"></div> 74 </td> 75 </tr> 76 <tr> 77 <td>電話號碼:</td> 78 <td><input type="text" name="phone" id="phone"></td> 79 </tr> 80 <tr> 81 <td>電子郵件:</td> 82 <td><input type="text" name="email" id="email"></td> 83 </tr> 84 <tr> 85 <td colspan="1"> 86 </td> 87 <td> 88 <input type="submit" value="註冊"/> 89 <input type="reset" value="重置"/> 90 <a href="login.jsp" target="_blank">登錄</a> 91 </td> 92 </tr> 93 </table> 94 </form> 95 </body> 96 </html>
5:再建立utils層,公共的工具層BaseDao.java;jquery
1 package com.bie.utils; 2 3 import java.sql.Connection; 4 import java.sql.DriverManager; 5 import java.sql.PreparedStatement; 6 import java.sql.ResultSet; 7 import java.sql.SQLException; 8 import java.util.ResourceBundle; 9 10 11 /** 12 * @author BieHongLi 13 * @version 建立時間:2017年2月21日 上午10:01:14 14 * 數據交互層dao層 15 */ 16 public class BaseDao { 17 18 private static String driver;//數據庫驅動 19 private static String url;//數據庫路徑,找到對應的數據庫 20 private static String user;//數據庫帳號 21 private static String password;//數據庫密碼 22 23 static{ 24 driver=ResourceBundle.getBundle("db").getString("driver"); 25 url=ResourceBundle.getBundle("db").getString("url"); 26 user=ResourceBundle.getBundle("db").getString("user"); 27 password=ResourceBundle.getBundle("db").getString("password"); 28 } 29 /*private static String driver="com.mysql.jdbc.Driver"; 30 private static String url="jdbc:mysql:///test"; 31 private static String user="root"; 32 private static String password="123456";*/ 33 34 /*** 35 * 鏈接數據庫的方法 36 * @return 37 * @throws ClassNotFoundException 38 * @throws SQLException 39 */ 40 public static Connection getCon() throws ClassNotFoundException, SQLException{ 41 Class.forName(driver);//加載數據庫驅動 42 System.out.println("測試加載數據庫成功"); 43 Connection con=DriverManager.getConnection(url, user, password); 44 System.out.println("測試數據庫連接成功"); 45 return con; 46 } 47 48 /*** 49 * 關閉數據庫的方法 50 * @param con 51 * @param ps 52 * @param rs 53 */ 54 public static void close(Connection con,PreparedStatement ps,ResultSet rs){ 55 if(rs!=null){//關閉資源,避免出現異常 56 try { 57 rs.close(); 58 } catch (SQLException e) { 59 // TODO Auto-generated catch block 60 e.printStackTrace(); 61 } 62 } 63 if(ps!=null){ 64 try { 65 ps.close(); 66 } catch (SQLException e) { 67 // TODO Auto-generated catch block 68 e.printStackTrace(); 69 } 70 } 71 if(con!=null){ 72 try { 73 con.close(); 74 } catch (SQLException e) { 75 // TODO Auto-generated catch block 76 e.printStackTrace(); 77 } 78 } 79 } 80 81 /*** 82 * 贊成增刪改的方法 83 * @param sql 84 * @param arr 85 * @return 86 */ 87 public static boolean addUpdateDelete(String sql,Object[] arr){ 88 Connection con=null; 89 PreparedStatement ps=null; 90 try { 91 con=BaseDao.getCon();//第一步 :鏈接數據庫的操做 92 ps=con.prepareStatement(sql);//第二步:預編譯 93 //第三步:設置值 94 if(arr!=null && arr.length!=0){ 95 for(int i=0;i<arr.length;i++){ 96 ps.setObject(i+1, arr[i]); 97 } 98 } 99 int count=ps.executeUpdate();//第四步:執行sql語句 100 if(count>0){ 101 return true; 102 }else{ 103 return false; 104 } 105 } catch (ClassNotFoundException e) { 106 // TODO Auto-generated catch block 107 e.printStackTrace(); 108 } catch (SQLException e) { 109 // TODO Auto-generated catch block 110 e.printStackTrace(); 111 } 112 return false; 113 } 114 115 /*public static void main(String[] args) { 116 try { 117 BaseDao.getCon(); 118 System.out.println("測試數據庫連接成功"); 119 } catch (ClassNotFoundException e) { 120 // TODO Auto-generated catch block 121 e.printStackTrace(); 122 } catch (SQLException e) { 123 // TODO Auto-generated catch block 124 e.printStackTrace(); 125 } 126 }*/ 127 128 129 }
6:而後建立dao層數據交互層的接口和實現類web
1 package com.bie.dao; 2 3 import com.bie.po.User; 4 5 /** 6 * @author BieHongLi 7 * @version 建立時間:2017年2月21日 上午10:38:40 8 * 建立一個接口用於聲明用戶登錄註冊的方法 9 */ 10 public interface UserDao { 11 12 /*** 13 * 用戶登錄的方法聲明 14 * @param user 15 * @return 16 */ 17 public User login(User user); 18 19 /*** 20 * 用戶註冊的方法聲明 21 * @param user 22 * @return 23 */ 24 public boolean register(User user); 25 }
1 package com.bie.dao.impl; 2 3 import java.sql.Connection; 4 import java.sql.PreparedStatement; 5 import java.sql.ResultSet; 6 import java.sql.SQLException; 7 import java.util.ArrayList; 8 import java.util.List; 9 10 import com.bie.dao.UserDao; 11 import com.bie.po.User; 12 import com.bie.utils.BaseDao; 13 14 /** 15 * @author BieHongLi 16 * @version 建立時間:2017年2月21日 上午10:38:56 17 * 18 */ 19 public class UserDaoImpl implements UserDao{ 20 21 @Override 22 public User login(User user) { 23 Connection con=null; 24 PreparedStatement ps=null; 25 ResultSet rs=null; 26 try { 27 con=BaseDao.getCon();//1:獲取數據庫的鏈接 28 //2:書寫sql語句 29 String sql="select * from user where name=? and password=? "; 30 ps=con.prepareStatement(sql);//3:預編譯 31 //4:設置值 32 ps.setString(1, user.getName()); 33 ps.setString(2, user.getPassword()); 34 rs=ps.executeQuery();//5:執行sql語句 35 User users=null; 36 if(rs.next()){ 37 users=new User(); 38 //從數據庫中獲取值設置到實體類的setter方法中 39 users.setId(rs.getInt("id")); 40 users.setName(rs.getString("name")); 41 users.setPassword(rs.getString("password")); 42 users.setEmail(rs.getString("email")); 43 users.setPhone(rs.getString("phone")); 44 45 return user; 46 }else{ 47 return null; 48 } 49 50 } catch (ClassNotFoundException e) { 51 // TODO Auto-generated catch block 52 e.printStackTrace(); 53 } catch (SQLException e) { 54 // TODO Auto-generated catch block 55 e.printStackTrace(); 56 } 57 return null; 58 } 59 60 /*** 61 * 插入的方法,即註冊 62 */ 63 @Override 64 public boolean register(User user) { 65 String sql="insert into user values(0,?,?,?,?) "; 66 List<Object> list=new ArrayList<Object>(); 67 list.add(user.getName()); 68 list.add(user.getPassword()); 69 list.add(user.getEmail()); 70 list.add(user.getPhone()); 71 72 boolean flag=BaseDao.addUpdateDelete(sql,list.toArray()); 73 if(flag){ 74 return true; 75 }else{ 76 return false; 77 } 78 } 79 80 81 }
7:再建立servlet層進行登錄的業務邏輯處理(因爲省去了service層,因此在servlet層進行業務邏輯處理了)sql
1 package com.bie.servlet; 2 3 import java.io.IOException; 4 5 import javax.servlet.ServletException; 6 import javax.servlet.annotation.WebServlet; 7 import javax.servlet.http.HttpServlet; 8 import javax.servlet.http.HttpServletRequest; 9 import javax.servlet.http.HttpServletResponse; 10 11 import com.bie.dao.UserDao; 12 import com.bie.dao.impl.UserDaoImpl; 13 import com.bie.po.User; 14 15 16 /** 17 * @author BieHongLi 18 * @version 建立時間:2017年2月21日 上午10:49:44 19 * 20 */ 21 @WebServlet("/user/userlogin") 22 public class UserLoginServlet extends HttpServlet{ 23 24 private static final long serialVersionUID = 1L; 25 26 @Override 27 protected void doGet(HttpServletRequest request, HttpServletResponse response) 28 throws ServletException, IOException { 29 this.doPost(request, response); 30 } 31 32 @Override 33 protected void doPost(HttpServletRequest request, HttpServletResponse response) 34 throws ServletException, IOException { 35 User user=new User(); 36 //獲取login.jsp頁面提交的帳號和密碼 37 String name=request.getParameter("name"); 38 String password=request.getParameter("password"); 39 //測試數據 40 System.out.println(name+" "+password); 41 //獲取login.jsp頁面提交的帳號和密碼設置到實體類User中 42 user.setName(name); 43 user.setPassword(password); 44 45 //引入數據交互層 46 UserDao dao=new UserDaoImpl(); 47 User us=dao.login(user); 48 //測試返回的值 49 System.out.println(us); 50 if(us!=null){ 51 request.setAttribute("info", "登錄成功"); 52 }else{ 53 request.setAttribute("info", "登陸失敗"); 54 } 55 56 request.getRequestDispatcher("/index/info.jsp").forward(request, response); 57 } 58 59 60 61 }
8:再建立servlet層進行註冊的業務邏輯處理(因爲省去了service層,因此在servlet層進行業務邏輯處理了)數據庫
1 package com.bie.servlet; 2 3 import java.io.IOException; 4 5 import javax.servlet.ServletException; 6 import javax.servlet.annotation.WebServlet; 7 import javax.servlet.http.HttpServlet; 8 import javax.servlet.http.HttpServletRequest; 9 import javax.servlet.http.HttpServletResponse; 10 11 import com.bie.dao.UserDao; 12 import com.bie.dao.impl.UserDaoImpl; 13 import com.bie.po.User; 14 15 /** 16 * @author BieHongLi 17 * @version 建立時間:2017年2月21日 下午1:34:17 18 * 註冊的servlet 19 */ 20 @WebServlet("/user/userregister") 21 public class UserRegisterServlet extends HttpServlet{ 22 23 private static final long serialVersionUID = 1L; 24 25 @Override 26 protected void doGet(HttpServletRequest request, HttpServletResponse response) 27 throws ServletException, IOException { 28 this.doPost(request, response); 29 } 30 31 @Override 32 protected void doPost(HttpServletRequest request, HttpServletResponse response) 33 throws ServletException, IOException { 34 User user=new User(); 35 //獲取login.jsp頁面提交的帳號和密碼 36 String name=request.getParameter("name"); 37 String password=request.getParameter("password"); 38 String email=request.getParameter("email"); 39 String phone=request.getParameter("phone"); 40 41 //獲取register.jsp頁面提交的帳號和密碼設置到實體類User中 42 user.setName(name); 43 user.setPassword(password); 44 user.setEmail(email); 45 user.setPhone(phone); 46 47 //引入數據交互層 48 UserDao dao=new UserDaoImpl(); 49 boolean flag=dao.register(user); 50 if(flag){ 51 request.setAttribute("info", "註冊成功"); 52 }else{ 53 request.setAttribute("info", "註冊失敗"); 54 } 55 56 request.getRequestDispatcher("/index/info.jsp").forward(request, response); 57 } 58 59 }
9:爲了不亂碼,使用過濾器進行過濾。jsp
1 package com.bie.utils; 2 3 import java.io.IOException; 4 5 import javax.servlet.Filter; 6 import javax.servlet.FilterChain; 7 import javax.servlet.FilterConfig; 8 import javax.servlet.ServletException; 9 import javax.servlet.ServletRequest; 10 import javax.servlet.ServletResponse; 11 import javax.servlet.annotation.WebFilter; 12 import javax.servlet.http.HttpServletRequest; 13 14 /** 15 * @author BieHongLi 16 * @version 建立時間:2017年2月21日 上午11:08:49 17 * 18 */ 19 @WebFilter("/*") 20 public class UTFFilter implements Filter{ 21 22 @Override 23 public void destroy() { 24 // TODO Auto-generated method stub 25 26 } 27 28 @Override 29 public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, 30 FilterChain filterChain)throws IOException, ServletException { 31 //將servletRequest轉發爲HttpServletRequest 32 HttpServletRequest request=(HttpServletRequest)servletRequest; 33 request.setCharacterEncoding("utf-8"); 34 filterChain.doFilter(servletRequest, servletResponse); 35 } 36 37 @Override 38 public void init(FilterConfig arg0) throws ServletException { 39 // TODO Auto-generated method stub 40 41 } 42 43 44 }
效果以下所示: