1.编写自己的个性化异常类。该类中,可以包含成员变量errorCode.需要填充properties占位符的args数组的Object数组类型成员变量。并定义他们的get()方法。定义四个构造函数,第一个构造函数为空,第二个构造函数为带errorCode,Object数组的构造方法,第三个为带errorCode参数的构造方法,第四为带errorCode参数,一个Object类型参数(非数组)的构造方法。后两个构造方法的实现中可以直接调用第二个声明个构造方法。
ErrorCodeException类:
package wiki.struts;
public class ErrorCodeException extends RuntimeException {
//define the error code,
//it is related to the properties file.
private String errorCode;
//if you want to dynamic fill with the args,use it object array.
private Object[] args;
public ErrorCodeException(){}
//if not need to fill with the args in the properties.
public ErrorCodeException(String errorCode){
this(errorCode,null);
}
//if you want to fill with the args in the properties.
public ErrorCodeException(String errorCode,Object args0){
this(errorCode,new Object[]{args0});
}
public ErrorCodeException(String errorCode,Object[] args){
this.errorCode = errorCode;
this.args = args;
}
public String getErrorCode() {
return errorCode;
}
public Object[] getArgs() {
return args;
}
}
2.编写相应的ExceptionHandler类,继承自原有的ExceptionHandler。重写execute()方法。
ErrorCodeExceptionHandler类:
package wiki.struts;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.Globals;
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.ExceptionHandler;
import org.apache.struts.config.ExceptionConfig;
import org.apache.struts.util.ModuleException;
public class ErrorCodeExceptionHandler extends ExceptionHandler {
public ActionForward execute(
Exception ex,
ExceptionConfig ae,
ActionMapping mapping,
ActionForm formInstance,
HttpServletRequest request,
HttpServletResponse response)
throws ServletException {
if(!(ex instanceof ErrorCodeException)){
return super.execute(ex, ae, mapping, formInstance, request, response);
}
ActionForward forward = null;
ActionMessage error = null;
String property = null;
// Build the forward from the exception mapping if it exists
// or from the form input
if (ae.getPath() != null) {
forward = new ActionForward(ae.getPath());
} else {
forward = mapping.getInputForward();
}
// Figure out the error
if (ex instanceof ModuleException) {
error = ((ModuleException) ex).getActionMessage();
property = ((ModuleException) ex).getProperty();
} else {
//deal with the exception,if the instance of
//exception is ErrorCodeException.
ErrorCodeException ece = (ErrorCodeException)ex;
error = new ActionMessage(ece.getErrorCode(), ece.getArgs());
property = error.getKey();
}
this.logException(ex);
// Store the exception
request.setAttribute(Globals.EXCEPTION_KEY, ex);
this.storeException(request, property, error, forward, ae.getScope());
return forward;
}
}
3.配置struts-config.xml<exception/>中的key值可以任意指定,type为自己的个性化异常类,handler为在2中编写的ExceptionHandler类。
<exception key="error.exception"
type="wiki.struts.ErrorCodeException"
handler="wiki.struts.ErrorCodeExceptionHandler"
path="/login_error.jsp"
/>
分享到:
相关推荐
- **Struts2.x** 配置文件较少,主要为struts.xml,支持注解配置,减少XML配置的繁琐。 8. **插件与扩展性**: - **Struts1.x** 插件较少,扩展性相对较弱。 - **Struts2.x** 有丰富的插件系统,如Ajax、...
8. **Exception Handling**:Struts1.x提供了异常处理机制,通过配置struts-config.xml中的全局异常映射,可以捕获并处理运行时异常,提高系统的健壮性。 9. **Plug-in架构**:Struts1.x具有强大的插件扩展能力,...
在Struts1.x中,Action是核心组件之一,它必须继承自org.apache.struts.action.Action类,并且需要覆盖execute方法。Action对象由框架创建和管理,每一个HTTP请求都对应一个Action实例。然而,在Struts2.x中,Action...
以下是关于Struts1.x国际化的一些核心知识点: 1. **资源包(Resource Bundle)**: - 在Java中,资源包是包含本地化字符串和其他可配置资源的文件。对于Struts1,这些通常以`.properties`格式存储,例如`messages...
### Struts1.x 技术课程讲解 #### 一、Struts1.x 概述 ...通过以上内容的学习,学员将能够掌握 Struts1.x 的核心概念、工作原理及开发流程,进而能够独立开发基于 Struts1.x 的企业级 Web 应用程序。
9. **异常处理**:Struts1.x提供了异常处理机制,允许开发者定义全局或特定Action的异常处理策略。 10. **数据校验**:ActionForm的validate()方法可以实现服务器端的数据校验,错误信息可以通过ActionErrors对象...
8. **异常处理**:通过配置全局异常处理,Struts 1.x 可以捕获并处理应用程序中抛出的异常,提供统一的错误页面,增强了用户体验。 9. **Validator框架**:Struts 1.x 的Validator框架用于数据验证,可以定义一系列...
5. **异常处理和验证**:学习如何利用Struts1.x的验证框架和异常处理机制来增强应用的健壮性。 6. **最佳实践**:学习社区推荐的最佳实践,避免常见的设计和安全陷阱。 总之,Struts1.x作为Java Web开发中的经典...
通过分析这个Struts1.x_Project,我们可以学习到如何配置Struts框架,理解ActionForm、Action、Struts-config.xml的作用,以及如何实现I18N和表单验证。同时,项目的数据库操作部分也是Java Web开发中重要的实践环节...
通过以上知识点的学习,开发者可以熟练地在Struts1.x框架下利用JDBC进行数据库操作,实现Web应用的增删改查功能。在实际开发中,还需要结合具体项目需求,考虑数据缓存、安全性、可扩展性等因素,以构建高效、稳定的...
在学习Struts1.x的过程中,理解MVC模式以及ActionForm和Action的作用至关重要。此外,熟练掌握配置文件的编写,能让你更有效地组织和控制应用的流程。随着对框架的深入理解和实践,你将能够构建出更加复杂和功能丰富...
Struts1.x是一个经典的Java Web框架,它在20世纪末至21世纪初被广泛使用,用于构建基于MVC(Model-View-Controller)架构的Web应用。本示例将探讨如何使用Struts1.x实现一个简单的登录功能。首先,我们需要理解...
首先,我们来看核心的`struts.jar`文件。这是Struts框架的核心库,包含了所有必要的类和接口,用于处理HTTP请求,管理Action类,以及实现MVC模式。它包含了ActionForm、Action、Dispatcher等关键组件,这些组件协同...
freemarker与struts 1.x 结合,生成html 在http://blog.csdn.net/chen1255 的web中有详细描述关于freemarker与struts1.x的结合
Struts 2.x权威指南(第3版)
在Struts1.x中实现国际化,开发者需要进行一系列配置和编码工作。 首先,我们需要了解如何在Struts1.x中设置国际化资源文件。这些文件通常是.properties格式,例如`messages_en.properties`(英语版本)和`messages...
此外,对于Struts1.x中与Action相关的异常,如`org.apache.struts.action.ActionException`,你可以在Action类中直接抛出,框架会自动处理这些异常,并根据`struts-config.xml`中的配置进行相应操作。 总结来说,...
7. **国际化和本地化**:Struts1.x支持多语言,通过资源文件实现不同地区的文本和日期格式。 8. **异常处理**:通过配置ExceptionMapping,可以全局地处理应用程序中抛出的异常,提高程序的健壮性。 9. **...
8. **异常处理**:通过定义全局异常映射,Struts1.x可以统一处理应用程序可能出现的错误和异常,提高用户体验。 9. **安全考虑**:购物网站需要考虑安全性问题,如防止SQL注入、XSS攻击等。Struts1.x可以通过配置和...
6. **异常处理**:通过`global-exceptions`配置,Struts1.x可以捕获并处理全局范围内的异常,提供统一的错误页面,增强了应用的健壮性。 7. **拦截器(Plug-ins)**:虽然Struts1.x的拦截器功能相对较弱,但仍然...