📄 mxideaaction.java
字号:
package org.artemis.manager.struts.action;
import java.rmi.RemoteException;
import java.util.Date;
import java.util.Enumeration;
import java.util.Locale;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.acegisecurity.AccessDeniedException;
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.beanutils.converters.IntegerConverter;
import org.apache.commons.beanutils.converters.LongConverter;
import org.apache.log4j.Logger;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;
import com.gsta.eshore.framework.util.converter.CurrencyConverter;
import com.gsta.eshore.framework.util.converter.DateConverter;
import com.gsta.eshore.framework.exeception.ClientException;
import com.gsta.eshore.framework.service.impl.ContextServiceLocator;
import com.gsta.eshore.framework.util.AppUtils;
public abstract class MxideaAction extends Action {
private static Logger logger = Logger.getLogger(MxideaAction.class);
private static final Long defaultLong = null;
static {
ConvertUtils.register(new CurrencyConverter(), Double.class);
ConvertUtils.register(new DateConverter(), Date.class);
ConvertUtils.register(new DateConverter(), String.class);
ConvertUtils.register(new LongConverter(defaultLong), Long.class);
ConvertUtils.register(new IntegerConverter(defaultLong), Integer.class);
}
public abstract ActionForward executeAction(ActionMapping mapping,
ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws ClientException, Exception;
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
ActionForward forward;
try {
forward = executeAction(mapping, form, request, response);
} catch (Exception e) {
e.printStackTrace();
logger.error("错误处理---BaseAction handleException");
//return handleException(e, request, mapping);
return handleException(mapping,request,e, mapping.getName());
}
return forward;
}
protected void removeSessionAttribute(HttpServletRequest req, String name) {
logger.debug("Removing " + name + " from session.");
HttpSession session = req.getSession(false);
if (session != null)
session.removeAttribute(name);
}
protected void removeRequestAttribute(final ActionMapping mapping,
final HttpServletRequest request) {
if (mapping.getAttribute() != null) {
if ("request".equals(mapping.getScope())) {
request.removeAttribute(mapping.getAttribute());
} else {
request.getSession().removeAttribute(mapping.getAttribute());
}
}
}
protected void setSessionAttribute(HttpServletRequest req, String name,
Object obj) {
logger.debug("Setting " + name + " of type " + obj.getClass().getName()
+ " on session.");
HttpSession session = req.getSession(false);
if (session != null)
session.setAttribute(name, obj);
}
protected Object getSessionAttribute(HttpServletRequest req, String name) {
logger.debug("Getting " + name + " from session.");
Object obj = null;
HttpSession session = req.getSession(false);
if (session != null)
obj = session.getAttribute(name);
return obj;
}
protected void printSession(HttpServletRequest req) {
HttpSession session = req.getSession(false);
if (session != null) {
Enumeration sessionContent = session.getAttributeNames();
logger.debug("Session 现有的内容:");
while (sessionContent.hasMoreElements())
logger.debug(" " + sessionContent.nextElement());
}
}
protected void printApplication() {
Enumeration applicationContent = servlet.getServletContext()
.getAttributeNames();
logger.debug("Application 现有的内容:");
while (applicationContent.hasMoreElements())
logger.debug(" " + applicationContent.nextElement());
}
protected void printRequest(HttpServletRequest req) {
if (req != null) {
Enumeration requestContent = req.getAttributeNames();
logger.debug("Request 现有的内容:");
while (requestContent.hasMoreElements())
logger.debug(" " + requestContent.nextElement());
}
}
protected void setupLocale(HttpServletRequest request) {
logger.debug("Setup locale.");
Locale locale = AppUtils.getLocaleFromCookie(request);
if (locale == null)
locale = getLocale(request);
if (!AppUtils.isValidLocale(locale))
locale = new Locale("en", "US");
logger.debug("Locale: " + locale);
setLocale(request, locale);
}
protected String getMessage(HttpServletRequest request, String key) {
Locale locale = getLocale(request);
return getResources(request).getMessage(locale, key);
}
protected void throwClientException(Throwable th, ActionMapping mapping,
String redirect) throws ClientException {
logger.error(th.getMessage());
String errorLink = redirect;
logger.debug("errorLink: " + errorLink);
throw new ClientException(th, errorLink);
}
/*
protected ActionForward handleException(ActionMapping mapping,HttpServletRequest request,Throwable e, String methodName)
{
String ErrorMsg;
if (e instanceof ClientException) {
ErrorMsg = "ClientException happened when Action " + methodName
+ " called! errorCode is "+((ClientException)e).getErrorCode();
logger.error(ErrorMsg, e);
List errList = new ArrayList();
errList.add("调用服务器端异常,请与管理员联系!");
ErrorForm errors = new ErrorForm(ErrorMsg, errList);
request.setAttribute("errors", errors);
}else if (e instanceof AccessDeniedException) {
ErrorMsg = "AccessDeniedException happened when Action " + methodName
+ " called! ";
logger.error(ErrorMsg, e);
List errList = new ArrayList();
errList.add("您的权限不足,请与管理员联系!");
ErrorForm errors = new ErrorForm(ErrorMsg, errList);
request.setAttribute("errors", errors);
}else if (e instanceof RemoteException) {
ErrorMsg = "RemoteException happened when Action " + methodName
+ " called! ";
logger.error(ErrorMsg, e);
List errList = new ArrayList();
errList.add("抱歉,系统发生严重错误!");
ErrorForm errors = new ErrorForm(ErrorMsg, errList);
request.setAttribute("errors", errors);
}else {
ErrorMsg = e.getMessage()+" happened when Action" + methodName
+ " called:";
logger.error(ErrorMsg, e);
List errList = new ArrayList();
errList.add("发生未知异常,请与管理员联系!");
ErrorForm errors = new ErrorForm(ErrorMsg, errList);
request.setAttribute("errors", errors);
}
return mapping.findForward("error");
}
*/
protected ActionForward handleException(ActionMapping mapping,HttpServletRequest request,Throwable e, String methodName)
{
String ErrorMsg;
if (e instanceof ClientException) {
ErrorMsg = "ClientException happened when Action " + methodName
+ " called! errorCode is "+((ClientException)e).getErrorCode();
logger.error(ErrorMsg, e);
ActionMessages errors = new ActionMessages();
errors.add("ClientException", new ActionMessage("error.ClientException"));
saveErrors(request, errors);
}else if (e instanceof AccessDeniedException) {
ErrorMsg = "AccessDeniedException happened when Action " + methodName
+ " called! ";
logger.error(ErrorMsg, e);
ActionMessages errors = new ActionMessages();
errors.add("AccessDeniedException", new ActionMessage("error.AccessDeniedException"));
saveErrors(request, errors);
}else if (e instanceof RemoteException) {
ErrorMsg = "RemoteException happened when Action " + methodName
+ " called! ";
logger.error(ErrorMsg, e);
ActionMessages errors = new ActionMessages();
errors.add("RemoteException", new ActionMessage("error.RemoteException"));
saveErrors(request, errors);
}else {
ErrorMsg = e.getMessage()+" happened when Action" + methodName
+ " called:";
logger.error(ErrorMsg, e);
ActionMessages errors = new ActionMessages();
errors.add("Exception", new ActionMessage("error.Exception"));
saveErrors(request, errors);
}
return mapping.findForward("error");
}
protected ActionForward handleException(ActionMapping mapping,HttpServletRequest request,String messageName,String message){
ActionMessages errors = new ActionMessages();
errors.add(messageName, new ActionMessage(message));
saveErrors(request, errors);
return mapping.findForward("error");
}
protected Object getApplicationAttribute(String attrName) {
return servlet.getServletContext().getAttribute(attrName);
}
protected void setApplicationAttribute(String attrName, Object obj) {
logger.debug("Setting " + attrName + " of type "
+ obj.getClass().getName() + " on Application.");
servlet.getServletContext().setAttribute(attrName, obj);
}
public Object getService(String serviceName) {
Object service = null;
try {
service = ContextServiceLocator.getInstance().getBean(serviceName);
} catch (Exception e) {
e.printStackTrace();
}
return service;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -