java旅行--第五站--servlet与JSP--java过滤器与session的小例子

来源:互联网 发布:java怎么求质数 编辑:程序博客网 时间:2024/06/06 03:11

首先看看不加拦截器时候的效果,如下,可以访问到action=dianming



然后定义一个过滤器,拦截action != login的action,如下

HttpServletRequest httpRequest = (HttpServletRequest)request;request.setCharacterEncoding("UTF-8");response.setCharacterEncoding("UTF-8");String action = httpRequest.getParameter("action");if(!("login".equals(action))) {String isLogin = (String)httpRequest.getSession().getAttribute("isLogin");if(isLogin == null || isLogin.isEmpty()) {httpRequest.getRequestDispatcher("/index.jsp").forward(request, response);}}// pass the request along the filter chainchain.doFilter(request, response);
再看看效果

接着进行登录,发现可以登录成功

然后因为我设置了session的有效期为一分钟,代码如下

//判断用户是否登陆成功private boolean loginSuccess(HttpServletRequest request,HttpServletResponse response) {// TODO Auto-generated method stubif(username != null && password != null) {//System.out.println(username + "::::" + password);for(User user : userList) {if(username.equals(user.getUsername()) && password.equals(user.getPassword())) {request.getSession().setAttribute("isLogin", username);HttpSession session = request.getSession();session.setMaxInactiveInterval(60);return true;}}}return false;}

一分钟后刷新页面,发现,返回到登录页面了


下面是对注册登录后,往数据库增加用户和查询用户的操作

//查询用户public ArrayList<User> getUserList() {if(conn == null) {conn = MysqlPool.getConn();}try {pstmt = conn.prepareStatement("select * from user");rs = pstmt.executeQuery();while(rs.next()) {user = new User();user.setUsername(rs.getString("username"));user.setPassword(rs.getString("password"));userList.add(user);}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {try {if(rs != null) {rs.close();rs = null;}if(pstmt != null) {pstmt.close();pstmt = null;}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}return userList;}//添加用户public void addUser(String name, String password) {if(conn == null) {conn = MysqlPool.getConn();}try {pstmt = conn.prepareStatement("insert into user(username, password) values(?,?)");pstmt.setString(1, name);pstmt.setString(2, password);pstmt.executeUpdate();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {try {if(rs != null) {rs.close();rs = null;}if(pstmt != null) {pstmt.close();pstmt = null;}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}

在servlet类中判断是注册还是登录操作

if(action != null) {if("login".equals(action)) {if(loginSuccess(request,response)) {request.getRequestDispatcher("/main.jsp").forward(request, response);} else {request.getRequestDispatcher("/index.jsp").forward(request, response);}} else if("register".equals(action)) {if(registerSuccess(request,response)) {request.getRequestDispatcher("/success.jsp").forward(request, response);} else {request.getRequestDispatcher("/index.jsp").forward(request, response);}} else if("dianming".equals(action)) {if(dianmingSuccess(request,response)) {request.getRequestDispatcher("/main.jsp").forward(request, response);} else {request.getRequestDispatcher("/main.jsp").forward(request, response);}} else {request.getRequestDispatcher("/index.jsp").forward(request, response);}} else {request.getRequestDispatcher("/index.jsp").forward(request, response);}

调用注册登录方法

//判断是否注册成功private boolean registerSuccess(HttpServletRequest request,HttpServletResponse response) {// TODO Auto-generated method stubif(username != null && password != null && !("".equals(username)) && !("".equals(password))) {//System.out.println("username:"+user.getUsername());for(User user : userList) {if(username.equals(user.getUsername())) {return false;}}return true;}return false;}//判断用户是否登陆成功private boolean loginSuccess(HttpServletRequest request,HttpServletResponse response) {// TODO Auto-generated method stubif(username != null && password != null) {//System.out.println(username + "::::" + password);for(User user : userList) {if(username.equals(user.getUsername()) && password.equals(user.getPassword())) {request.getSession().setAttribute("isLogin", username);HttpSession session = request.getSession();session.setMaxInactiveInterval(60);return true;}}}return false;}


0 0
原创粉丝点击