登陆页面实现保存帐号密码功能

简介: 本文主要讲如何登陆页面实现保存帐号密码功能

通过Cookie实现"记住我"的功能

1.登陆页面如下:


image.png

每个字段对应的属性name如下表:

 

用户帐号 name
登陆密码 password
验证码 checkNum
记住我 rememberMe

 

2.Action中的处理如下:


 

在用户第一次登陆后,进行Cookie进行处理

登陆处理

/**登陆*/
public String login() throws Exception{
  //处理验证码:判断验证码输入的是否正确
  boolean flag=VerificationCodeUtil.isCheckNum(request);
  if(!flag){
    this.addFieldError("checkNum", "验证码有误");
    return "loginUI";
  }
  User user=userService.findByLoginNameAndPassword(model.getName(),model.getPassword());
  if(user==null){
    addFieldError("login", "用户名或密码不正确");
    return "loginUI";
  }else{
    ActionContext.getContext().getSession().put("user", user);
    //处理Cookie
    addCookie(model.getName(),model.getPassword(),response,request);
    return "toIndex";
  } 
}


Cookie处理:

/**Cookie的实现  **/
private void addCookie(String name, String password,HttpServletResponse response, HttpServletRequest request) throws UnsupportedEncodingException {
  if(StringUtils.isNotBlank(name)&&StringUtils.isNotBlank(password)){
    //创建Cookie
    Cookie nameCookie=new Cookie("name",URLEncoder.encode(name,"utf-8"));
    Cookie pswCookie=new Cookie("psw",password);
    //设置Cookie的父路径
    nameCookie.setPath(request.getContextPath()+"/");
    pswCookie.setPath(request.getContextPath()+"/");
    //获取是否保存Cookie
    String rememberMe=request.getParameter("rememberMe");
    if(rememberMe==null){//不保存Cookie
      nameCookie.setMaxAge(0);
      pswCookie.setMaxAge(0);
    }else{//保存Cookie的时间长度,单位为秒
      nameCookie.setMaxAge(7*24*60*60);
      pswCookie.setMaxAge(7*24*60*60);
    }
    //加入Cookie到响应头
    response.addCookie(nameCookie);
    response.addCookie(pswCookie);
  }
}

3.JSP页面的处理如下:


在登陆的JSP页面中加入下面代码,以获得用户名和密码并自动填写:

<%
  String name="";
  String psw="";
  String checked="";
  Cookie[] cookies=request.getCookies();
  if(cookies!=null&&cookies.length>0){  
    //遍历Cookie
    for(int i=0;i<cookies.length;i++){
      Cookie cookie=cookies[i];
      //此处类似与Map有name和value两个字段,name相等才赋值,并处理编码问题 
      if("name".equals(cookie.getName())){
        name=URLDecoder.decode(cookie.getValue(),"utf-8");
        //将"记住我"设置为勾选 
        checked="checked";
      }
      if("psw".equals(cookie.getName())){
        psw=cookie.getValue();
      }
    }
  }
 %>

最后对用户名,密码,记住我字段添加value即可:

<TR>
  <TD class="td">用户帐号:</TD>
  <TD class="td"><input name="name" type="text" value="<%=name %>" id="name"/></TD>
</TR>
<TR>
  <TD class="td">登录密码:</TD>
  <TD class="td"><input name="password" type="password" value="<%=psw %>" id="password"></TD>
</TR>
<TR>
  <TD class="td">记住我:</TD>
  <TD class="td"><input name="rememberMe" type="checkbox" id="rememberMe" class="checkbox" <%=checked %>></TD>
</TR>

4.可能出现的问题

如果出现设置了却没有自动填写用户名和密码,则可能是地址的问题:


解决办法:


1.进入Internet选项,点击浏览历史记录一栏的设置

image.png


2.进入浏览记录设置后,点击查看文件

image.png




3.在弹出的文件夹里找到Cookie文件,名字为你的项目名+“/”,格式如下图,这个文件一般在文件夹的最后面,将此文件复制到桌面,注:此文件是无法直接在该文件夹里打开的。

image.png




4.如下图,第三行为保存项目工程的路径,此时在Action里的Cookie处理中,根据该地址设置对应的Cookie父路径即可,上文已经设置。


image.png

相关文章
|
3月前
|
数据安全/隐私保护
在某网站的登录页面登录时如果选择“记住用户名”,登录成功后会跳转到一个中间层(页面代码将登录的用户名和密码存在cookie),中间页面中存在一个超链接,单击超链接可以链接到第三个页面查看信息。若选择“
该博客文章通过示例代码和运行结果截图,展示了网站登录过程中如何通过中间层页面使用cookies技术实现“记住用户名”功能,并在点击超链接后查看保存的用户名和密码信息。
在某网站的登录页面登录时如果选择“记住用户名”,登录成功后会跳转到一个中间层(页面代码将登录的用户名和密码存在cookie),中间页面中存在一个超链接,单击超链接可以链接到第三个页面查看信息。若选择“
|
6月前
|
开发工具
阿里云本机一键登录授权页面修改
阿里云本机一键登录授权页面修改
342 0
|
前端开发 JavaScript
HTML+CSS+JS 实现一个漂亮的登陆页面
HTML+CSS+JS 实现一个漂亮的登陆页面
493 1
HTML+CSS+JS 实现一个漂亮的登陆页面
|
前端开发 数据安全/隐私保护
|
安全 数据安全/隐私保护
浏览器无法保存密码,每次登录网页都要重新登录
浏览器无法保存密码,每次登录网页都要重新登录
浏览器无法保存密码,每次登录网页都要重新登录
防止用户复制管理员网址进入页面、设置禁用隐藏按钮权限以及防止修改禁用按钮权限
防止用户复制管理员网址进入页面、设置禁用隐藏按钮权限以及防止修改禁用按钮权限
115 0
|
前端开发 PHP
如何实现网站用户登陆之后跳转到登陆之前的页面
主体思路就是在网站的公共头部文件里session中记录当前网页地址以及上一个页面的网页地址,然后就是登陆成功之后如果session中有上一个页面的网址就跳转到上一个页面去,如果session中没有上一个页面就跳转到会员中心去。
292 1
|
SQL 弹性计算 PHP
ecshop重置后台用户的密码方法
ecshop重置后台用户的密码方法
344 0
Confluence 6 管理员联系表单的后台配置界面
管理员联系表单的后台配置界面截图和配置。   对输入的数据进行编辑和选择是否启用发送电子邮件给管理员 https://www.
980 0
|
数据安全/隐私保护 API 移动开发
登陆功能的实现
我不喜欢废话,上代码 /// /// 运行程序返回进程pid /// /// /// static public int RunProgram(string qqPath) ...
934 0