过滤Login自动登录

来源:互联网 发布:做淘宝直播怎么找商家 编辑:程序博客网 时间:2024/06/11 17:51
<c3p0-config><!-- 默认配置,如果没有指定则使用这个配置 --><default-config><!-- 基本配置 --><property name="driverClass">com.mysql.jdbc.Driver</property><property name="jdbcUrl">jdbc:mysql://localhost:3306/test</property><property name="user">root</property><property name="password">root</property><!--扩展配置--><property name="checkoutTimeout">30000</property><property name="idleConnectionTestPeriod">30</property><property name="initialPoolSize">10</property><property name="maxIdleTime">30</property><property name="maxPoolSize">100</property><property name="minPoolSize">10</property><property name="maxStatements">200</property></default-config> </c3p0-config> 
import org.apache.commons.dbutils.QueryRunner;import org.apache.commons.dbutils.handlers.BeanHandler;import xinfe.domain.User;import xinfe.utils.C3P0Utils;public class UserDao {/** * 用户登录 * @param username * @param password * @return * @throws Exception  */public User login(String username, String password) throws Exception {QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());String sql = "select * from user where username=? and password=?";return qr.query(sql,new BeanHandler<>(User.class),username,password);}}
public class User {private int id;private String username;private String password;private String email;private String name;private String sex;private String birthday;//get、set省略public User(int id, String username, String password, String email, String name, String sex, String birthday) {super();this.id = id;this.username = username;this.password = password;this.email = email;this.name = name;this.sex = sex;this.birthday = birthday;}public User() {super();}@Overridepublic String toString() {return "User [id=" + id + ", username=" + username + ", password=" + password + ", email=" + email + ", name="+ name + ", sex=" + sex + ", birthday=" + birthday + "]";}}
import xinfe.dao.UserDao;import xinfe.domain.User;public class UserService {public User login(String username, String password) throws Exception {UserDao dao = new UserDao();return dao.login(username,password);}}
import java.sql.Connection;import java.sql.SQLException;import org.apache.commons.dbutils.DbUtils;import com.mchange.v2.c3p0.ComboPooledDataSource;public class C3P0Utils {//ThreadLocal用来给当前线程赋值private static ThreadLocal<Connection> tl = new ThreadLocal<Connection>();//创建连接池对象private static ComboPooledDataSource dataSource = new ComboPooledDataSource("itcast");//提供获取连接池的方法public static ComboPooledDataSource getDataSource(){return dataSource;}//提供获取连接的方法public static Connection getConnection() throws SQLException{Connection conn = tl.get();if(conn==null){conn = dataSource.getConnection();tl.set(conn);}return conn;}//解除绑定,提交事务,归还连接public static void commitAndClose(){Connection conn;try {//提交事务,归还连接conn = getConnection();DbUtils.commitAndCloseQuietly(conn);//接触绑定tl.remove();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}//解除绑定,回滚事务,归还连接public static void rollbackAndClose(){try {//回滚事务,归还连接Connection conn = getConnection();DbUtils.rollbackAndCloseQuietly(conn);//解除绑定tl.remove();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}//开启事务public static void startTransaction() throws SQLException{Connection conn = getConnection();conn.setAutoCommit(false);}}
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 xinfe.domain.User;import xinfe.service.UserService;public class LoginServlet extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//设置响应文件mime类型response.setContentType("text/html;charset=utf-8");try {//获取登录信息(用户名和密码)String username = request.getParameter("username");String password = request.getParameter("password");UserService service = new UserService();User user = service.login(username,password);if(null != user){//登录成功//登录成获取session把登录信息保存到session中request.getSession().setAttribute("user", user);//是否需要自动登录String autoLogin = request.getParameter("autoLogin");if("ok".equals(autoLogin)){//需要自动登录//1.将用户名和密码保存到cookie中Cookie cookie = new Cookie("autoUser",username + "&" + password);//2.设置cookie时间和绑定路径cookie.setMaxAge(3600000);cookie.setPath(request.getContextPath()+"/");response.addCookie(cookie);}request.getRequestDispatcher("/success.jsp").forward(request, response);}else{//登录失败request.setAttribute("errorMsg","你的用户名或密码错误");request.getRequestDispatcher("/login.jsp").forward(request, response);}} catch (Exception e) {e.printStackTrace();request.setAttribute("errorMsg","当前功能正在维护...");request.getRequestDispatcher("/login.jsp").forward(request, response);}}protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}}
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 xinfe.domain.User;import xinfe.service.UserService;/** * 过滤Login自动登录 *  * @author zx */public class LoginFilter implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {}@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)throws IOException, ServletException {//过滤请求HttpServletRequest req = (HttpServletRequest) request;//设置编码req.setCharacterEncoding("utf-8");//获取session中的用户信息Object object = req.getSession().getAttribute("user");if(null == object){//获取请求携带的所有cookie对象Cookie[] cookies = req.getCookies();//查询是否携带了名称autoUser的cookie对象Cookie c = null;if(cookies != null && cookies.length > 0){for(Cookie cookie : cookies){if("autoUser".equals(cookie.getName())){c = cookie;break;}}}//判断c是否为空 当不为空时,帮用户实现自动登录功能if(c!=null){try {String username = c.getValue().split("&")[0];String password = c.getValue().split("&")[1];UserService service = new UserService();User user = service.login(username, password);if(null != user){System.out.println("自动登录");req.getSession().setAttribute("user", user);}} catch (Exception e) {}}}chain.doFilter(req, response);}@Overridepublic void destroy() {}}
原创粉丝点击