`

Struts全局异常处理---拦截器+监听器配置

阅读更多

1、配置

<!-- 定义一个拦截器 -->
        <interceptors>
            <interceptor name="showException"
                class="com.yihaodian.pis.interceptor.ShowExceptionIterceptor">
            </interceptor>
            <!-- 拦截器栈 -->
            <interceptor-stack name="mydefault">
                <interceptor-ref name="defaultStack" />
                <interceptor-ref name="showException" />
            </interceptor-stack>
        </interceptors>
        <default-interceptor-ref name="mydefault" />
        <!-- 定义全局处理结果 -->
        <global-results>
            <!-- 逻辑名为login的结果,映射到/login.jsp页面 -->
            <result name="login" type="freemarker">
                /WEB-INF/templates/admin/login.ftl
            </result>
            <result name="noSecurity" type="freemarker">
                /WEB-INF/templates/noSecurity.ftl
            </result>
            <result name="error" type="dispatcher">
                error.jsp
            </result>
        </global-results>
        <global-exception-mappings>
            <exception-mapping result="error" name="error"
                exception="com.yihaodian.pis.util.ShowException"></exception-mapping>
        </global-exception-mappings> 

2、自定义异常:

package com.yihaodian.pis.util;

public class ShowException extends Exception{

    private static final long serialVersionUID = 0xc1a865c45ffdc5f9L;

    public ShowException(String frdMessage)

    {

        super(createFriendlyErrMsg(frdMessage));
       
    }

    public ShowException(Throwable throwable)

    {

        super(throwable);

    }

    public ShowException(Throwable throwable, String frdMessage)

    {

        super(throwable);

    }

    private static String createFriendlyErrMsg(String msgBody) {

        String prefixStr = "抱歉,";

        String suffixStr = " 请稍后再试或与管理员联系!";

        StringBuffer friendlyErrMsg = new StringBuffer("");

        friendlyErrMsg.append(prefixStr);

        friendlyErrMsg.append(msgBody);

        friendlyErrMsg.append(suffixStr);
        return friendlyErrMsg.toString();

    }

}
 

 

3、拦截器

 

public class ShowExceptionIterceptor extends  AbstractInterceptor{

    /*
     * (non-Javadoc)
     *
     * @see
     * com.opensymphony.xwork2.interceptor.AbstractInterceptor#intercept(com
     * .opensymphony.xwork2.ActionInvocation)
     */
    @Override
    public String intercept(ActionInvocation invocation) throws Exception {
       
        String result=null;
        ActionSupport actionSupport= (ActionSupport) invocation.getAction();
        try {

            invocation.addPreResultListener(new MyListener());
            System.out.println("拦截器之前");
            result=invocation.invoke();
            System.out.println("拦截器之后");
           
        }catch(Exception e){
            System.out.println("异常身上所说是谁是谁身上收拾收拾"+e.getMessage());
            actionSupport.addActionError(e.getMessage());
            return Action.ERROR;
        }
        return result;
    }

}
 

4、页面显示

<%@ page contentType="text/html;charset=UTF-8" language="java"%>
<%@ include file="../../webpage/include/mytaglib.jsp"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<title>1号店智能定价系统</title>
</head>
<body>
<h2>出现异常啦</h2>
<s:if test="hasActionErrors()">
<div>
<span>
<s:iterator value="actionErrors"><s:property/></s:iterator>
</span>
</div>
</s:if>
</body>
</html>
 

 

5、监听器(可有可无)

package com.yihaodian.pis.interceptor;

import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.PreResultListener;

public class MyListener implements PreResultListener{
    public void beforeResult(ActionInvocation invocation, String resultCode) {
        System.out.println("监听器:"+resultCode);
    }

}
 

 

有不懂的可以联系QQ526151410解决。。。。

分享到:
评论

相关推荐

    源码:struts-kisso375-demo.rar

    6. **错误处理**:当用户未登录或权限不足时,Kisso会抛出异常,你可以在Struts的全局异常处理中捕获这些异常,展示相应的错误提示页面。 在"struts-kisso375-demo"的压缩包中,可能包含了以下内容: - `struts.xml...

    struts2版本 2.1.6 必须的jar包 和 web.xml 文件的修改

    在Struts2中,`web.xml`是应用的部署描述符,它定义了初始化参数、过滤器、监听器和Servlet等关键元素。以下是你需要关注的部分: 1. **StrutsPrepareAndExecuteFilter** - 配置Struts2的过滤器,负责拦截所有HTTP...

    Struts2 笔记12-20 浪曦风中叶

    ### Struts2 笔记12-20 浪曦风中叶 ...通过以上总结,我们深入了解了 Struts2 中监听器的创建和使用、自动拦截器的设计思路以及文件上传下载的具体实现方法。这些知识点对于理解和掌握 Struts2 框架至关重要。

    Struts 2权威指南--基于WebWork核心的MVC开发

    `web.xml`是Web应用的部署描述符,用于配置过滤器(如Struts 2的`FilterDispatcher`)、监听器等。 **3.5.2 struts.xml文件配置** `struts.xml`是Struts 2的核心配置文件,用于定义Action、拦截器栈等配置信息。 ...

    struts-2.3.31-min-lib

    5. **Struts2 Config**:配置文件处理,包括struts-default.xml、struts-plugin.xml、struts.xml等,定义了全局规则、拦截器栈、包配置等。 6. **依赖库**:Struts 2还需要其他库的支持,如Apache Commons Lang、...

    struts2拦截器及监听器示例demo

    默认登录页面 http://localhost:8080/Struts_ljq ...登录成功页面有add,delete,modify方法,配置有不同拦截,在后台看拦截信息。...有全局拦截器配置和方法拦截,及监听器简单运用, 仅新手学习demo

    struts2必备的包和配置文件

    1. `struts.xml`:这是Struts2的核心配置文件,定义了Action、结果类型、拦截器栈等。在这里,你可以声明Action类、指定结果页面,以及配置全局规则。 2. `web.xml`:这是Servlet容器的部署描述符,用于配置过滤器...

    Struts2的监听器的使用

    在Struts2中,这些监听器主要用于初始化框架、配置拦截器、管理Action实例等任务。 1. **StrutsPrepareAndExecuteFilter**:这是Struts2的核心过滤器,负责处理HTTP请求并将其转发到相应的Action。它需要在web.xml...

    struts2教程我在培训时用的

    - **内建拦截器**:Struts2提供了一系列预定义的拦截器,如参数填充拦截器、异常处理拦截器等。 - **自定义拦截器**:开发者可以自定义拦截器,实现特定的功能。 - **自定义方法过滤拦截器**:根据Action的方法名来...

    新版SSH+DWR配置(Struts2.1.8+Spring3.0+Hibernate3.3.2+DWR2.0.6).doc

    - 在`struts.xml`中配置Struts2的基本设置,包括拦截器栈和全局结果类型。 - 添加Struts2的插件,如`struts2-convention-plugin`和`struts2-dwr-plugin`,以支持约定优于配置和DWR的集成。 2. **Spring配置**: ...

    Struts2学习文档

    以上内容详细介绍了Struts2框架的核心组成部分和技术细节,包括Action的实现方式、Result的配置方法、模型驱动的概念、异常处理机制、类型转换的实现、输入校验的流程、拦截器的设计与应用以及日志记录的配置。...

    Struts2整合hibernate所需的jar包

    - 创建`struts.xml`配置文件,定义全局配置、拦截器栈和Action映射。 - 配置`web.xml`,添加Struts2的过滤器和监听器。 - **配置Hibernate**: - 创建`hibernate.cfg.xml`,配置数据库连接信息、方言、缓存等。...

    Struts-config.xml 配置详解.doc

    可以定义一个或多个插件,每个插件可能包含自定义的监听器、拦截器或过滤器。 此外,还有一些辅助的子元素: - `&lt;icon&gt;`: 提供图标资源,通常用于Web应用程序的图形表示。 - `&lt;display-name&gt;`: 提供父元素的...

    ssh最新框架搭建,加入拦截器

    要添加拦截器,你需要在struts.xml配置文件中定义拦截器栈,并关联到特定的Action或者全局配置中。拦截器的顺序也非常重要,因为它们会按照定义的顺序依次执行。 在搭建SSH框架时,通常需要进行以下步骤: 1. 安装...

    struts2项目演示

    通过这个项目演示,开发者可以学习如何创建Action、配置Struts2、使用拦截器、处理结果、与视图交互以及整合其他功能,如国际化、异常处理等。这有助于理解和掌握Struts2框架在实际项目中的应用。

    struts2配置文件

    1. **struts-default.xml**:这是Struts2的核心配置文件,包含了默认的拦截器栈、结果类型和其他全局设置。在这里,你可以定义全局结果模板、常量和拦截器链。 2. **struts-plugin.xml**:这个文件通常位于Struts2...

    struts jar包

    - **配置web.xml**:配置Struts 2的前端控制器`DispatcherServlet`,以及Spring的上下文加载器监听器。 - **编写pom.xml**:如果使用Maven,可以通过添加依赖来管理所需的库。 - **创建模型、服务和DAO**:定义...

    Sturuts2常用包

    这些拦截器负责处理如请求转发、异常处理、结果映射等功能。 2. **Action**:Action是Struts2的核心业务逻辑组件,它实现了用户的请求与后端业务逻辑的交互。每个Action类通常对应一个特定的用户操作,处理完成后...

    Struts2.0学习系列 以及 Struts2.0安装包

    9. **异常处理**:通过全局异常处理配置,可以统一处理应用程序可能出现的异常,提高代码的健壮性。 10. **国际化与本地化**:Struts2支持多语言环境,通过资源文件管理不同语言的显示文本。 总的来说,"Struts2.0...

    struts配置文件

    此文件用于配置Servlet、过滤器、监听器等,同时也为Struts框架提供了一些必要的设置。 - `ActionServlet`配置:在`web.xml`中,我们需要定义一个名为`ActionServlet`的Servlet,这是Struts的核心组件,负责处理...

Global site tag (gtag.js) - Google Analytics