您好,登錄后才能下訂單哦!
這篇文章主要講解了“JavaWeb怎么實現自動登錄功能”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“JavaWeb怎么實現自動登錄功能”吧!
本文實例為大家分享了JavaWeb實現簡單的自動登錄功能的具體代碼,供大家參考,具體內容如下
用最近所學的知識點實現自動登錄,主要有:
1、Filter過濾器
2、session & cookie
1. 項目目錄
2. 導入相應的jar包
1. 搭建環境
1.1 搭建數據庫、數據庫表
數據庫【user】,數據庫表【t_user】
1.2 搭建頁面
登錄頁面【login.jsp】
<body> <form action="LoginServlet" method="post"> 賬號:<input type="text" name="username"><br> 密碼:<input type="password" name="password"><br> <input type="checkbox" name="auto_login">自動登錄<br> <input type="submit" value="登錄"> </form> </body>
首頁【index.jsp】
注意:導入<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<body> 這是首頁, <c:if test="${not empty userBean }"> 歡迎你,${userBean.username } </c:if> <c:if test="${empty userBean }"> 你好,請登錄! </c:if> </body>
2. 登錄servlet代碼【LoginServlet.java】
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { String userName = request.getParameter("username"); String password = request.getParameter("password"); String autoLogin = request.getParameter("auto_login"); UserBean user = new UserBean(); user.setUsername(userName); user.setPassword(password); UserDao dao = new UserDaoImpl(); UserBean userBean = dao.login(user); if(userBean != null) { //成功了,進入首頁 request.getSession().setAttribute("userBean", userBean); response.sendRedirect("index.jsp"); }else { //不成功 request.getRequestDispatcher("login.jsp").forward(request, response); } } catch (SQLException e) { e.printStackTrace(); }
3. 過濾器filter代碼【AutoLoginFilter.java】
實現思路:
1、先判斷session是否有效,如果有效,就不用取cookie了,直接放行;
2、如果session失效了,那么就取cookie。
a. 取出cookie的值,然后完成登錄;
b. 把這個用戶的值存儲到session中;
c. 放行。
public void doFilter(ServletRequest req, ServletResponse response, FilterChain chain) throws IOException, ServletException { try { HttpServletRequest request = (HttpServletRequest) req; //先判斷,session中還有沒有userBean UserBean userBean = (UserBean) request.getSession().getAttribute("userBean"); //有---session有效 if(userBean != null) { chain.doFilter(request, response); }else {//session失效了----看cookie //1.來請求的時候,先從請求里面取出cookie,但是cookie里有很多的key-value Cookie[] cookies = request.getCookies(); //2.從一堆的cookie里面找出以前給瀏覽器發的那個cookie Cookie cookie = CookieUtil.findCookie(cookies, "auto_login"); //第一次登錄 if(cookie == null) { chain.doFilter(request, response); }else {//不是第一次登錄 String value = cookie.getValue(); String username = value.split("#")[0]; String password = value.split("#")[1]; //完成登錄 UserBean user = new UserBean(); user.setUsername(username); user.setPassword(password); UserDao dao = new UserDaoImpl(); userBean = dao.login(user); //將session值存到域中,方便下一次未過期前還可以用 request.getSession().setAttribute("userBean", userBean); chain.doFilter(request, response); } } } catch (Exception e) { e.printStackTrace(); chain.doFilter(req, response); } }
4. 其他代碼
4.1 方法findCookie()
作用:從一堆的cookie里面找出以前給瀏覽器發的那個cookie
【CookieUtil.java】
public class CookieUtil { public static Cookie findCookie(Cookie[] cookies,String name) { if(cookies != null) { for(Cookie cookie: cookies) { if(name.equals(cookie.getName())) { return cookie; } } } return null; } }
4.2 Bean類
【UserBean.java】
public class UserBean { private int id; private String username; private String password; public int getId() { return id; } public void setId(int 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; } }
4.3 UserDao & UserDaoImpl
UserDao.java
public interface UserDao { /** * 執行登錄,并且返回該用戶所有的信息 * @param user 執行登錄的用戶信息 * @return */ UserBean login(UserBean user) throws SQLException; }
UserDaoImpl.java
public class UserDaoImpl implements UserDao { @Override public UserBean login(UserBean user) throws SQLException { QueryRunner runner = new QueryRunner(JDBCUtil02.getDataSource()); String sql = "select * from t_user where username = ? and password = ?"; return runner.query(sql, new BeanHandler<UserBean>(UserBean.class),user.getUsername(),user.getPassword()); } }
感謝各位的閱讀,以上就是“JavaWeb怎么實現自動登錄功能”的內容了,經過本文的學習后,相信大家對JavaWeb怎么實現自動登錄功能這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。