剛來公司實習,老大讓我們分別用JSP和servlet寫一個用戶的登錄和注冊系統。經過這兩天的奮斗,終於算是搞定了(至少我這么認為······)
這一篇貼一下用JSP寫的代碼,下一篇貼一下用servlet寫的~~
文件位置和類庫位置如圖:
代碼如下:
login.jsp

1 <%@ page language="java" contentType="text/html; charset=ISO-8859-1" 2 pageEncoding="ISO-8859-1"%> 3 4 <html> 5 <head> 6 <title>login</title> 7 </head> 8 9 <body> 10 <table height="62%" width="100%"> 11 <td align="center" valign="middle"> 12 <div align="center"> 13 <form method="post" action="CheckUser.jsp"> 14 <image src="./image/logo.gif"> 15 <br></br> 16 Username: <input type="text" name="username"><br> 17 Password: <input type="password" name="pwd"><br> 18 <br> 19 <input type="submit" name="submit" value="submit"> 20 <input type="reset" name="reset" value="reset"> 21 <input type="button" onClick="window.location.href='register.jsp'" value="register"> 22 </form> 23 </div> 24 </td> 25 </table> 26 </body> 27 28 </html>
register.jsp (對html還不太熟,就用了一堆的<tr></tr>···)

1 <%@ page language="java" contentType="text/html; charset=ISO-8859-1" 2 pageEncoding="ISO-8859-1"%> 3 4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 5 <html> 6 <head> 7 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 8 <title>register</title> 9 </head> 10 11 <body> 12 <form action="CheckRegister.jsp" method=post> 13 <table align="center"> 14 <tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr> 15 <tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr> 16 <tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr> 17 <tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr> 18 <tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr> 19 <tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr> 20 <tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr> 21 <tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr> 22 <tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr> 23 <tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr> 24 <tr><td align="center"><font size=2>Username: </font></td> 25 <td><Input type="text" name="username1"></td> 26 </tr><tr></tr> 27 <tr><td align="center"><font size=2>Password: </font></td> 28 <td><Input type="password" name="password1"></td> 29 </tr><tr></tr> 30 <tr><td align="center"><font size=2>Comfirepassword: </font></td> 31 <td><Input type="password" name="password2"></td> 32 </tr><tr></tr> 33 </table> 34 <br> 35 <div align="center"> 36 <Input type="submit" name="reg" value="register"> 37 <Input type="reset" name="reset" value="reset"> 38 </div> 39 </form> 40 </body> 41 42 </html>
CheckUser.jsp

1 <%@ page language="java" contentType="text/html; charset=ISO-8859-1" 2 pageEncoding="ISO-8859-1"%> 3 <%@ page import="java.sql.*" %> 4 5 <% 6 /* 7 @ date 2014-05-22 8 @ author asif 9 @ 作用:檢查用戶登錄信息 10 */ 11 %> 12 13 <% 14 //pass parameters 15 String username = request.getParameter("username"); 16 String password = request.getParameter("pwd"); 17 18 //out.println(username+password); 19 20 //如果輸入的用戶名為空或只有空格的話,看做惡性提交,刷新原頁面 21 if(username.trim().equals("")) 22 response.sendRedirect("login.jsp"); 23 else 24 { 25 //連接數據庫 26 final String name = "root"; 27 final String passwd = "123456"; 28 String str=""; 29 String url = "jdbc:mysql://127.0.0.1:3306/test"; 30 try 31 { 32 Class.forName("com.mysql.jdbc.Driver").newInstance(); 33 } 34 catch(Exception e) 35 { 36 e.getStackTrace(); 37 } 38 try 39 { 40 Connection conn = DriverManager.getConnection(url, name, passwd); 41 ResultSet res; 42 PreparedStatement pstmt; 43 String sql = "select * from user where username=?"; 44 pstmt = conn.prepareStatement(sql); 45 pstmt.setString(1, username); 46 res = pstmt.executeQuery(); 47 //flag的值為true代表用戶名和密碼匹配正確,值為false的話表示沒有匹配 48 boolean flag = false; 49 while(res.next()) 50 { 51 String Upasswd = res.getString("password"); 52 if(Upasswd.equals(password)) 53 { 54 int total = res.getInt("totlogin"); 55 total++; 56 out.println("This is your " + total + " times login."); 57 sql = "update user set totlogin=? where username=?"; 58 pstmt = conn.prepareStatement(sql); 59 pstmt.setInt(1, total); 60 pstmt.setString(2, username); 61 pstmt.executeUpdate(); 62 flag = true; 63 break; 64 } 65 } 66 //登陸成功 67 if(flag) 68 str = "Login Success!\n"; 69 //登錄失敗,然后跳回登陸頁面 70 else 71 response.sendRedirect("fail.html"); 72 conn.close(); 73 } 74 catch (SQLException e) 75 { 76 // TODO Auto-generated catch block 77 //e.printStackTrace(); 78 str = e.toString(); 79 } 80 out.print(str); 81 } 82 %> 83 84 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 85 86 <html> 87 <head> 88 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 89 <title>Insert title here</title> 90 </head> 91 92 <body> 93 94 </body> 95 96 </html>
CheckRegister.jsp

