用Servlet校驗密碼2
學號:201631062509
姓名:楊菓
1.主效果圖
資料庫
主介面同前面做的一樣
使用者名稱為空
使用者名稱或密碼錯誤
登陸成功
2.原始碼
Servlet
1 import java.io.IOException; 2 import java.sql.*; 3 import java.util.List; 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 DaoUtils.JdbcUtils; 12 13 14 15 /** 16 * Servlet implementation class check 17 */ 18 @WebServlet("/check") 19 public class check extends HttpServlet { 20 private static final long serialVersionUID = 1L; 21 22 /** 23 * @see HttpServlet#HttpServlet() 24 */ 25 public check() { 26 super(); 27 // TODO Auto-generated constructor stub 28 } 29 30 /** 31 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 32 */ 33 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 34 // TODO Auto-generated method stub 35 36 Connection con = null; 37 PreparedStatement preparedStatement = null; 38 ResultSet rs = null; 39 40 request.setCharacterEncoding("UTF-8"); 41 response.setContentType("text/html;charset=UTF-8"); 42 43 String userName = request.getParameter("checkInID"); 44 String userPass = request.getParameter("checkInPass"); 45 46 try { 47 con = JdbcUtils.getConnection(); 48 String sql = "SELECT * FROM USER WHERE userName = '" + userName + "' AND userPass = " + userPass; 49 preparedStatement = con.prepareStatement("SELECT * FROM USER WHERE userName = ? AND userPass = ?"); 50 preparedStatement.setString(1, userName); 51 preparedStatement.setInt(2, Integer.valueOf(userPass)); 52 rs = preparedStatement.executeQuery(); 53 54 if(!rs.next()){ 55 response.getWriter().write("使用者名稱或密碼錯誤"); 56 }else{ 57 58 response.getWriter().write("使用者名稱:" + rs.getString(1)); 59 response.getWriter().write("</br>"); 60 response.getWriter().write("密碼:" + rs.getInt(2)); 61 } 62 63 } catch (SQLException | ClassNotFoundException e) { 64 // TODO 自動生成的 catch 塊 65 e.printStackTrace(); 66 } finally { 67 release(con, preparedStatement, rs); 68 } 69 70 } 71 72 /** 73 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 74 */ 75 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 76 // TODO Auto-generated method stub 77 doGet(request, response); 78 } 79 80 public static void release(Connection conn, Statement st, ResultSet rs){ 81 if(rs != null){ 82 try{ 83 rs.close(); 84 }catch (Exception e) { 85 // TODO: handle exception 86 e.printStackTrace(); 87 } 88 89 rs = null; 90 } 91 92 if(st != null){ 93 try{ 94 st.close(); 95 }catch (Exception e) { 96 // TODO: handle exception 97 e.printStackTrace(); 98 } 99 100 st = null; 101 } 102 103 if(conn != null){ 104 try{ 105 conn.close(); 106 }catch (Exception e) { 107 // TODO: handle exception 108 e.printStackTrace(); 109 } 110 111 conn = null; 112 } 113 } 114 115 }
JDBC
1 package DaoUtils; 2 3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.sql.Connection; 6 import java.sql.DriverManager; 7 import java.sql.ResultSet; 8 import java.sql.SQLException; 9 import java.sql.Statement; 10 import java.util.Properties; 11 12 13 public class JdbcUtils { 14 private static String driver = null; 15 private static String url = null; 16 private static String username = null; 17 private static String password = null; 18 19 public static void setDriver(String driver) { 20 JdbcUtils.driver = driver; 21 } 22 23 public static void setPassword(String password) { 24 JdbcUtils.password = password; 25 } 26 27 public static void setUsername(String username) { 28 JdbcUtils.username = username; 29 } 30 31 public static void setUrl(String url) { 32 JdbcUtils.url = url; 33 } 34 35 public static String getDriver() { 36 return driver; 37 } 38 39 public static String getPassword() { 40 return password; 41 } 42 43 public static String getUrl() { 44 return url; 45 } 46 47 public static String getUsername() { 48 return username; 49 } 50 51 static{ 52 //try{ 53 /*String driver = "com.mysql.jdbc.Driver"; 54 String url = "jdbc:mysql://localhost:3306/checkprojectdb"; 55 String username = "root"; 56 String password = "980420";*/ 57 58 Properties p = new Properties(); 59 try{ 60 //通過相對路徑載入檔案 61 String path = (Thread.currentThread().getContextClassLoader().getResource("").getFile()).substring(1); 62 path=java.net.URLDecoder.decode(path, "utf-8"); 63 path=path.replace('/', '\\'); 64 path=path.replace("file:", ""); 65 path=path.replace("classes\\", ""); 66 path+="classes/DaoUtils/db.properties"; 67 p.load(new FileInputStream(new File(path))); 68 //用getProperties方法通過關鍵字獲取資訊 69 driver = p.getProperty("driver"); 70 url = p.getProperty("url"); 71 username = p.getProperty("username"); 72 password = p.getProperty("password"); 73 //} 74 Class.forName(driver); 75 }catch (Exception e) { 76 // TODO: handle exception 77 System.out.println(driver +" " + url + " " + username +" " + password ); 78 throw new ExceptionInInitializerError(e); 79 } 80 } 81 82 public static Connection getConnection() throws SQLException, ClassNotFoundException{ 83 return DriverManager.getConnection(url, username, password); 84 } 85 86 public static void release(Connection conn, Statement st, ResultSet rs){ 87 if(rs != null){ 88 try{ 89 rs.close(); 90 }catch (Exception e) { 91 // TODO: handle exception 92 e.printStackTrace(); 93 } 94 95 rs = null; 96 } 97 98 if(st != null){ 99 try{ 100 st.close(); 101 }catch (Exception e) { 102 // TODO: handle exception 103 e.printStackTrace(); 104 } 105 106 st = null; 107 } 108 109 if(conn != null){ 110 try{ 111 conn.close(); 112 }catch (Exception e) { 113 // TODO: handle exception 114 e.printStackTrace(); 115 } 116 117 conn = null; 118 } 119 } 120 121 public static void main(String[] args) { 122 System.out.println(driver + "; " + username + "; " + password + "; " + url); 123 } 124 } 125 126 JdbcUtils
HTML
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8"/> 5 <title>登入</title> 6 <link href="style/loginP.css" type="text/css" rel="stylesheet"/> 7 <script type="text/javascript" src="script/identify.js"></script> 8 </head> 9 <body> 10 <div id="topBar"> 11 <div class="topContent"> 12 <i></i> 13 <p>西南石油大學新聞釋出後臺登入</p> 14 <span>幫助</span> 15 </div> 16 </div> 17 18 <div id="main"> 19 <div id="sign_in_part" class="login_form"> 20 <p class="title_caption">賬號登入</p> 21 <div class="login_block"> 22 <form method="post" action="check" id="loginForm" onsubmit="return checkForm()"> 23 <fieldset> 24 <h1 id="login-info">使用者登入</h1> 25 <div class="login_input"> 26 <input type="text" id="checkInID" name="checkInID" placeholder="請輸入賬號" required/> 27 <div class="clear"></div> 28 </div> 29 <div class="login_input"> 30 <input type="password" id="checkInPass" name="checkInPass" placeholder="請輸入密碼" required/> 31 <div class="clear"></div> 32 </div> 33 34 <div class="login_sub_in"> 35 <button type="submit" value="登入" id="subBut">登入</button> 36 </div> 37 </fieldset> 38 </form> 39 </div> 40 </div> 41 </div> 42 <div id="foot"> 43 <p>西南石油大學登入</p> 44 </div> 45 </body> 46 </html> 47 48 HTML 49 50 HTML
CSS
1 .h{ 2 width: 964px; 3 margin: 0 auto; 4 } 5 *{ 6 margin: 0; 7 padding: 0; 8 } 9 .t{ 10 height: 95px; 11 line-height: 90px; 12 background-color:#f5f5f5 ; 13 border-bottom-width: 1px; 14 border-bottom-style: solid; 15 border-bottom-color: #e5ecf0; 16 overflow:hidden; 17 } 18 .logo{ 19 padding-top: 15px; 20 float: left; 21 } 22 .help{ 23 float: right; 24 font-size: 14px; 25 font-weight: 700; 26 color: #787878; 27 text-decoration: none; 28 } 29 body{ 30 font-family: "微軟雅黑",verdana,geneva,sans-serif; 31 font-size: 12px; 32 background: #fff; 33 } 34 .box{ 35 width: 376px; 36 position: absolute; 37 box-shadow: 0px 0px 5px rgba(0,0,0,0,4); 38 } 39 .c{ 40 width: 964px; 41 height: 460px; 42 margin: 20px auto 0 auto; 43 background: url(../img/backimg.png) no-repeat; 44 background-attachment: scroll; 45 background-repeat: no-repeat; 46 background-position-x: 0%; 47 background-position-y: 0%; 48 background-size: cover; 49 background-origin: padding-box; 50 background-clip: border-box; 51 background-color: transparent; 52 position: relative; 53 } 54 .tab li.current{ 55 background-attachment: scroll; 56 background-repeat: repeat; 57 background-size: auto; 58 background: #ff7e00; 59 } 60 .tab li.dragbar{ 61 width: 22px; 62 cursor: move; 63 overflow: hidden; 64 } 65 .tab li{ 66 height: 40px; 67 line-height: 40px; 68 float: left; 69 width: 354px; 70 text-align: center; 71 background: #333; 72 color: #fff; 73 font-size: 16px; 74 cursor: pointer; 75 } 76 .msg{ 77 position: absolute; 78 background: #cc3300; 79 color: #FFFFFF; 80 padding: 0 10px; 81 font-size: 14px; 82 } 83 ul{ 84 list-style-type: none; 85 list-style-position: outside; 86 list-style-image: none; 87 } 88 .tab{ 89 border-bottom: 3px solid rgba(255,126,0,0.8); 90 overflow: hidden; 91 } 92 .boxc{ 93 background: #FFFFFF; 94 padding: 20px 0 30px 42px; 95 } 96 .text{ 97 height: 36px; 98 line-height: 36px; 99 outline: none; 100 width: 280px; 101 border: 1px solid #c7c7c7; 102 background: #f3f3f3; 103 border-radius: 1px; 104 padding: 0 5px; 105 font-family: "微軟雅黑"; 106 } 107 .text_item{ 108 height: 38px; 109 line-height: 38px; 110 width: 292px; 111 margin: 15px 0 30px 0; 112 } 113 .btnb{ 114 margin: 20px 0 0 0; 115 width: 292px; 116 position: relative; 117 } 118 .btn{ 119 height: 38px; 120 width: 142px; 121 border: none; 122 color: #fff; 123 font-weight: 400; 124 font-size:20px; 125 font-family: "微軟雅黑"; 126 } 127 .nouser{ 128 position: absolute; 129 background: #CC3300; 130 color: #fff; 131 padding: 0 10px; 132 font-size: 14px; 133 height: 30px; 134 line-height: 30px; 135 left: 42px; 136 right: 42px; 137 text-align: center; 138 display: none; 139 }
JS
1 function checkForm(){ 2 var subButton = document.getElementById("subBut"); 3 var userID = document.getElementById("checkInID"); 4 var userP = document.getElementById("checkInPass"); 5 6 if(userID.value == "" || userP.value == ""){ 7 var info = document.getElementById("login-info"); 8 var infoStyle = info.style; 9 infoStyle.visibility = "visible"; 10 info.innerText = "請輸入使用者名稱"; 11 return false; 12 }else{ 13 return true; 14 } 15 }
3.百度雲地址
連結:https://pan.baidu.com/s/1sME4oc60WjYKx7_doM_bkw
提取碼:s3ek