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解决。。。。
分享到:
相关推荐
6. **错误处理**:当用户未登录或权限不足时,Kisso会抛出异常,你可以在Struts的全局异常处理中捕获这些异常,展示相应的错误提示页面。 在"struts-kisso375-demo"的压缩包中,可能包含了以下内容: - `struts.xml...
在Struts2中,`web.xml`是应用的部署描述符,它定义了初始化参数、过滤器、监听器和Servlet等关键元素。以下是你需要关注的部分: 1. **StrutsPrepareAndExecuteFilter** - 配置Struts2的过滤器,负责拦截所有HTTP...
### Struts2 笔记12-20 浪曦风中叶 ...通过以上总结,我们深入了解了 Struts2 中监听器的创建和使用、自动拦截器的设计思路以及文件上传下载的具体实现方法。这些知识点对于理解和掌握 Struts2 框架至关重要。
`web.xml`是Web应用的部署描述符,用于配置过滤器(如Struts 2的`FilterDispatcher`)、监听器等。 **3.5.2 struts.xml文件配置** `struts.xml`是Struts 2的核心配置文件,用于定义Action、拦截器栈等配置信息。 ...
5. **Struts2 Config**:配置文件处理,包括struts-default.xml、struts-plugin.xml、struts.xml等,定义了全局规则、拦截器栈、包配置等。 6. **依赖库**:Struts 2还需要其他库的支持,如Apache Commons Lang、...
默认登录页面 http://localhost:8080/Struts_ljq ...登录成功页面有add,delete,modify方法,配置有不同拦截,在后台看拦截信息。...有全局拦截器配置和方法拦截,及监听器简单运用, 仅新手学习demo
1. `struts.xml`:这是Struts2的核心配置文件,定义了Action、结果类型、拦截器栈等。在这里,你可以声明Action类、指定结果页面,以及配置全局规则。 2. `web.xml`:这是Servlet容器的部署描述符,用于配置过滤器...
在Struts2中,这些监听器主要用于初始化框架、配置拦截器、管理Action实例等任务。 1. **StrutsPrepareAndExecuteFilter**:这是Struts2的核心过滤器,负责处理HTTP请求并将其转发到相应的Action。它需要在web.xml...
- **内建拦截器**:Struts2提供了一系列预定义的拦截器,如参数填充拦截器、异常处理拦截器等。 - **自定义拦截器**:开发者可以自定义拦截器,实现特定的功能。 - **自定义方法过滤拦截器**:根据Action的方法名来...
- 在`struts.xml`中配置Struts2的基本设置,包括拦截器栈和全局结果类型。 - 添加Struts2的插件,如`struts2-convention-plugin`和`struts2-dwr-plugin`,以支持约定优于配置和DWR的集成。 2. **Spring配置**: ...
以上内容详细介绍了Struts2框架的核心组成部分和技术细节,包括Action的实现方式、Result的配置方法、模型驱动的概念、异常处理机制、类型转换的实现、输入校验的流程、拦截器的设计与应用以及日志记录的配置。...
- 创建`struts.xml`配置文件,定义全局配置、拦截器栈和Action映射。 - 配置`web.xml`,添加Struts2的过滤器和监听器。 - **配置Hibernate**: - 创建`hibernate.cfg.xml`,配置数据库连接信息、方言、缓存等。...
可以定义一个或多个插件,每个插件可能包含自定义的监听器、拦截器或过滤器。 此外,还有一些辅助的子元素: - `<icon>`: 提供图标资源,通常用于Web应用程序的图形表示。 - `<display-name>`: 提供父元素的...
要添加拦截器,你需要在struts.xml配置文件中定义拦截器栈,并关联到特定的Action或者全局配置中。拦截器的顺序也非常重要,因为它们会按照定义的顺序依次执行。 在搭建SSH框架时,通常需要进行以下步骤: 1. 安装...
通过这个项目演示,开发者可以学习如何创建Action、配置Struts2、使用拦截器、处理结果、与视图交互以及整合其他功能,如国际化、异常处理等。这有助于理解和掌握Struts2框架在实际项目中的应用。
1. **struts-default.xml**:这是Struts2的核心配置文件,包含了默认的拦截器栈、结果类型和其他全局设置。在这里,你可以定义全局结果模板、常量和拦截器链。 2. **struts-plugin.xml**:这个文件通常位于Struts2...
- **配置web.xml**:配置Struts 2的前端控制器`DispatcherServlet`,以及Spring的上下文加载器监听器。 - **编写pom.xml**:如果使用Maven,可以通过添加依赖来管理所需的库。 - **创建模型、服务和DAO**:定义...
这些拦截器负责处理如请求转发、异常处理、结果映射等功能。 2. **Action**:Action是Struts2的核心业务逻辑组件,它实现了用户的请求与后端业务逻辑的交互。每个Action类通常对应一个特定的用户操作,处理完成后...
9. **异常处理**:通过全局异常处理配置,可以统一处理应用程序可能出现的异常,提高代码的健壮性。 10. **国际化与本地化**:Struts2支持多语言环境,通过资源文件管理不同语言的显示文本。 总的来说,"Struts2.0...
此文件用于配置Servlet、过滤器、监听器等,同时也为Struts框架提供了一些必要的设置。 - `ActionServlet`配置:在`web.xml`中,我们需要定义一个名为`ActionServlet`的Servlet,这是Struts的核心组件,负责处理...