日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

012_自动登录

發布時間:2025/4/17 编程问答 56 豆豆
生活随笔 收集整理的這篇文章主要介紹了 012_自动登录 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 新建一個名為AutoLogin的Web項目

2. c3p0-config.xml配置

<?xml version="1.0" encoding="UTF-8"?> <c3p0-config><!-- default-config 默認的配置 --><default-config><property name="driverClass">com.mysql.cj.jdbc.Driver</property><property name="jdbcUrl">jdbc:mysql://192.168.25.138:3306/studyjdbc?useSSL=true&amp;useUnicode=true&amp;characterEncoding=utf-8&amp;serverTimezone=Asia/Shanghai</property><property name="user">root</property><property name="password">lyw123456</property><!-- 初始化連接池數量 --><property name="initialPoolSize">10</property><!-- 數據庫連接最大空閑時間 --><property name="maxIdleTime">30</property><!-- 池子最大連接數 --><property name="maxPoolSize">100</property><!-- 池子最小連接數 --><property name="minPoolSize">10</property><!-- 最大Statements對象數 --><property name="maxStatements">200</property></default-config></c3p0-config>

3. 數據庫連接池JDBCUtil.java工具類

package com.lywgames.util;import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import javax.sql.DataSource; import com.mchange.v2.c3p0.ComboPooledDataSource;/*** 使用數據庫連接池的獲取的數據庫連接, 我們不用做關閉操作, 數據庫連接池自行管理*/ public class JDBCUtil {private static DataSource dataSource = null;static {dataSource = new ComboPooledDataSource();}public static DataSource getDataSource() {return dataSource;}/*** 獲取連接對象*/public static Connection getConn(){try {return dataSource.getConnection();} catch (SQLException e) {e.printStackTrace();}return null;}/*** 釋放資源* @param st* @param rs*/public static void release(Statement st, ResultSet rs){closeRs(rs);closeSt(st);}public static void release(Statement st){closeSt(st);}public static void closeRs(ResultSet rs){try {if(rs != null){rs.close();}} catch (SQLException e) {e.printStackTrace();}finally{rs = null;}}public static void closeSt(Statement st){try {if(st != null){st.close();}} catch (SQLException e) {e.printStackTrace();}finally{st = null;}}}

4. 用戶UserBean.java實體類

package com.lywgames.bean;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;} }

5. 用戶數據庫UserDao.java接口

package com.lywgames.dao;import com.lywgames.bean.UserBean;public interface UserDao {UserBean login(UserBean bean); }

6. 用戶數據庫UserDaoImpl.java實現類

package com.lywgames.dao.impl;import java.sql.SQLException; import org.apache.commons.dbutils.QueryRunner; import org.apache.commons.dbutils.handlers.BeanHandler; import com.lywgames.bean.UserBean; import com.lywgames.dao.UserDao; import com.lywgames.util.JDBCUtil;public class UserDaoImpl implements UserDao {@Overridepublic UserBean login(UserBean bean) {QueryRunner runner = new QueryRunner(JDBCUtil.getDataSource());String sql = "select * from t_user where username = ? and password = ?";try {return runner.query(sql, new BeanHandler<UserBean>(UserBean.class), bean.getUsername(), bean.getPassword());} catch (SQLException e) {e.printStackTrace();}return null;}}

7. 登錄LoginServlet.java

