`

struts1.3-exception

阅读更多

一 配置异常(在struts-config.xml文件中定义),定制异常有两种:
1 全局异常(Global Exceptions)
<global-exceptions>
 <exception key="invalideUser"
 path="/Login.jsp" type="com.future.struts.MyException" />
</global-exceptions>
2 局部异常(Local Exception)
<action-mappings>
  <action attribute="loginForm" name="loginForm"
   path="/loginAction(出错转向的路径)" scope="request"
   input="/login.jsp"//异常转向的页面,同exception中的path,优先级path高于input
  />
  <exception key="invalideUser(异常信息的key)" path="/Error.jsp"
  type="cn.itcast.ItcastException(异常类全名)" />
</action-mappings>
 path:出现异常后跳转的页面
 key:异常信息的键,对应的值在资源文件当中
 type:所要处理的异常类
二 在相应的action中的execute方法中抛出异常
三 在异常处理页面(path所指的页面)使用html:errors标签打印异常信息
1 建立资源文件ApplicationResources.properties
内容:invaliduser=it is an invalid user(key/value)
2 配置struts-config.xml文件
  <message-resources parameter="cn.itcast.ApplicationResources" key="invalideuser"/>
3 使用html:errors标记打印信息
  <html:errors />
  --------------------------------------------
1 编程式异常
  * 截获异常
  * 创建相应的异常消息
  * 传递异常消息
  * 转向相应的页面处理异常
2 声明式异常(自动处理的异常)
  * 在struts-config.xml文件中配置<exeception/>标签
  * 理解局部和全局exception
  * 注意局部<exception/>标签需要配置到<forward/>标签的前面
 
  <exeception/>标签中的属性说明:
      * key:指异常信息对应的国际化消息文本,这个key值需要在国际化资源文件中定义
      * type:处理那种异常
      * path:定义一但出现异常,需要转向那个页面,如果不定义path,
             默认情况下将使用<action>标签中input属性对应的页面
      * scope:可以取值request和session,默认为request
      * handler:导常的处理类,struts默认采用org.apache.struts.action.ExceptionHandler,
                如果做个性化的异常处理可以继承此类复写相应的方法
-------------------------------------------------------------------------
个性异常类定义
一 方法:
1 定义MessageResources.propertices资源文件
2 在struts-config中配置<exception/>
  <exception key="error.exception" type="com.bjsxt.struts.ErrorCodeException"
   handler="com.bjsxt.struts.ErrorCodeException" />
3 编写异常类ErrorCodeException继承RuntimeException
public class ErrorCodeException extends RuntimeException {
 private String errorCode;//这是key对应的值
 private Object[] args;//这是参数集合
 public ErrorCodeException(String errorCode){
  this(errorCode,null);
 }
 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;
 }
}
4 编写ErrorCodeExceptionHandler类继承ExceptionHandler,
  复写public ActionForward execute(Exception ex, ExceptionConfig ae,
         ActionMapping mapping, ActionForm formInstance,
         HttpServletRequest request, HttpServletResponse response)
         throws ServletException{}方法:
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;
         ActionMessage error;
         String property;

         // 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 {
          //改修这个地方
          //----------------------------------------------
          ErrorCodeException ece=(ErrorCodeException)ex;
          String errorCode=ece.getErrorCode();
          Object[] args=ece.getArgs();
          error = new ActionMessage(errorCode, args);
          property = error.getKey();
          //------------------------------------------------
             //error = new ActionMessage(ae.getKey(), ex.getMessage());
             //property = error.getKey();
         }

         this.logException(ex);

         // Store the exception
         request.setAttribute(Globals.EXCEPTION_KEY, ex);
         this.storeException(request, property, error, forward, ae.getScope());

         if (!response.isCommitted()) {
             return forward;
         }
         return null;
     }
}
5 页面直接抛出异常
public void login(String username,String password){
  if(!"admin".equals(username)){
    throw new ErrorCodeException("user.not.found",username,age);
  }
}
---------------------------------------------------------------------
二 方法:
1 定义MessageResources.propertices资源文件
  内容:error.exception={0}
2 在struts-config中配置<exception/>
  <exception key="error.exception" type="com.bjsxt.struts.ErrorCodeException"/>
3 编写异常类ErrorCodeException继承RuntimeException
public class ErrorCodeException extends RuntimeException {
  public ErrorCodeException(String msg){
    super(msg);
  }
}
4 页面直接抛出异常
public void login(String username,String password){
  if(!"admin".equals(username)){
    throw new ErrorCodeException("名称"+usrname+"错误!");
  }
}


--------------------------------------------------------------------------
1 ApplicationResources.properties文件
   num2Meg=is not a double
2 struts-config.xml
   <message-resources parameter="ApplicationResources" />
3 ActionMessages errs=new ActionMessages();
errs.add("num1Error",new ActionMessage("num2Meg"));
//errs.add(ActionMessages.GLOBAL_MESSAGE,new ActionMessage("num2Meg"));


this.saveErrors(request,errs);

页面
<html:errors property="num1Error"/>
//<html:errors/>//全局不能指定property
errs.header="<script>alert("
errs.footer=")</script>"

分享到:
评论

相关推荐

    Struts1.3和config配置详解

    Struts1.3是Apache软件基金会的一个开源框架,主要用于构建基于Java EE的Web应用程序。它遵循Model-View-Controller(MVC)设计模式,提供了一种结构化的方式来组织应用程序,使得开发人员能够更有效地处理业务逻辑...

    Struts1.3源代码

    Struts1.3是Apache软件基金会的一个开源项目,它是一个基于MVC(Model-View-Controller)设计模式的Java Web应用程序框架。这个框架的主要目的是为了简化开发过程,提高可维护性和可扩展性。Struts1.3源代码的分析...

    Struts1.3 api函数

    Struts1.3 API函数是Java Web开发中用于构建Model-View-Controller(MVC)架构的应用框架Apache Struts的核心组成部分。Struts1.3版本是该框架的一个稳定且广泛使用的迭代,它提供了丰富的功能来帮助开发者管理应用...

    基于struts1.3的网上书店.

    Struts1.3提供了全局的Exception Handler,可以统一处理应用程序中抛出的异常,确保错误信息能被正确呈现给用户。 通过以上这些核心元素,基于Struts1.3的网上书店能够实现用户注册、登录、浏览书籍、搜索、购买、...

    Struts1.3 + Hibernate BBS论坛

    Struts1.3 + Hibernate BBS论坛是一个基于Java Web开发的经典项目,利用了Struts1.3框架和Hibernate ORM框架,结合MyEclipse集成开发环境、MySQL5.0数据库以及Tomcat5.0以上的应用服务器。这个项目展示了如何在实际...

    struts1.3源码.rar

    10. **异常处理**:通过Global Exception Handler和Exception Mapping,Struts 1.3能够优雅地处理运行时异常,并将其转化为用户友好的错误页面。 在源码中,我们可以看到这些核心组件的实现细节,例如ActionServlet...

    SSH_struts1.3_hibnerate3.2_spring2.5框架整合开发

    在本项目中,我们将深入探讨Struts1.3、Hibernate3.2和Spring2.5的整合开发,以及如何在其中加入事务管理。 Struts1.3作为MVC(Model-View-Controller)框架,主要负责控制层的任务,它通过ActionServlet接收HTTP...

    Struts1.3多语言、异常处理、菜单应用.ppt

    Struts1.3框架在构建Web应用程序时,提供了强大的多语言支持、异常处理机制以及StrutsMenu组件的应用,这些功能极大地增强了应用的国际化和用户体验。下面将详细解释这些知识点。 **Struts多语言应用** 1. **资源...

    独立Struts1.3最简单登陆代码

    Struts1.3是最受欢迎的Java Web框架之一,它提供了模型-视图-控制器(MVC)架构,便于开发人员构建动态、结构化的Web应用程序。本教程将详细讲解基于Struts1.3的最简单登录代码实现,适合初学者入门学习。 首先,...

    struts-1.3.10文档

    8. **异常处理**:通过定义全局的Exception Mapping,Struts 1能够统一处理应用程序中的异常,提供统一的错误页面。 9. **预定义结果类型**:Struts 1.3引入了预定义结果类型,如`success`、`error`和`input`,简化...

    Struts 1.3.8jar包

    7. **Exception Handling**: Struts 提供了全局的异常处理机制,可以在 struts-config.xml 中配置 Exception Handler,统一处理未被捕获的异常,提高了应用的健壮性。 8. **Plug-ins**: Struts 1.3.8 可以通过插件...

    struts 文档含详细的例子

    在本文中,我们将深入探讨Struts1.3版本及其核心概念、设计模式和丰富的实例,帮助读者理解其内部运行机制。 1. **MVC设计模式**:Struts1基于Model-View-Controller(MVC)设计模式,它将业务逻辑、数据表示与用户...

    ejbstruts手把手

    总结来说,ejb3struts实例是一个综合了EJB3业务逻辑处理和Struts1.3Web展示的示例项目,它展示了如何在Java企业环境中有效地结合这两种技术,以实现高效的Web应用开发。这个实例对于理解EJB3和Struts1.3的集成以及...

    Struts1的开发过程

    DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN" "http://struts.apache.org/dtds/struts-config_1_3.dtd"&gt; &lt;struts-config&gt; &lt;form-beans&gt; &lt;form-bean name=...

    struts配置!!!!!!!!!!!!!!!!!

    DOCTYPE&gt;`声明了DTD(Document Type Definition),这里指定了使用的是Struts 1.3版本的DTD。 - `&lt;struts-config&gt;`标签是根元素,里面可以包含各种子元素,如`&lt;action-mappings&gt;`等。 ##### 3. action类 Action类...

    struts1.2配置详细

    &lt;exception-type&gt;javax.servlet.ServletException&lt;/exception-type&gt; &lt;location&gt;/common/system_error.jsp &lt;/error-page&gt; ``` 这些配置指定了当出现特定 HTTP 错误或 Java 异常时,应该转向哪个 JSP 页面进行显示...

    struts文件上传 - 两种方式

    #### 1.3 创建表单 在HTML页面上,使用`enctype="multipart/form-data"`来指定表单包含二进制数据,例如文件。 ```html &lt;form action="upload.action" method="POST" enctype="multipart/form-data"&gt; ``` ####...

    struts1.3.10

    5. **Tiles**:Struts 1.3.x引入了Tiles框架,用于页面布局和组合。Tiles允许开发者定义可重用的页面模板,增强了视图的灵活性。 6. **国际化与本地化**:Struts支持多语言环境,通过资源包(Resource Bundle)来...

Global site tag (gtag.js) - Google Analytics