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

📄 exceptioninterceptor.java

📁 Webwork+Spring+Freemake框架
💻 JAVA
字号:
package neo.core.common;

import java.io.PrintWriter;
import java.io.StringWriter;
import java.text.DecimalFormat;
import java.text.NumberFormat;

import javax.servlet.http.HttpServletRequest;

import neo.core.Constants;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import com.opensymphony.webwork.ServletActionContext;
import com.opensymphony.webwork.config.Configuration;
import com.opensymphony.webwork.dispatcher.multipart.MultiPartRequestWrapper;
import com.opensymphony.xwork.ActionContext;
import com.opensymphony.xwork.ActionInvocation;
import com.opensymphony.xwork.interceptor.Interceptor;

public class ExceptionInterceptor implements Interceptor {
	protected final Log log = LogFactory.getLog(getClass());

	public void destroy() {
	}

	public void init() {
	}

	public String intercept(ActionInvocation invocation) throws Exception {
		try {
			return invocation.invoke();
		} catch (NullPointerException ne) {
			// 处理由上传文件过大引发的空指针异常(处理得不是很完善)
			ActionContext ac = invocation.getInvocationContext();
			HttpServletRequest request = (HttpServletRequest) ac
					.get(ServletActionContext.HTTP_REQUEST);
			if (request instanceof MultiPartRequestWrapper) {
				MultiPartRequestWrapper multiWrapper = (MultiPartRequestWrapper) request;
				if (multiWrapper.hasErrors()) {
					String maxSize = Configuration
							.getString("webwork.multipart.maxSize");
					StringWriter sw = new StringWriter();
					ne.printStackTrace(new PrintWriter(sw));
					invocation.getInvocationContext().put(
							Constants.CONTEXT_EXCEPTION,
							"上传文件大小不能超过" + maxSize + "字节!");
					invocation.getInvocationContext().put(
							Constants.CONTEXT_EXCEPTION_INFO, sw.toString());
					return Constants.EXCEPTION;
				}
			} else {
				handleException(invocation, ne);
			}
			return Constants.EXCEPTION;
		} catch (Exception e) {
			handleException(invocation, e);
			return Constants.EXCEPTION;
		}

	}

	private void handleException(ActionInvocation invocation, Exception e) {
		String message = "Caught exception while invoking action: "
				+ invocation.getAction();
		log.error(message, e);

		StringWriter sw = new StringWriter();
		e.printStackTrace(new PrintWriter(sw));
		invocation.getInvocationContext().put(Constants.CONTEXT_EXCEPTION,
				e.toString());
		invocation.getInvocationContext().put(Constants.CONTEXT_EXCEPTION_INFO,
				sw.toString());
	}

}

⌨️ 快捷键说明

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