- 浏览: 268755 次
- 来自: ...
文章分类
最新评论
-
zhangxin007:
CXF spring jaxws:endpoint jaxws:server 区别 与 关系 -
kashu1217:
請問一下您的代碼為什麼都貼二次?
struts2 异常处理 -
zhangzhimvp:
alert("1111");
struts 文件下载 -
zhangzhimvp:
引用
[img][/img][url][/url][img] ...
struts 文件下载 -
mousepc:
你好,我想问一下。如果Set集合是在另一个集合中的,没办法初始 ...
Struts2的类型转换器
在学习struts2的过程中,想到了struts1的错误处理机制,转载一篇 Callan (javaeye)的文章。
利用struts2的异常处理机制可以很方便的实现异常处理,你不再需要在Action中捕获异常,并抛出相关的异常了,这些都交给拦截器来帮你做了。在struts-default.xml中己经设置了拦截器,因此我们可以直接使用声明式异常.struts2-default-xml声明的拦截器如下:
Xml代码
<interceptors>
<interceptor name="exception"
class="com.opensymphony.xwork.interceptor.ExceptionMappingInterceptor"/>
</interceptors>
<interceptors>
<interceptor name="exception"
class="com.opensymphony.xwork.interceptor.ExceptionMappingInterceptor"/>
</interceptors>
异常的类型可以分为两种:局部异常映射和全局异常映射
当Action抛出异常时,会在局部中和全局中查找与之相匹配的异常,如果局部和全局中都有满足的异常映射,以局部的为准. 例子说明:
action:
Java代码
public class LogonAction {
private String userName;
private String userPwd;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserPwd() {
return userPwd;
}
public void setUserPwd(String userPwd) {
this.userPwd = userPwd;
}
public String execute() throws Exception{
if(userName.equals("callan") && userPwd.equals("fjf")){
ActionContext.getContext().getSession().put("userName", "callan");
return "succee";
} else {
throw new SQLException(“用户名密码不正确”);
}
}
}
public class LogonAction {
private String userName;
private String userPwd;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserPwd() {
return userPwd;
}
public void setUserPwd(String userPwd) {
this.userPwd = userPwd;
}
public String execute() throws Exception{
if(userName.equals("callan") && userPwd.equals("fjf")){
ActionContext.getContext().getSession().put("userName", "callan");
return "succee";
} else {
throw new SQLException(“用户名密码不正确”);
}
}
}
配置文件:
Xml代码
<package name="logon" extends="struts-default">
<!-- global-exception-mappings必需在action的上面 -->
<global-exception-mappings>
<exception-mapping result="all" exception="java.lang.Exception">
</exception-mapping>
</global-exception-mappings>
<action name="logon" class="com.LogonAction">
<result name="succee">/logon/welcome.jsp</result>
<result name="error">/logon/error.jsp</result>
<exception-mapping result="sql" exception="java.sql.SQLException"/></exception-mapping>
<exception-mapping result="nullPoint" exception="java.lang.NullPointerException"></exception-mapping>
<result name="nullPoint">/logon/nullpoint.jsp</result>
<result name="sql">/logon/sql.jsp</result>
<result name="all">/logon/all.jsp</result>
</action>
</package>
<package name="logon" extends="struts-default">
<!-- global-exception-mappings必需在action的上面 -->
<global-exception-mappings>
<exception-mapping result="all" exception="java.lang.Exception">
</exception-mapping>
</global-exception-mappings>
<action name="logon" class="com.LogonAction">
<result name="succee">/logon/welcome.jsp</result>
<result name="error">/logon/error.jsp</result>
<exception-mapping result="sql" exception="java.sql.SQLException"/></exception-mapping>
<exception-mapping result="nullPoint" exception="java.lang.NullPointerException"></exception-mapping>
<result name="nullPoint">/logon/nullpoint.jsp</result>
<result name="sql">/logon/sql.jsp</result>
<result name="all">/logon/all.jsp</result>
</action>
</package>
上面是个用户登陆的action及配置,定义了两个局部异常和一个全局异常
当输入的用户名和密码不为callan和fjf时,会抛出SQLException异常,局部异常配置起作用,会定向到sql.jsp,如果注释局部sql异常,全局异常起作用,定向到all.jsp
可以使用Struts2的标签来输出异常信息
<s:property value="exception.message"/>
<s:property value="exceptionStack"/>
例如sql.jsp页面
<body>
<s:property value="exception.message"/>
</body>
可以输出 用户名密码不正确
利用struts2的异常处理机制可以很方便的实现异常处理,你不再需要在Action中捕获异常,并抛出相关的异常了,这些都交给拦截器来帮你做了。在struts-default.xml中己经设置了拦截器,因此我们可以直接使用声明式异常.struts2-default-xml声明的拦截器如下:
Xml代码
<interceptors>
<interceptor name="exception"
class="com.opensymphony.xwork.interceptor.ExceptionMappingInterceptor"/>
</interceptors>
<interceptors>
<interceptor name="exception"
class="com.opensymphony.xwork.interceptor.ExceptionMappingInterceptor"/>
</interceptors>
异常的类型可以分为两种:局部异常映射和全局异常映射
当Action抛出异常时,会在局部中和全局中查找与之相匹配的异常,如果局部和全局中都有满足的异常映射,以局部的为准. 例子说明:
action:
Java代码
public class LogonAction {
private String userName;
private String userPwd;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserPwd() {
return userPwd;
}
public void setUserPwd(String userPwd) {
this.userPwd = userPwd;
}
public String execute() throws Exception{
if(userName.equals("callan") && userPwd.equals("fjf")){
ActionContext.getContext().getSession().put("userName", "callan");
return "succee";
} else {
throw new SQLException(“用户名密码不正确”);
}
}
}
public class LogonAction {
private String userName;
private String userPwd;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserPwd() {
return userPwd;
}
public void setUserPwd(String userPwd) {
this.userPwd = userPwd;
}
public String execute() throws Exception{
if(userName.equals("callan") && userPwd.equals("fjf")){
ActionContext.getContext().getSession().put("userName", "callan");
return "succee";
} else {
throw new SQLException(“用户名密码不正确”);
}
}
}
配置文件:
Xml代码
<package name="logon" extends="struts-default">
<!-- global-exception-mappings必需在action的上面 -->
<global-exception-mappings>
<exception-mapping result="all" exception="java.lang.Exception">
</exception-mapping>
</global-exception-mappings>
<action name="logon" class="com.LogonAction">
<result name="succee">/logon/welcome.jsp</result>
<result name="error">/logon/error.jsp</result>
<exception-mapping result="sql" exception="java.sql.SQLException"/></exception-mapping>
<exception-mapping result="nullPoint" exception="java.lang.NullPointerException"></exception-mapping>
<result name="nullPoint">/logon/nullpoint.jsp</result>
<result name="sql">/logon/sql.jsp</result>
<result name="all">/logon/all.jsp</result>
</action>
</package>
<package name="logon" extends="struts-default">
<!-- global-exception-mappings必需在action的上面 -->
<global-exception-mappings>
<exception-mapping result="all" exception="java.lang.Exception">
</exception-mapping>
</global-exception-mappings>
<action name="logon" class="com.LogonAction">
<result name="succee">/logon/welcome.jsp</result>
<result name="error">/logon/error.jsp</result>
<exception-mapping result="sql" exception="java.sql.SQLException"/></exception-mapping>
<exception-mapping result="nullPoint" exception="java.lang.NullPointerException"></exception-mapping>
<result name="nullPoint">/logon/nullpoint.jsp</result>
<result name="sql">/logon/sql.jsp</result>
<result name="all">/logon/all.jsp</result>
</action>
</package>
上面是个用户登陆的action及配置,定义了两个局部异常和一个全局异常
当输入的用户名和密码不为callan和fjf时,会抛出SQLException异常,局部异常配置起作用,会定向到sql.jsp,如果注释局部sql异常,全局异常起作用,定向到all.jsp
可以使用Struts2的标签来输出异常信息
<s:property value="exception.message"/>
<s:property value="exceptionStack"/>
例如sql.jsp页面
<body>
<s:property value="exception.message"/>
</body>
可以输出 用户名密码不正确
发表评论
-
Apache CXF开发Web Service 理解CXF Frontends之Code-First
2013-03-05 17:28 0CXF目前是 apache下面的一个顶级开源项目, C ... -
Hibernate和IBatis对比
2013-03-05 11:11 3237iBATIS数据映射器iBATIS被广泛认为是最简单的一种持 ... -
Hibernate二级缓存详解
2013-03-05 09:53 979Hibernate二级缓存详解 与Session相对的是, ... -
Struts 2 Hibernate Validation Tutorial
2013-03-01 15:40 1676The Hibernator Validator frame ... -
SiteMesh 过滤不装饰的页面
2013-03-01 11:49 6227要实现SiteMesh过滤不装饰页面,需要做两方面的设置1、 ... -
SiteMesh 2.X版本的简单使用
2013-03-01 11:28 1664SiteMesh 2.X版本的简单使用 1. ... -
Hibernate抓取策略以及如何避免cannot simultaneously fetch multiple bags异常
2013-02-28 16:28 1208在说解决cannot simultaneously fetc ... -
Struts2 json 不熟悉序列号 @JSON(serialize=false)
2013-02-26 16:22 1460JSON注释还支持如下几个域:name:指定Action属 ... -
Struts2 json 不熟悉序列号 @JSON(serialize=false)
2013-02-26 16:22 1085避免使用get开头的action方法 在属性get方法上面加 ... -
struts2学习:配置篇之namespace
2013-02-26 11:34 760把namespace单独拉出来讲一方面是因为它实际上不是一个 ... -
Struts2.1.6 部署 jboss6.0 报错
2013-02-21 10:58 9582010-03-01 22:43:52,546 ERROR ... -
MyEclipse反向工程异常解决(转)
2012-09-11 11:28 777http://www.cnblogs.com/zhaozhi- ... -
DynamicMethodInvocation 动态方法调用
2009-07-24 16:06 2148<constant name="struts. ... -
struts2 必须的6个包
2009-07-23 17:42 907commons-logging-1.0.4.jarfr ... -
struts1.2 spring 集成
2008-07-23 14:41 3980转载IBM上一篇文章:http://www.ibm.com/d ... -
struts2 拦截器
2008-07-21 16:43 1683转载于:http://blog.csdn.net/feng_s ... -
struts 文件下载
2008-07-21 15:56 3753最近用到了struts2的文件下载,找了些网上关于下载的文章, ... -
Struts2的类型转换器
2008-07-17 15:25 6007转贴 http://aumy2008.iteye.com/bl ... -
struts2 学习拾遗
2008-07-17 10:50 1671学习strut2过程中,碰到一些问题,找了一些文章,转载如下: ... -
struts 多模块开发
2008-07-15 14:58 1363struts1.1开始支持多模块的. 多模块开发是为了解决 ...
相关推荐
Struts2作为一款流行的Java Web框架,其异常处理机制是其核心功能之一,它使得开发者能够优雅地管理和处理应用程序中的异常情况,提供了一种统一的错误处理方式,从而提高用户体验并增强程序的健壮性。 在Struts2...
在Struts2中,异常处理是一项重要的功能,它确保在应用程序遇到错误时能够优雅地处理,提供友好的用户反馈,并保持系统稳定性。下面将详细讨论Struts2中的异常处理机制及其相关知识点。 1. **异常处理机制概述** ...
在Struts2框架中,异常处理是至关重要的一个部分,它确保了应用程序的稳定性和用户体验。Struts2提供了多种方式来捕获和处理异常,帮助开发者优雅地处理程序中的错误情况。以下是Struts2异常处理的四种主要方法,...
Struts2是一个流行的Java web框架,它提供了强大的异常处理机制,使得开发者能够优雅地管理和展示在应用程序中出现的错误和异常。以下是对Struts2异常处理机制的详细说明: 1. **异常处理流程**: 当一个Action...
本篇文章将深入探讨Struts2的异常处理策略,以及如何在DAO层进行单元测试配置。 在传统的Web应用中,当一个异常发生时,通常会跳转到错误页面或者返回错误信息。但在现代Web应用中,尤其是涉及到Ajax异步请求时,...
2. **全局异常处理**:Struts允许我们在配置文件中定义全局异常映射,这样所有Action中的未捕获异常都会被映射到特定的结果页面。在`struts.xml`或`struts-default.xml`中,可以使用`<global-exception-mappings>`...
这篇博客文章“Struts2中异常处理(demo)”可能详细介绍了如何在Struts2框架下优雅地处理程序中的异常。 在Java Web开发中,异常是程序运行时遇到的问题,例如无效的用户输入、资源未找到或内部系统错误。Struts2...
2. **Struts-config.xml配置异常处理**:在框架配置文件中,`<global-exceptions>`标签用于定义全局异常处理规则。例如: ```xml ``` 这段配置表示,如果任何地方抛出了`java.lang.Exception`或其子类,...
【Struts2异常处理】 Struts2是一个基于MVC(Model-View-Controller)架构的Web应用框架。它的异常处理主要通过全局异常映射器配置,可以将特定的异常映射到特定的结果页面或动作。通过`struts.xml`配置文件,...
针对异常处理,Struts提供了一种优雅的方式,使得开发者可以自定义错误处理机制。在给定的文件中,我们看到了一个基于Struts的异常处理方案,主要涉及两个关键点:自定义异常类和自定义异常处理器。 首先,我们来看...
项目中出现的异常通常要用一个友好的异常页面来显示,通过对struts2.xml的配置能拦截全局异常,只要出现异常就会转向异常页面。
Struts2作为一款流行的Java Web框架,其异常处理机制是开发者必须掌握的关键部分。这篇博客主要探讨了在Struts2中如何有效地管理和处理异常,从而提高应用的稳定性和用户体验。 在Struts2中,异常处理主要通过两种...
8. **错误和异常处理**:定义全局的Struts2异常处理类,以及Spring的异常处理器,确保程序的健壮性。 通过SSH整合,开发者可以利用这三个框架的优势,实现高效的Web应用开发,提高代码的可维护性和复用性。在实际...
首先,Struts1.x框架默认的异常处理方式是通过`struts-config.xml`配置文件中的`<global-exceptions>`标签来定义全局异常处理。在这个标签内,你可以声明一个或多个异常类型,并为每个异常指定一个错误页面,当...
在Struts2中,异常处理机制是关键组成部分,确保程序在遇到错误时能够优雅地处理并提供反馈给用户。本文将深入探讨Struts2的异常处理机制,特别是声明式异常捕捉和异常映射。 首先,Struts2的异常处理机制允许...
Struts2是一个强大的Java web框架,它为开发者提供了丰富的功能,包括表单处理、MVC设计模式支持以及异常处理机制。在文件上传方面,Struts2提供了方便的API和配置方式来处理单个或多个文件的上传。在这个主题中,...
8. **Struts2异常处理机制**:Struts2提供了一套强大的异常处理机制,允许开发者定义特定类型的异常与特定结果的映射。这样,当发生异常时,系统会自动转向预先配置的错误页面,便于统一处理和展示错误信息。 掌握...
**4.5 Struts 2异常处理** 异常处理是任何Web应用开发中必不可少的一部分。这里将讨论如何使用Struts 2来处理异常,并给出示例。 #### 八、总结 通过以上章节的学习,我们可以看到Struts 2框架的强大之处,以及它...