springbootajax实现登录功能_java web使用Cookie实现3天免登录功能

引言:在这样的一个业务场景下,进入到网站登录账号要求记住账号和密码,用户退出之后,浏览器能够记住用户的账号和密码,下次登录网站不需要输入账号和密码就能够登录账号。
那么如何做呢?那就是使用Cookie保存这次的会话信息,也就是登录过一次之后,几天内无需在输入账号和密码,实现3天免登录的功能。

     Cookie是客户端(一般指浏览器)请求服务器后服务器发给客户端的一个辨认标识,保存在客户端,当客户端再次向服务器发送请求时,会携带着这个辨认标识,服务器就可以通过这个标识来识别客户端的身份或状态等。

以下是login.jsp的代码

 三天免登录             

 ${msg }       

立即登录           

1.以下是User实体类的代码

public class User { private Integer id;//主键 public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public User() { super(); } private String username;//用户名 private String password;//密码 public User(Integer id, String username, String password) { super(); this.id = id; this.username = username; this.password = password; } }

2.UserDao代码和实现类

//接口

package edu.school.dao;

import edu.school.bean.User;

public interface UserDao {

User queryUserByUsernameAndPassword(String username,String password);//根据用户名和密码来登录

}

3.UserDaoImpl实现类,操作数据库的

package edu.school.dao.impl; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import edu.school.bean.User; import edu.school.dao.UserDao; import edu.school.utils.DbConn; public class UserDaoImpl extends DbConn implements UserDao { Connection conn= DbConn.getConnection();//数据库连接 public User queryUserByUsernameAndPassword(String username, String password) { User record=null; try{ String sql="select * from  user where username=? and password=?"; PreparedStatement pst=conn.prepareStatement(sql); pst.setString(1, username); pst.setString(2, password); ResultSet rs=pst.executeQuery(); if(rs.next()==false){ return null; }else{ record=new User(); record.setId(rs.getInt("id")); record.setUsername(rs.getString("username")); record.setPassword(rs.getString("password")); } }catch(Exception e){ e.printStackTrace(); } return record; }

4.UserService和UserServiceImpl类

service是业务层,业务层将dao层封装,用于LoginServlet进行调用

//接口 package edu.school.service; import edu.school.bean.User; public interface UserService {  /*    登录,返回null,表示登录失败,返回有个值,表示登陆成功。  */  public User login(User user); }

5.UserServiceImpl是对UserService的实现类

package edu.school.service.impl; import edu.school.bean.User; import edu.school.dao.UserDao; import edu.school.dao.impl.UserDaoImpl; import edu.school.service.UserService; public class UserServiceImpl implements UserService { private UserDao dao=new UserDaoImpl(); public User login(User user) { // TODO Auto-generated method stub return dao.queryUserByUsernameAndPassword(user.getUsername(), user.getPassword()); } }

6.LoginServlet代码

public class UserServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

private UserService service=new UserServiceImpl();

  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

doPost(request, response);//仍然执行doPost方法

}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

String username = request.getParameter("username");//获取用户名

        String password = request.getParameter("password");//获取密码

        String check=request.getParameter("che");//是否选择免登录

                 //处理业务

                 //1:判断是否选择三天免登录

        User user = service.login(new User(null,username,password));

        if (user == null) {//如果用户不存在

            request.setAttribute("msg","用户名或者密码错误");

            System.out.println("用户名或者密码错误");

            request.getRequestDispatcher("/WEB-INF/views/login.jsp").forward(request, response);

        } else { //如果用户存在且密码正确则进行将用户的信息保存          

        if(check!=null&&"yes".equals(check)){                

        System.out.println(check);

                 Cookie cookie1=new Cookie("username",URLEncoder.encode(username,"utf-8"));

                 Cookie cookie2=new Cookie("password",URLEncoder.encode(password,"utf-8"));

                 //设置cookie的有效期为3天,如果7天则保存为7

                 cookie1.setMaxAge(60*60*24*3);

                 cookie2.setMaxAge(60*60*24*3);

                 response.addCookie(cookie1);

                 response.addCookie(cookie2);

        request.getSession().setAttribute("user", user.getUsername());

        request.getRequestDispatcher("main.jsp").forward(request, response);

            System.out.println("登陆成功");

        }else{

        request.getSession().setAttribute("user", user.getUsername());

        request.getRequestDispatcher("main.jsp").forward(request, response);

        }

}

}

7.效果图

bedb4c9709dc49e9ccbd9c8a9ba81820.png

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值