java web中使用cookie记住用户的账号和密码

毕业设计中需要用到记住账号密码的功能,网上搜到了一个解决方案,自己稍加改造就是下面的方法。

首先是登录的页面,当用户勾选记住密码,传递给controller(我用的SSM框架),后台设置cookie的值,然后下次登录的时候就不用再次输入账号和密码了。

login.jsp的代码:

<%@page import="org.apache.commons.lang.StringUtils"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
 pageEncoding="UTF-8"%>
<%@include file="public/nocache.jsp" %>
<%@include file="public/header.jsp" %>
<!-- 引入相关的js -->
<script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery-validation-1.14.0/dist/jquery.validate.min.js"></script>
<style>
  body{
  margin:0px;
  padding:0px;
  }
  .wrapper{
  width:100%;height:100%;position:fixed;
  }
  .content{
  width:100%;
  height:100%;
  position:relative;
  text-align:center;
  }
  .login{
  width:1050px;
  height:450px;
  position:absolute;
  top:50%;
  left:50%;
  margin-top:-225px;
  margin-left:-525px;
  }
</style>
<script type="text/javascript">
 window.history.forward();
 window.onbeforeunload=function (){
 }
</script>
<%@include file="public/headertop.jsp" %>
<!-- 进入资源文件 -->
<body>
 <%-- 读取cookie --%>
 <%
  String name = "";
  String password = "";
  try{
   Cookie[] cookies = request.getCookies();
   if(cookies!=null){
    for(int i = 0;i<cookies.length;i++){
     if(cookies[i].getName().equals("cookie_user")){
      String values = cookies[i].getValue();
      // 如果value字段不为空
      if(StringUtils.isNotBlank(values)){
       String[] elements = values.split("-");
       // 获取账户名或者密码
       if(StringUtils.isNotBlank(elements[0])){
        name = elements[0];
       }
       if(StringUtils.isNotBlank(elements[1])){
        password = elements[1];
       }
      }
     }
    }
   }
  }catch(Exception e){
  }
 %>
 <div class="wrapper" style="">
   <div class="content">
   <div class="login">
    <!-- 主要的内容部分开始 -->
    <div class="easyui-layout" fit="true" border="false">
      <div region="west" style="width:550px;text-align:center;" border="false">
       <div class="easyui-layout" fit="true" border="false">
        <div region="west" border="false" style="width:250px;height:390px;background:url(${pageContext.request.contextPath}/img/banner-jkrzbg.png)">
        </div>
        <div region="center" style="font-family:'微软雅黑';" border="false">
         <p style="position: relative;margin-top:200px;padding-left:20px;">
          <span style="font-size:30px;font-weight:800;">汽车维修管理系统</span><br/>
          <span>Vehicle Maintenance Management System</span>
         </p>
        </div>
       </div>
      </div>
      <div region="center" border="false" style="width:520px;height:480px;">
       <div class="easyui-layout" fit="true" border="false">
        <div region="north" style="height:80px;" border="false">
        </div>
        <div region="west" style="width:90px;position: relative;" border="false">
         <img src="${pageContext.request.contextPath}/img/split.png" style="position:absolute;left:0px;top:30px;"/>
        </div>
        <div region="center" border="false">
         <div class="easyui-panel" title="用户登录" iconCls="icon-user"
           style="text-align: center;width:300px;height:260px;padding-top:50px;">
          <form id="ff" method="post">
           <div>
            <input id="account" class="easyui-textbox" name="accountnumber"
              data-options="iconCls:'icon-man',prompt:'请输入用户名'" value="<%=name %>"
              style="width:240px;height:30px;">
            <a id="dd" href="#" title="用户的账号不能为空" class="easyui-tooltip"></a>
           </div>
           <div style="margin-top: 20px;">
            <input id="passwords" class="easyui-textbox" name="passwords" type="password"
              data-options="iconCls:'icon-lock',prompt:'请输入密码'" value="<%=password %>"
              style="width:240px;height:30px;">
           </div>
           <div style="margin-top: 10px;" style="text-align:left;" >
            <span style="float:left;padding-left:30px;font-size:12px;"><input id="flag" name="flag" type="checkbox" value="1" checked="checked" />记住账号</span>
           </div>
           <div style="clear:both;"></div>
           <div style="margin-top: 20px;">
            <p>
             <a href="#" id="submitbtn" style="width:80px;height:30px;" class="easyui-linkbutton" iconCls="icon-accept">登录</a>
             <a style="margin-left:30px;width:80px;height:30px;" href="#" class="easyui-linkbutton" iconCls="icon-arrow_undo">取消</a>
            </p>
           </div>
          </form>
         </div>
        </div>
        <div region="east" style="width:90px;" border="false">
        </div>
        <div region="south" style="height:0px;" border="false">
        </div>
       </div>
      </div>
     </div>
    <!-- 主要的内容部分结束 -->
   </div>
   </div>
 </div>
 <script type="text/javascript">
  $(function(){
   console.log("[汽车维修管理系统\n codeby:pengchan\n email:dntchenpeng@163.com \n csdn:http://blog.csdn.net/w3chhhhhh/]");
   // 提交表单
   $("#submitbtn").click(function(){
    // 判断是否为空
    if($("#account").val()==""){
     $.messager.alert('登录消息提示','用户的账号不能为空','info');
     return;
    }
    if($("#passwords").val()==""){
     $.messager.alert('登录消息提示','用户的密码不能为空','info');
     return;
    }
    $("#ff").submit();
   });
   $('#ff').form({
    url:"${pageContext.request.contextPath}/users/login.html",
    success:function(data){
     data = JSON.parse(data);
     try{
      if(data.isError){
       $.messager.alert('登录消息提示',data.errorMsg,'info');
      }else{
       //$.messager.alert("登录消息提示","登录成功!",'info');
       // 如果成功,就跳转到主页面
       // 这里先判断是否有历史请求,如果有就再次访问之前的页面
       var hisurl = '${hisURL}';
       if(hisurl!=null&&hisurl.length>0){
        window.location.href="${pageContext.request.contextPath}"+hisurl;
       }else{
        window.location.href="${pageContext.request.contextPath}/index/main.html";
       }
      }
     }catch(e){
      $.messager.alert("登录消息提示",'服务器返回异常,请稍后重试!','info');
     }
    },
    error:function(error){
     $("#ff").form("clear");
    }
   });
  });
 </script>