package com.lywgames.servlet;import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.lywgames.bean.UserBean; import com.lywgames.dao.UserDao; import com.lywgames.dao.impl.UserDaoImpl;public class LoginServlet extends HttpServlet {private static final long serialVersionUID = 1L;@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {req.setCharacterEncoding("utf-8");String username = req.getParameter("username");String password = req.getParameter("password");boolean autologin = false;if(req.getParameter("autologin") != null) {autologin = "1".equals(req.getParameter("autologin"));}UserBean userBeanSession = (UserBean)req.getSession().getAttribute("userBean");if(userBeanSession != null) {username = userBeanSession.getUsername();password = userBeanSession.getPassword();}if(username != null && username.length() > 0 && password != null && password.length() > 0) {UserBean bean = new UserBean();bean.setUsername(username);bean.setPassword(password);// 驗證用戶UserDao dao = new UserDaoImpl();UserBean userBean = dao.login(bean);if(userBean != null) {// 自動登錄創建Cookieif(autologin) {Cookie cookie = new Cookie("autologin", username+"&"+password);cookie.setMaxAge(60 * 60 * 24 * 7); // 7天有效期cookie.setPath("AutoLogin");resp.addCookie(cookie);}req.getSession().setAttribute("userBean", userBean);resp.sendRedirect("index.jsp");return;}}req.setAttribute("loginError", "登錄失敗, 請重試。");req.getRequestDispatcher("login.jsp").forward(req, resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);} }

8. 自動登錄過濾器AutoLoginFilter.java

package com.lywgames.filter;import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import com.lywgames.bean.UserBean; import com.lywgames.dao.UserDao; import com.lywgames.dao.impl.UserDaoImpl;public class AutoLoginFilter implements Filter {@Overridepublic void init(FilterConfig config) throws ServletException {}public Cookie containCookie(Cookie[] cookies) {if(cookies != null) {for (Cookie cookie : cookies) {if(cookie.getName().equals("autologin")) {return cookie;}}}return null;}@Overridepublic void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {HttpServletRequest request = (HttpServletRequest)req;System.out.println(request.getServletPath());// 如果客戶端是登錄請求或者請求login.jsp, 直接放行String servletPath = request.getServletPath();// Session里有用戶信息, 放行UserBean userBean = (UserBean)request.getSession().getAttribute("userBean");if(userBean != null) {chain.doFilter(req, res);return;}else {// 如果Session里沒有用戶信息, 查看CookieCookie[] cookies = request.getCookies();Cookie cookie = containCookie(cookies);if(cookie != null) {String[] ups = cookie.getValue().split("&");if(ups.length >= 2 && ups[0] != null && ups[0].length() > 0 && ups[1] != null && ups[1].length() > 0) {userBean = new UserBean();userBean.setUsername(ups[0]);userBean.setPassword(ups[1]);UserDao dao = new UserDaoImpl();UserBean bean = dao.login(userBean);if(bean != null) {request.getSession().setAttribute("userBean", userBean);chain.doFilter(req, res);return;}}}if(servletPath.equals("/LoginServlet.action")) {chain.doFilter(req, res);return;}}request.getRequestDispatcher("login.jsp").forward(req, res);}@Overridepublic void destroy() {}}

9. web.xml配置

10. 登錄login.jsp頁面

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><!DOCTYPE html> <html><head><meta charset="UTF-8" /><title>登錄界面</title></head><body><c:if test="${not empty userBean }"><% response.sendRedirect("index.jsp"); %></c:if>${loginError}<form action="LoginServlet.action" method="post">賬號:<input type="text" name="username"><br/>密碼:<input type="password" name="password"><br/><input type="checkbox" name="autologin" value="1">自動登錄<br/><input type="submit" value="登錄"></form></body> </html>

11. 主頁index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><!DOCTYPE html> <html><head><meta charset="UTF-8" /><title>首界面</title></head><body><c:if test="${not empty userBean}">歡迎您, ${userBean.username}!</c:if></body> </html>

12. 用戶數據庫信息

13. 運行項目進入登陸頁面

14. 輸入用戶信息登錄, 進入主頁

15. 新打開一個頁面, 進入主頁, 有用戶登錄信息。關閉瀏覽器, 重新打開, 進入主頁, 需要重新登錄。

16. 輸入用戶信息, 勾選自動登錄, 進入主頁

17. 新打開一個頁面, 進入主頁, 有用戶登錄信息。關閉瀏覽器, 重新打開, 進入主頁, 用戶自動登錄了, 有用戶登錄信息。

?

源碼:?https://download.csdn.net/download/aihiao/14974825

總結

以上是生活随笔為你收集整理的012_自动登录的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。