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