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

📄 usersessioninterceptor.java

📁 一个jsp写的bbs
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package com.laoer.bbscs.web.interceptor;

import net.sf.struts.saif.ActionHaveForwardInterceptor;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForm;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import javax.servlet.ServletException;
import org.springframework.web.context.WebApplicationContext;
import javax.servlet.http.HttpSession;
import com.laoer.bbscs.service.config.SysConfig;
import org.springframework.web.context.support.WebApplicationContextUtils;
import com.laoer.bbscs.comm.Constant;
import com.laoer.bbscs.service.UserOnlineService;
import com.laoer.bbscs.service.UserService;
import com.laoer.bbscs.bean.UserOnline;
import com.laoer.bbscs.exception.*;
import java.util.Map;
import com.laoer.bbscs.web.action.ActionUtils;
import com.laoer.bbscs.web.servlet.UserCookie;
import com.laoer.bbscs.web.servlet.UserSession;
import com.laoer.bbscs.bean.UserInfo;
import java.util.Date;
import org.apache.commons.logging.LogFactory;
import org.apache.commons.logging.Log;
import com.laoer.bbscs.bean.UserDetail;
import com.laoer.comm.util.Util;
import java.util.Locale;
import com.laoer.bbscs.comm.IPSeeker;
import com.laoer.bbscs.service.SysStatService;

/**
 * <p>Title: Tianyi BBS</p>
 *
 * <p>Description: BBSCS</p>
 *
 * <p>Copyright: Copyright (c) 2006</p>
 *
 * <p>Company: Laoer.com</p>
 *
 * @author Gong Tianyi
 * @version 7.0
 */
