打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
用Cookie 保存登录信息

第一次登录页面时,若在表单中选择了“记住密码”,则下次登录网站时不用在填写表单,这里用“success.jsp”表示要打开的页面。若本地Cookie文件中已经保存了验证信息,则会显示已登录,否则会显示没登录。

具体如下所示:

<!--[if !supportLists]-->①   <!--[endif]-->.填写表单,选择记住密码“一天“,代码文件为:login.jsp

<!--[if !supportLists]-->②   <!--[endif]-->.按下提交后,客户锻页面跳到check.jsp,实际上在服务端已经跳到了“success.jsp”页面。

<!--[if !supportLists]-->③   <!--[endif]-->.新打开一个浏览器,然后直接打开“success.jsp”页面,此时提示已登录。说明Cookie起到了自动登录的作用。

若第①步中,在记住密码项中选择“不保存”则登录“success.jsp”页面效果如下:

 

二. 对应代码

1.login.jsp

  1. <%@ page contentType="text/html;charset=GBK"%>  
  2. <mce:script language="javaScript"><!--  
  3.     function validate(f){  
  4.         if(!(/^/w{5,15}$/.test(f.userId.value))){  
  5.             alert("用户id必须为5-15位!");  
  6.             f.userId.focus();  
  7.             return false;  
  8.         }  
  9.         if(!(/^/w{5,15}$/.test(f.password.value))){  
  10.             alert("密码必须为5-15位!");  
  11.             f.password.focus();  
  12.             return false;  
  13.         }  
  14.         return true;  
  15.     }  
  16. // --></mce:script>   
  17. <form action="check.jsp" method="post" onSubmit="return validate(this)">  
  18.     <table border="0">  
  19.         <tr>  
  20.             <td>登录程序</td>  
  21.         </tr>  
  22.         <tr>  
  23.             <td>  
  24.                 用户id:  
  25.             </td>  
  26.             <td>  
  27.                 <input type="text" name="userid">  
  28.             </td>  
  29.         </tr>  
  30.         <tr>  
  31.             <td>  
  32.                 密  码:  
  33.             </td>  
  34.             <td>  
  35.                 <input type="password" name="password">  
  36.             </td>  
  37.         </tr>  
  38.             <tr>  
  39.             <td>  
  40.                 记住密码?  
  41.             </td>  
  42.             <td>  
  43.                 <select name="savetime">  
  44.                     <option value="0" selected>不保存</option>  
  45.                     <option value=<%=24*60*60%>>一天</option>  
  46.                     <option value=<%=24*60*60*7%>>一周</option>  
  47.                 </select>  
  48.             </td>  
  49.         </tr>  
  50.         <tr>  
  51.             <td> <input type="submit" value="确认"></td>  
  52.             <td> <input type="reset"  value="重置"></td>  
  53.         </tr>  
  54.     </table>  
  55. </form>  
 

2.check.jsp

  1. <%@ page import="java.sql.*"%>  
  2. <%!  
  3.     public static final String DBDRIVER = "org.gjt.mm.mysql.Driver" ;  
  4.     public static final String DBURL = "jdbc:mysql://localhost:3306/jspDemo" ;  
  5.     public static final String DBUSER = "root" ;  
  6.     public static final String DBPASS = "root" ;  
  7. %>  
  8. <%  
  9.     Connection conn = null ;  
  10.     PreparedStatement pstmt = null ;  
  11.     ResultSet rs = null ;  
  12.     boolean flag = false ;  // 表示登陆成功或失败的标记   
  13. %>  
  14. <%  
  15.     String userid = request.getParameter("userid") ;    // 接收表单参数   
  16.     String password = request.getParameter("password") ;    // 接收表单参数   
  17.     String savetime=request.getParameter("savetime");  
  18.     System.out.println(savetime);  
  19.     try{  
  20.         Class.forName(DBDRIVER) ;  
  21.         conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ;  
  22.         String sql = "SELECT id FROM tuser WHERE id=? AND password=?" ;  
  23.         pstmt = conn.prepareStatement(sql) ;  
  24.         pstmt.setString(1,userid) ;  
  25.         pstmt.setString(2,password) ;  
  26.         rs = pstmt.executeQuery() ;  
  27.         if(rs.next()){  
  28.             // 如果有内容,则此处执行,表示查询出来,合法用户   
  29.             flag = true ;  
  30.             session.setAttribute("userid",userid);  
  31.             //将验证信息保存到Cookie   
  32.             Cookie cid=new Cookie("userid",userid);  
  33.             Cookie cpass=new Cookie("password",password);  
  34.             cid.setMaxAge(Integer.parseInt(savetime));  
  35.             cpass.setMaxAge(Integer.parseInt(savetime));  
  36.             response.addCookie(cid);  
  37.             response.addCookie(cpass);  
  38.         }  
  39.     }catch(Exception e){  
  40.     }finally{  
  41.         try{  
  42.             conn.close() ;  // 连接一关闭,所有的操作都将关闭   
  43.         }catch(Exception e){  
  44.             e.printStackTrace();  
  45.         }  
  46.     }  
  47. %>  
  48. <%  
  49.     if(flag){   // 登陆成功,应该跳转到success.jsp   
  50. %>  
  51.         <jsp:forward page="success.jsp"/>  
  52. <%  
  53.     }else{      // 登陆失败,跳转到failure.jsp   
  54. %>  
  55.         <jsp:forward page="failure.jsp"/>  
  56. <%  
  57.     }  
  58. %>  
 

