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

📄 baseaction.java

📁 一个关于tlms的一个小程序 看看能否帮助到别人
💻 JAVA
字号:
package com.szmx.framework.base.web;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.beanutils.converters.LongConverter;
import org.apache.commons.beanutils.converters.IntegerConverter;
import org.apache.struts.actions.DispatchAction;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMessages;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.util.MessageResources;
import org.acegisecurity.ui.AbstractProcessingFilter;
import org.acegisecurity.ui.webapp.AuthenticationProcessingFilter;
import org.acegisecurity.context.HttpSessionContextIntegrationFilter;
import org.acegisecurity.AcegiSecurityException;

import com.szmx.framework.spring.context.ApplicationContextUtil;
import com.szmx.framework.util.convert.DateConverter;
import com.szmx.framework.util.convert.CurrencyConverter;
import com.szmx.framework.util.convert.TimestampConverter;
import com.szmx.framework.util.convert.BigDecimalConverter;
import com.szmx.framework.base.exception.BaseServiceException;
import com.szmx.framework.base.exception.BaseServiceErrorCodes;
import com.szmx.component.security.acegipro.util.AcegiSeurityExceptionI18nUtil;

import java.util.Date;
import java.sql.Timestamp;
import java.math.BigDecimal;

/**
 * ================================================================
 * Copyright 2006 szmx
 * <p/>
 * Change Revision
 * ---------------------------------------------------------------
 * Date               Author            Remarks
 * Mar 10, 2006       BZhang      Create class com.szmx.base.base.web.BaseAction
 * ================================================================
 */
public class BaseAction extends DispatchAction {
    public static final String CURRENT_GRANTED_AUTHORITY = "_CURRENT_GRANTED_AUTHORITY";
    protected static final String CURRENT_LOGINED_USER = "_CURRENT_LOGINED_USER_OBJECT";
    protected static final String KEY_ACEGI_EXCEPTION = AbstractProcessingFilter.ACEGI_SECURITY_LAST_EXCEPTION_KEY;
    protected static final String KEY_ACEGI_CONTEXT = HttpSessionContextIntegrationFilter.ACEGI_SECURITY_CONTEXT_KEY;
    protected static final String KEY_ACEGI_USERNAME = AuthenticationProcessingFilter.ACEGI_SECURITY_LAST_USERNAME_KEY; //AuthenticationProcessingFilter.ACEGI_SECURITY_FORM_USERNAME_KEY; 
    protected final Log logger = LogFactory.getLog(getClass());
    private static Long defaultLong = null;

    static {
        ConvertUtils.register(new CurrencyConverter(), Double.class);
        ConvertUtils.register(new DateConverter(), Date.class);
        ConvertUtils.register(new LongConverter(defaultLong), Long.class);
        ConvertUtils.register(new IntegerConverter(defaultLong), Integer.class);
        ConvertUtils.register(new BigDecimalConverter(null), BigDecimal.class);
        ConvertUtils.register(new TimestampConverter(), Timestamp.class);
    }

    public ActionForward execute(ActionMapping mapping,
                                 ActionForm form,
                                 HttpServletRequest request,
                                 HttpServletResponse response) {
        ActionForward forward = null;

        try{
            String actionMethod = getActionMethodByURI(request);//initAddEmpInfo
            forward = dispatchMethod(mapping, form, request, response, actionMethod);
        } catch (BaseServiceException se) {
            log.error("Service Exception", se);
            if (se.getArgs() == null) {
                saveActionErrorMessage(request, se.getMessage());
            } else {
                String [] argValues = new String[se.getArgs().length];
                for (int i=0; i<se.getArgs().length; i++) {
                    argValues[i] = MessageResources.getMessageResources("ApplicationMessages").getMessage(se.getArgs()[i]);
                    saveActionErrorMessage(request, se.getMessage(), argValues);
                }
            }
        } catch (Exception e) {
            log.error("Exception", e);
            saveActionErrorMessage(request, BaseServiceErrorCodes.SYSTEM_ERROR_001);
        }

        if (forward == null) {
            if (mapping.findForward("failure") != null) {
                return mapping.findForward("failure");
            } else {
                return mapping.findForward("systemfailure");
            }
        }

        return forward;
    }

    private String getActionMethodByURI(HttpServletRequest request) {
        String uri = request.getRequestURI();
        String full_action = uri.substring(uri.lastIndexOf("/")+1, uri.length());
        return full_action.substring(0, full_action.indexOf(".do"));
    }

    // Message Handler
    protected void saveActionTripMessage(HttpServletRequest request, String strMsg) {
        saveActionTripMessage(request, strMsg, null);
    }

    protected void saveActionTripMessage(HttpServletRequest request, String strMsg, String[] args) {
        ActionMessages msgs = new ActionMessages();
        msgs.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(strMsg, args));
        saveMessages(request.getSession(), msgs);
    }

    protected void saveActionErrorMessage(HttpServletRequest request, String strMsg) {
        saveActionErrorMessage(request, strMsg, null);
    }

    protected void saveActionErrorMessage(HttpServletRequest request, String strMsg, String[] args) {
        ActionMessages msgs = new ActionMessages();
        msgs.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(strMsg, args));
        saveErrors(request.getSession(), msgs);
    }

    protected void saveAcegiproSecurityMessage(HttpServletRequest request) {
        AcegiSecurityException acegiEx = (AcegiSecurityException) request.getSession().getAttribute(KEY_ACEGI_EXCEPTION);
        String messageKey = AcegiSeurityExceptionI18nUtil.getDefinedI18nMessasgeKey(acegiEx);
        saveActionErrorMessage(request, messageKey);
    }

    // Common Session
    protected Object getBean(String name) {
        return ApplicationContextUtil.getBean(name);
}

    protected String getLoginId(HttpServletRequest request) {
        return (String) getFromSession(request, KEY_ACEGI_USERNAME);
    }

    /*
     *  TODO: This method is to be customized by each project.
     */
    protected Object getLoginedUser(HttpServletRequest request) throws BaseServiceException {
        Object user = getFromSession(request, CURRENT_LOGINED_USER);
        if (user == null) {
            String empId = getLoginId(request);
            com.szmx.tlms.admin.service.AdminService adminService =
                    (com.szmx.tlms.admin.service.AdminService) getBean("adminService");
            user = adminService.getEmployee(empId);
            if (user == null) {
                throw new BaseServiceException(BaseServiceErrorCodes.SYSTEM_ERROR_002);
            }
            saveIntoSession(request, CURRENT_LOGINED_USER, user);
        }
        return user;
    }

    // Session Operation
    protected Object getFromSession(HttpServletRequest request, String key) {
        return request.getSession().getAttribute(key);
    }

    protected void removeFromSession(HttpServletRequest request, String key) {
        request.getSession().removeAttribute(key);
    }

    protected void saveIntoSession(HttpServletRequest request, String key, Object value) {
        request.getSession().setAttribute(key, value);
    }

}

⌨️ 快捷键说明

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