</body>
</html> 

后台处理的java部分代码:

package com.javaweb.controller;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.alibaba.fastjson.JSON;
import com.javaweb.entity.Account;
import com.javaweb.service.impl.ServiceFactory;
import com.javaweb.utils.BaseController;
import com.javaweb.views.LoginBean;
/**
 * 用户信息控制器
 * @author cp
 *
 */
@Controller
@Scope("prototype")
@RequestMapping("/users")
public class UserInfoController extends BaseController{
 private static final Logger logger = LoggerFactory.getLogger(UserInfoController.class);
 @Autowired
 private ServiceFactory serviceFactory;
 /**
  * 登录系统
  * @param request 请求
  * @param model  model
  * @param account 账户信息
  * @return
  */
 @RequestMapping("/login")
 @ResponseBody
 public String login(HttpServletRequest request,HttpServletResponse response,Model model,Account account){
  logger.info("用户尝试登录:"+JSON.toJSONString(account));
  if(account==null){
    return responseFail("提交的参数为空!");
  }else{
   if(StringUtils.isBlank(account.getAccountnumber())){
    return responseFail("用户的账号为空");
   }
   if(StringUtils.isBlank(account.getPasswords())){
    return responseFail("用户的密码为空");
   }
   LoginBean loginBean = null;
   loginBean = serviceFactory.getUserValidateService().userislawable(account);
   if(loginBean==null){
    return responseFail("用户名或者密码输入不正确");
   }else{// 如果成功
    // 把loginbean放到session中
    request.getSession().setAttribute("user", loginBean);
    // 放到cookie中
    String flag = request.getParameter("flag");
    // 如果需要记住账户就存储账号和密码
    if(flag!=null&&flag.equals("1")){
     Cookie cookie = new Cookie("cookie_user",loginBean.getAccountnumber()+"-"+loginBean.getPasswords());
     cookie.setMaxAge(60*60*24*3);// 保存
     response.addCookie(cookie);
     logger.info("存储用户的cookie:"+loginBean.getAccountnumber()+"-"+loginBean.getPasswords());
    }else{// 如果没有要求记住账户密码,就保存账户
     Cookie cookie = new Cookie("cookie_user", loginBean.getAccountnumber());
     cookie.setMaxAge(60*60*24*30);
     response.addCookie(cookie);
     logger.info("存储用户的cookie:"+loginBean.getAccountnumber());
    }
    // 跳转到主页
    logger.info("用户:"+loginBean.getAccountnumber()+"成功进入系统");
    return responseSuccess(loginBean, "登录成功");
   }
  }
 }
 /**
  * 退出系统登录
  * @param request  请求
  * @param model   模型
  * @param accountnum 账户号
  * @return
  */
 @RequestMapping("/{accountnum}/logout.html")
 public String logout(HttpServletRequest request,Model model,@PathVariable("accountnum") String accountnum){
  logger.info("用户"+accountnum+",退出系统登录...");
  // 设置session为空
  request.getSession().setAttribute("user", null);
  // 页面跳转
  return "login";
 }
} 