1 <%@ page language="java" contentType="text/html; charset=ISO-8859-1" 2 pageEncoding="ISO-8859-1"%> 3 <%@ page import="java.sql.*" %> 4 <%@ page import="java.util.Date" %> 5 <%@ page import="java.util.Calendar" %> 6 <%@ page import="java.text.SimpleDateFormat" %> 7 8 <% 9 /* 10 @ date 2014-05-22 11 @ author asif 12 @ 作用:檢查用戶注冊輸入的用戶名,密碼的合法性 13 */ 14 %> 15 16 <% 17 //傳入用戶輸入的值,username1為用戶名,password1為密碼,password2為第二次輸入的密碼 18 String username = request.getParameter("username1"); 19 String password1 = request.getParameter("password1"); 20 String password2 = request.getParameter("password2"); 21 22 //如果用戶名為空或只有空格,返回警告頁面,然后自動調回注冊頁面 23 if(username.trim().equals("")) 24 { 25 response.sendRedirect("null.html"); 26 } 27 //如果兩次輸入的密碼不相等,彈出警告頁面,返回注冊頁面重新輸入 28 else if(!password1.equals(password2)) 29 { 30 response.sendRedirect("WrongP.html"); 31 } 32 else 33 { 34 //合法的話,連接數據庫 35 final String name = "root"; 36 final String passwd = "123456"; 37 String str=""; 38 String url = "jdbc:mysql://127.0.0.1:3306/test"; 39 try 40 { 41 Class.forName("com.mysql.jdbc.Driver").newInstance(); 42 } 43 catch(Exception e) 44 { 45 e.getStackTrace(); 46 } 47 try 48 { 49 Connection conn = DriverManager.getConnection(url, name, passwd); 50 ResultSet res; 51 PreparedStatement pstmt; 52 String sql = "select * from user where username=?"; 53 pstmt = conn.prepareStatement(sql); 54 pstmt.setString(1, username); 55 res = pstmt.executeQuery(); 56 boolean flag = false; 57 //判斷用戶名是否存在,如果存在的話,給出相應的信息,返回注冊頁面 58 while(res.next()) 59 { 60 flag = true; 61 } 62 //用戶名已存在 63 if(flag) 64 response.sendRedirect("HaveU.html"); 65 //用戶名不存在 66 else 67 { 68 sql = "insert user(username,password,totlogin,date) values(?,?,?,?)"; 69 pstmt = conn.prepareStatement(sql); 70 pstmt.setString(1, username); 71 pstmt.setString(2, password1); 72 pstmt.setInt(3, 0); 73 Date now = new Date(); 74 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 75 String strdate = dateFormat.format(now); 76 pstmt.setString(4, strdate); 77 pstmt.executeUpdate(); 78 response.sendRedirect("Rsuccess.html"); 79 } 80 conn.close(); 81 } 82 catch (SQLException e) 83 { 84 // TODO Auto-generated catch block 85 //e.printStackTrace(); 86 str = e.toString(); 87 } 88 } 89 %> 90 91 92 93 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 94 95 <html> 96 <head> 97 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 98 <title>Insert title here</title> 99 </head> 100 101 <body> 102 103 </body> 104 105 </html>
下面是幾個提示頁面:
fail.html

1 <html> 2 <head> 3 <meta http-equiv="Refresh" content="1;url= login.jsp"> 4 <title>Insert title here</title> 5 </head> 6 <body> 7 Username or Password wrong 8 </body> 9 </html>
HaveU.html

1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta http-equiv="Refresh" content="2;url= register.jsp"> 5 <title>Wait 2s</title> 6 </head> 7 <body> 8 親,該用戶名已被注冊,還是重新選一個用戶名注冊吧 9 </body> 10 </html>
null.html

1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta http-equiv="Refresh" content="2;url= register.jsp"> 5 <title>Wait 2s</title> 6 </head> 7 <body> 8 Username is not null 9 </body> 10 </html>
Rsuccess.html

1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta http-equiv="Refresh" content="1;url= login.jsp"> 5 <title>Wait 2s</title> 6 </head> 7 <body> 8 恭喜您注冊成功,馬上為您跳轉到登錄頁面 9 </body> 10 </html>
success.jsp

1 <%@ page language="java" contentType="text/html; charset=ISO-8859-1" 2 pageEncoding="ISO-8859-1"%> 3 <%@ import java.sql.* %> 4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 5 <html> 6 <head> 7 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 8 <title>Insert title here</title> 9 </head> 10 <body> 11 Login successful! 12 </body> 13 </html>
WrongP.html

1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta http-equiv="Refresh" content="2;url= register.jsp"> 5 <title>Wait 2s</title> 6 </head> 7 <body> 8 兩次密碼不一樣,請重新注冊 9 </body> 10 </html>
運行時把login.jsp當做主頁就可以了,然后圖片的話,在圖中相應位置上面新建一個image文件夾,里面隨便放圖片就好了。
數據庫的話,我用的數據庫名為test,表名為user。里面有四個段,如下