public class UserSessionInterceptor
    implements ActionHaveForwardInterceptor {

  private static final Log logger = LogFactory.getLog(UserSessionInterceptor.class);

  public UserSessionInterceptor() {
  }

  /**
   * beforeAction
   *
   * @param action Action
   * @param actionMapping ActionMapping
   * @param actionForm ActionForm
   * @param httpServletRequest HttpServletRequest
   * @param httpServletResponse HttpServletResponse
   * @return ActionForward
   * @throws IOException
   * @throws ServletException
   * @todo Implement this net.sf.struts.saif.ActionHaveForwardInterceptor method
   */
  public ActionForward beforeAction(Action action, ActionMapping actionMapping,
                                    ActionForm actionForm, HttpServletRequest httpServletRequest,
                                    HttpServletResponse httpServletResponse) throws IOException,
      ServletException {
    HttpSession session = httpServletRequest.getSession();
    WebApplicationContext wc = WebApplicationContextUtils.getWebApplicationContext(action.
        getServlet().getServletContext());
    SysConfig sysConfig = (SysConfig) wc.getBean("sysConfig");

    /*
    if (!sysConfig.isOpen()) {
      httpServletRequest.setAttribute("closeReson", sysConfig.getCloseReson());
      return actionMapping.findForward("sysClosed");
    }*/

    if (sysConfig.isUsePass()) {
      UserCookie uc = new UserCookie(httpServletRequest, httpServletResponse, sysConfig);
      if (uc.isLoginPass()) { //通行证已登录
        boolean isNewUser = false;
        UserService userService = (UserService) wc.getBean("userService");
        UserOnlineService userOnlineService = (UserOnlineService) wc.getBean("userOnlineService");
        UserSession us = (UserSession) session.getAttribute(Constant.USER_SESSION_KEY); //取用户Session信息
        if (us == null) { //如果没有Session信息

          UserInfo ui = userService.findUserInfoByUserName(uc.getPusername());
          if (ui != null) { //用户存在,登录
            ui.setLastLoginIP(ui.getLoginIP());
            ui.setLastLoginTime(ui.getLoginTime());

            ui.setLoginIP(httpServletRequest.getRemoteAddr());
            ui.setLoginTime(new Date());
            ui.setUserLocale(httpServletRequest.getLocale().toString());

            long nowTime = System.currentTimeMillis();
            UserOnline uo = new UserOnline();
            uo.setAtPlace("");
            uo.setBoardID(0);
            uo.setNickName(ui.getNickName());
            uo.setOnlineTime(nowTime);
            uo.setUserGroupID(ui.getGroupID());
            uo.setUserID(ui.getId());
            uo.setUserName(ui.getUserName());
            uo.setValidateCode(ui.getId() + "_" + nowTime);
            if (ui.getHiddenLogin() == 1) { //用户隐身登录
              uo.setHiddenUser(1);
            }

            try {
              ui = userService.saveAtLogin(ui); //用户登录处理
              userService.writeUserFile(ui); //写用户个人文件
              uo = userOnlineService.createUserOnline(uo); //加入在线用户表
            }
            catch (BbscsException ex) {
              logger.error(ex);
            }
            Map[] pmap = userService.getUserPermission(ui);
            ActionUtils.createUserSession(httpServletRequest, ui, pmap, uo);
            uc.addCookies(ui, -1);

          }
          else { //用户不存在,是新用户
            isNewUser = true;
          }
        }
        else { //有Session信息
          if (!us.getUserName().equals(uc.getPusername())) { //用户Session中的用户名和Cookie中的用户名不一致
            UserInfo ui = userService.findUserInfoByUserName(uc.getPusername());
            if (ui != null) { //用户存在,重新登录
              session.removeAttribute(Constant.USER_SESSION_KEY);

              ui.setLastLoginIP(ui.getLoginIP());
              ui.setLastLoginTime(ui.getLoginTime());

              ui.setLoginIP(httpServletRequest.getRemoteAddr());
              ui.setLoginTime(new Date());
              ui.setUserLocale(httpServletRequest.getLocale().toString());

              long nowTime = System.currentTimeMillis();
              UserOnline uo = new UserOnline();
              uo.setAtPlace("");
              uo.setBoardID(0);
              uo.setNickName(ui.getNickName());
              uo.setOnlineTime(nowTime);
              uo.setUserGroupID(ui.getGroupID());
              uo.setUserID(ui.getId());
              uo.setUserName(ui.getUserName());
              uo.setValidateCode(ui.getId() + "_" + nowTime);
              if (ui.getHiddenLogin() == 1) { //用户隐身登录
                uo.setHiddenUser(1);
              }

              try {
                ui = userService.saveAtLogin(ui); //用户登录处理
                userService.writeUserFile(ui); //写用户个人文件
                uo = userOnlineService.createUserOnline(uo); //加入在线用户表
              }
              catch (BbscsException ex) {
                logger.error(ex);
              }
              Map[] pmap = userService.getUserPermission(ui);
              ActionUtils.createUserSession(httpServletRequest, ui, pmap, uo);
              uc.addCookies(ui, -1);

            }
            else { //用户不存在,是新用户
              isNewUser = true;
            }

          }
        } //Session判断结束
        if (isNewUser) { //创建社区用户
          Locale locale = httpServletRequest.getLocale();
          IPSeeker ipSeeker = (IPSeeker) wc.getBean("ipSeeker");
          UserInfo ui = new UserInfo();
          ui.setAcceptFriend(1);
          ui.setAnswer("Answer");
          ui.setArticleEliteNum(0);
          ui.setArticleNum(0);
          ui.setBirthDay(1);
          ui.setBirthMonth(1);
          ui.setBirthYear(1980);
          ui.setEmail(uc.getPusername() + "@");
          ui.setExperience(0);
          ui.setForumPerNum(0);
          ui.setForumViewMode(0);
          ui.setHavePic(0);
          ui.setLastLoginIP("");
          ui.setLastLoginTime(new Date());
          ui.setLifeForce(0);
          ui.setLiterary(0);
          ui.setLoginIP("");
          ui.setLoginTime(new Date());
          ui.setLoginTimes(1);
          ui.setNickName(sysConfig.bestrowScreenNickName(uc.getPusername()));
          ui.setPasswd("1234");
          ui.setPicFileName("");
          ui.setPostPerNum(0);

⌨️ 快捷键说明

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