session技術進行登錄驗證問題解析


遇到的問題1:核心問題,就是如果需要做登陸和登陸到主界面的話,需要做三個界面。三個界面分別是:
1:登陸界面
2:驗證登陸界面
3:主界面
 
下面來解釋每個界面的作用。登錄界面顧名思義了就是登錄,目前JSP還不會,就outprintln代碼了(大佬不要笑)。這里有一個問題,我最開始的思路是,直接在這個界面申請出一個session然后把這個界面文本框的值給session。這時候經過測試發現,在本界面無法使用
 
1 String uname = req.getParameter("username");
來獲得文本框的值了,這時候就算直接輸出uname,uname也是空。那么我是怎么處理的呢?
答案在界面2,也就是登錄驗證界面
先直接甩出代碼
 1 /注冊驅動
 2 Class.forName("com.mysql.jdbc.Driver");
 3 //創建出數據庫連接對象並使用三個參數,接口,用戶名,密碼                                      conn = DriverManager.getConnection(url, name, password);
 4 System.out.println("連接數據庫成功");
 5 //預編譯對象
 6 String sql = "select* from user where userName = ? and userPass = ?";
 7 ps = conn.prepareStatement(sql);
 8 //賦值
 9 ps.setString(1,uname);
10 ps.setString(2,upass);
11 //執行
12 rs = ps.executeQuery();
13 //業務邏輯
14 if(rs.next()){
15  HttpSession session = req.getSession();
16  session.setAttribute("userName", uname);
17  resp.sendRedirect("MainFace");
18 }else{
19 String flag = "用戶名密碼錯誤!";
20 flag = java.net.URLEncoder.encode(flag.toString(),"UTF-8");
21 resp.sendRedirect("Login?flag="+flag);
22 }
我這個用戶名密碼的驗證通過JDBC訪問了自己電腦里的MySQL數據庫。然后,讓判定登錄成功的時候,申請一個session然后把這個成功並且正確的username賦值給session
然后進行到頁面3也就是主頁面。
主頁面沒什么好說的,就是首先判斷一下是不是非法登錄。也就是session的userName是不是空。如果username值是空的話,說明用戶沒用經過頁面2的驗證界面直接訪問了主界面,所以是非法登錄的,這時候就要給它反回主界面並且提示出非法登錄。關於get方法在地址欄反回中文的問題我的其他博客有詳細介紹,在此不多敘述了。下面給出頁面三也就是主界面的代碼:
  1. PrintWriter out = resp.getWriter();  
  2.         HttpSession session = req.getSession();  
  3.         if(session.getAttribute("userName") == null){  
  4.             String flag = "非法登錄!";  
  5.             flag = java.net.URLEncoder.encode(flag.toString(),"UTF-8");  
  6.             resp.sendRedirect("Login?flag="+flag);  
  7.         }  
  8.         out.println("歡迎管理員:"+session.getAttribute("userName"));  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM