⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 userfilter.java

📁 基于struct结构的jsp
💻 JAVA
字号:
package com.ntsky.bbs.service;

import java.util.*;
import javax.servlet.http.*;
import org.apache.log4j.Logger ;

import com.ntsky.bbs.action.Constant;
import com.ntsky.bbs.service.*;
import com.ntsky.bbs.service.db.DBUser;

/**
 * <p>Title: Ntsky OpenSource BBS</p>
 * <p>Description:  用户过滤</p>
 * <p>Copyright: Copyright (c) 2004</p>
 * <p>Company: WWW.FM880.COM</p>
 * @author 姚君林
 * @version 1.0
 */

public class UserFilter{
    private final static Logger logger = Logger.getLogger(UserFilter.class);
    private static UserFilter userFilter = null;

    public UserFilter(){}

    public static synchronized UserFilter getInstance(){
        if(userFilter == null){
            userFilter = new UserFilter();
        }
        return userFilter;
    }

    /**
     * 过滤用户的方法
     */
    public Map filterUser(HttpSession session,HttpServletRequest request){
        Map userRoleMap = null;
        User user = getSessionUser(session, "user");
        //只有当用户非注销时,而且用户为空,从cookie中获取值
        if (isUserLogout(session, "userLogout")) {
            if (user == null) {
                getCookie(request, session);
            }
            else {
                //获取用户角色
                userRoleMap = user.getUsrRoleMap();
            }
        }
        return userRoleMap;
    }


    /**
     * 用户是否注销过
     */
    public boolean isUserLogout(HttpSession session,String param){
        String logoutUser = (String)session.getAttribute(param);
        //如果用户没有注销
        if(!"logout".equals(logoutUser)){
            return true;
        }
        else
            return false;
     }
     /**
      * 从session中获得用户数据
      */
     public User getSessionUser(HttpSession session,String param){
         User user = (User)session.getAttribute(param);
         return user;
     }

     /**
      * 获取cookie中用户的值
      */
     public void getCookie(HttpServletRequest request,HttpSession session){
         UserFactory factory = UserFactory.getInstance();
         //获取用户本地的cookie
         Cookie[] cookie = request.getCookies();
         if (cookie != null) {
             if (cookie.length > 0) {
                 for (int i = 0; i < cookie.length; i++) {
                     logger.info("设置的cookie名 : " + cookie[i].getName());
                     //获取cookieName为cookie的cookie
                     String cookieName = cookie[i].getName();
                     if (cookieName.equals("cookieId")) {
                         /**
                          * 由cookie的值取得整个用户实例
                          */
                         String usrId = cookie[i].getValue();
                         logger.info("cookie的值为 : " + usrId);
                         //先更新登陆次数
                         factory.upUserLoginInfo("usrId", usrId);
                         User user = factory.userInfo(Integer.parseInt(usrId));
                         /**
                          * 设置session返回
                          */
                         session.setAttribute(Constant.USER_KEY, user);
                     }
                     /*else {
                         logger.info("没有该用户的cookie,跳转到filter页面");
                     }*/
                 }
             }

         }
     }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -