📄 baseaction.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 + -