运行效果:

输入账号密码登录后:

退出后重新登录:

以上所述是小编给大家介绍的java web中使用cookie记住用户的账号和密码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • JavaWeb 中Cookie实现记住密码的功能示例

    本文主要内容: •1.什么是Cookie •2.Cookie带来的好处 •3.Cookie的主要方法 一.什么是Cookie cookie是一种WEB服务器通过浏览器在访问者的硬盘上存储信息的手段.Cookie的目的就是为用户带来方便,为网站带来增值.虽然有着许多误传,事实上Cookie并不会造成严重的安全威胁.Cookie永远不会以任何方式执行,因此也不会带来病毒或攻击你的系统.另外,由于浏览器一般只允许存放300个Cookie,每个站点最多存放20个Cookie,每个Cookie的大小限制为

  • JavaWeb使用Cookie模拟实现自动登录功能(不需用户名和密码)

    其中包含两个jsp文件,分别为login.jsp和index.jsp 代码如下: login.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "

  • java web中使用cookie记住用户的账号和密码

    毕业设计中需要用到记住账号密码的功能,网上搜到了一个解决方案,自己稍加改造就是下面的方法. 首先是登录的页面,当用户勾选记住密码,传递给controller(我用的SSM框架),后台设置cookie的值,然后下次登录的时候就不用再次输入账号和密码了. login.jsp的代码: <%@page import="org.apache.commons.lang.StringUtils"%> <%@ page language="java" conten

  • 在vue中使用cookie记住用户上次选择的实例(本次例子中为下拉框)

    最近工作中碰到一个需求,添加一条数据时,自动记住上次选择的下拉框的数据,刚开始觉得没思路,后来请教了项目组长,组长直接一句,这不很简单吧,直接用cookie,我:....... 好吧,都王的差不多了,于是经过一番百度实践,测试,总算是可以了,接下来就说说实践以及一些坑! 开发环境: webpack+vue+java后台 要实现这个小功能,其实只需要在vue中写相应的功能就可以了,并不需要在后台写什么,但是如果写的不正确,后台也是会报错的,代码如下: 先把这几个方法写上,删除的看需求决定需不需要:

  • java web中图片验证码功能的简单实现方法

    用户在注册网站信息的时候基本上都要数据验证码验证.那么图片验证码功能该如何实现呢? 大概步骤是: 1.在内存中创建缓存图片 2.设置背景色 3.画边框 4.写字母 5.绘制干扰信息 6.图片输出 废话不多说,直接上代码 package com.lsgjzhuwei.servlet.response; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.Buffer

  • JSP学习之Java Web中的安全控制实例详解

    本文实例讲述了JSP学习之Java Web中的安全控制.分享给大家供大家参考.具体如下: 一.目标: ① 掌握登录之后的一般处理过程: ② 能够为每个页面添加安全控制: ③ 能够共享验证代码: ④ 使用过滤器对权限进行验证: ⑤ 能够对文件的局部内容进行验证: ⑥ 掌握安全验证码的基本实现方式: ⑦ 通过异常处理增强安全性. 二.主要内容: ① 通过修改前面的登录功能,分别对管理员和普通用户的登录进行处理: ② 为管理员才能访问的页面添加控制: ③ 共享各个页面中的控制代码,使用专门的文件,然后

  • Java Web中常用的分页组件(Java端实现)

     前言 好久没写Web程序了,这一段时间看了看原来师弟们做的一些程序,感觉还是有很多不足,一个比较典型的例子就是分页查询的实现,正好借着这个机会简单记录一下. 分析 使用场景 "分页"在Web程序里非常常见,比如我们在页面上经常要展示一些列表信息,通常情况下,如果数据过多,我们在一屏上难以罗列出所有的记录,而且很多时候我们可能只是看看比较Top的一些记录,因此,在这种情况下使用"分页"查询只展示部分数据是比较合适的. 实现原理 从数据库角度上来说,分页查询实现的难度

  • Java Web中解决路径(绝对路径与相对路径)问题

    Java Web中解决路径问题: Java中使用的路径,分为两种:绝对路径和相对路径.归根结底,Java本质上只能使用绝对路径来寻找资源.所有的相对路径寻找资源的方法,都不过是一些便利方法.不过是API在底层帮助我们构建了绝对路径,从而找到资源的! 在开发Web方面的应用时, 经常需要获取 服务器中当前WebRoot的物理路径. 如果是Servlet , Action , Controller, 或则Filter , Listener , 拦截器等相关类时, 我们只需要获得ServletCont

  • 浅谈java web中常用对象对应的实例化接口

    1. request对象 是javax.servlet.HttpServletRequest接口的实例化 2. response对象 是javax.servlet.HttpServletResponse接口的实例化 3. session 对象 是javax.servlet.HttpSession接口的实例化 4. application对象 是javax.servlet.ServletContext接口的实例化 以上是常用的对象 5. pageContext对象 是javax.servlet.j

  • java web中对json的使用详解

    一.在Java Web的开发过程中,如果希望调用Java对象转化成JSON对象等操作.则需要引入以下jar包,不然运行时则报错. 1.commons-beanutils.jar 2.commons-collections.jar 3.commons-lang.jar 4.commons-logging-1.1.jar 5.ezmorph-1.0.3.jar 6.json-lib-2.0-jdk15.jar 7.有人说还需要 commons-httpclient.jar 引入成功之后,使用JSON

  • JAVA WEB中Servlet和Servlet容器的区别

    Servlet 很多同学可能跟我一样始终没有搞清楚到底什么是 Servlet,什么是 Servlet 容器.网上看了很多帖子,或许人家说的很清楚,但是自己的那个弯弯就是拐不过来. 想了很久说一下自己的理解. Java web 开发中为啥要有 Servlet 呢?是否可以不要. web开发的本质就一句话:客户端和服务器交换数据.于是你使用 Java 的 Socket 套接字进行编程,去处理客户端来的 tcp 请求,经过编解码处理读取请求体,获取请求行,然后找到请求行对应的处理逻辑步入服务器的处理中

  • java web中 HttpClient模拟浏览器登录后发起请求

    HttpClient模拟浏览器登录后发起请求 浏览器实现这个效果需要如下几个步骤: 1请求一个需要登录的页面或资源 2服务器判断当前的会话是否包含已登录信息.如果没有登录重定向到登录页面 3手工在登录页面录入正确的账户信息并提交 4服务器判断登录信息是否正确,如果正确则将登录成功信息保存到session中 5登录成功后服务器端给浏览器返回会话的SessionID信息保存到客户端的Cookie中 6浏览器自动跳转到之前的请求地址并携带之前的Cookie(包含登录成功的SessionID) 7服务器

随机推荐