學習javaWeb,首先要學習基礎的jsp,servlet,弄通了機制然后就得心應手了。我們來實現一個簡單的實例來學習。
我們的任務有:1.數據庫及表創建
上節我們實現了用戶注冊,本節來接着實現用戶登錄
三、用戶登錄
要實現用戶登錄功能,我們需要完成以下幾個任務:
1.登錄頁面
一個簡單的登錄頁面需要包含登錄信息和登錄提交按鈕,下面是一個簡單的登錄界面
(說明:如果用戶未輸入用戶信息或者輸入信息有誤,提示用戶名或密碼錯誤)
userlogin.jsp部分代碼如下:
1 <% String message = (String)(request.getAttribute("message")); %> 2 <!--省略JS判斷部分代碼 -> 3 <form id = "form1" action = "servlet/UserloginServlet" method = "post"> 4 <table border="1" style="border-collapse:collapse;"> 5 <tr align = "center"> 6 <td colspan="2">用戶登錄</td> 7 </tr> 8 <tr> 9 <td>用戶名:</td> 10 <td> 11 <input type = "text" name = "userName"/> 12 </td> 13 14 </tr> 15 <tr> 16 <td>密碼:</td> 17 <td> 18 <input type = "password" name = "userPassword"/> 19 <span style = "color:red; font-size:13px;" id = "td2"><%=message %></span> 20 </td> 21 </tr> 22 <tr align = "center"> 23 <td colspan = "2"> 24 <input type = "submit" name="register" value ="注冊" onclick="changeR()" /> 25 <input type = "submit" name="login" value ="登錄"/> 26 </td> 27 </tr> 28 </table> 29 </form>
(注:由於剛開始刷到本頁面時,message值為null,所以會顯示null,需處理掉)
2.登錄Servlet
上面的頁面將form數據提交給了UserloginServlet.java 類,該類中的部分代碼為:
1 public void doPost(HttpServletRequest request, HttpServletResponse response) 2 throws ServletException, IOException { 3 4 request.setCharacterEncoding("utf-8"); 5 response.setCharacterEncoding("utf-8"); 6 String userName = request.getParameter("userName"); 7 String userPassword = request.getParameter("userPassword"); 8 // 前台得到用戶輸入 9 UserDao userDao = new UserDao(); 10 UserVo user = userDao.judgeUserPassword(userName, userPassword); 11 // 調用方法判斷用戶是否存在 12 String message = "用戶名或密碼錯誤~!"; 13 if (user == null) { 14 // 如果用戶不存在,重新登錄 15 request.setAttribute("message", message); 16 request.getRequestDispatcher("/userlogin.jsp").forward(request, 17 response); 18 } else { 19 // 如果用戶存在,檢索數據,跳到用戶列表顯示頁面 20 ArrayList<UserVo> list = userDao.selectNotDeleteList(); 21 request.setAttribute("list", list); 22 request.getRequestDispatcher("/userlist.jsp").forward(request, 23 response); 24 } 25 26 }
3.登錄驗證
從servlet中獲得了用戶輸入以后,在UserDao.java中調用judgeUserPassword(userName, userPassword)方法驗證用戶是否存在
方法具體內容如下:
1 public UserVo judgeUserPassword(String userName, String userPassword) { 2 // 用戶登錄驗證 3 Dbmanage dbmanage = new Dbmanage(); 4 Connection conn = null; 5 Statement sta = null; 6 ResultSet rs = null; 7 UserVo user = null; 8 try { 9 conn = dbmanage.initDB(); 10 sta = conn.createStatement(); 11 System.out.println(userName); 12 System.out.println(userPassword); 13 String sql = "SELECT * FROM userTable WHERE user_name = '" 14 + userName + "' AND user_password= '" + userPassword + "'"; 15 rs = sta.executeQuery(sql); 16 while (rs.next()) { 17 user = new UserVo(); 18 user.setUserName(rs.getString("user_name")); 19 user.setUserPassword(rs.getString("user_password")); 20 21 } 22 23 } catch (SQLException e) { 24 25 e.printStackTrace(); 26 } finally { 27 // 執行完關閉數據庫 28 dbmanage.closeDB(rs, sta, conn); 29 } 30 // 返回查詢結果 31 return user; 32 }
到這里,登錄流程已經基本實現了。
鏈接導航 1.數據庫及表創建