3.CookieCheck.jsp  

  1. <%@ page contentType="text/html;charset=GBK"%>  
  2. <%@ page import="java.sql.*"%>  
  3. <%!  
  4.     public static final String DBDRIVER = "org.gjt.mm.mysql.Driver" ;  
  5.     public static final String DBURL = "jdbc:mysql://localhost:3306/jspDemo" ;  
  6.     public static final String DBUSER = "root" ;  
  7.     public static final String DBPASS = "root" ;  
  8. %>  
  9. <%  
  10.     Connection conn = null ;  
  11.     PreparedStatement pstmt = null ;  
  12.     ResultSet rs = null ;  
  13.     boolean flag = false ;  // 表示登陆成功或失败的标记   
  14. %>  
  15. <%  
  16.     if(session.getAttribute("userid")==null){  
  17.         Cookie[] c=request.getCookies();  
  18.         String userid=null;  
  19.         String password=null;  
  20.         if(c!=null){  
  21.             for(int i=0;i<c.length;i++){  
  22.                 if("userid".equals(c[i].getName())){  
  23.                     userid = c[i].getValue() ;  // 接收Cookie信息   
  24.                 }  
  25.                 if("password".equals(c[i].getName())){  
  26.                     password = c[i].getValue() ;    // 接收Cookie信息   
  27.                 }  
  28.             }  
  29.             if(userid!=null&&password!=null){  
  30.                 try{  
  31.                     Class.forName(DBDRIVER) ;  
  32.                     conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ;  
  33.                     String sql = "SELECT id FROM tuser WHERE id=? AND password=?" ;  
  34.                     pstmt = conn.prepareStatement(sql) ;  
  35.                     pstmt.setString(1,userid) ;  
  36.                     pstmt.setString(2,password) ;  
  37.                     rs = pstmt.executeQuery() ;  
  38.                     if(rs.next()){  
  39.                         // 如果有内容,则此处执行,表示查询出来,合法用户   
  40.                         flag = true ;  
  41.                         session.setAttribute("userid",userid);  
  42.                     }  
  43.                 }catch(Exception e){  
  44.                 }finally{  
  45.                     try{  
  46.                         conn.close() ;  // 连接一关闭,所有的操作都将关闭   
  47.                     }catch(Exception e){  
  48.                         e.printStackTrace();  
  49.                     }  
  50.                 }  
  51.             }  
  52.         }  
  53.     }  
  54. %>  
 

4.succss.jsp

  1. <%@ page contentType="text/html;charset=GBK"%>  
  2. <jsp:include page="CookieCheck.jsp"/>  
  3. <%  
  4.     if(session.getAttribute("userid")!=null){  
  5. %>  
  6.     <h1>登陆成功,欢迎光临!</h1>  
  7. <%  
  8. }else{  
  9. %>  
  10.     <h1> 您还未登录!</h1>  
  11. <%  
  12. }     
  13. %>  
 

5.failue.jsp   

  1. <%@ page contentType="text/html;charset=GBK"%>  
  2. <h1>登陆失败,请重新<a href="login.html" mce_href="login.html">登陆</a></h1>  
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
ECSide内存分页
iBatis开发环境搭建和第一个程序
OpenFire源码学习之二十一:openfie对用户的优化(上)
JSP中实现网站自动登录
利用filter实现权限管理 - zhaozhenlin1224 - BlogJava
jsp+oracle分页查询正传
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服