Struts2学习笔记(七)
来源:互联网 发布:mysql支持多大并发量 编辑:程序博客网 时间:2024/05/17 02:06
声明式异常处理
注:Struts2支持声明式异常处理。
Struts2是通过拦截器(interceptor)来处理声明式异常处理。
要求在DAO、Service、Action层都需要抛出导演就可以了。其它的让Struts2来处理。详细过程如下:
实例:
如果在列表时出现错误,则方法如下:
public List<Category> list() throws SQLException{Connection conn = DB.createConn();String sql = "select * from _category";List<Category> categories = new ArrayList<Category>();PreparedStatement ps = DB.prepare(conn, sql);ResultSet rs = null;try {rs = ps.executeQuery();Category c = null;while(rs.next()){c = new Category();…………}} catch (SQLException e) {e.printStackTrace();throw(e);//此处向外抛出异常,让调用它的方法知道} finally{DB.close(rs);DB.close(ps);DB.close(conn);}return categories;}
然后在调用它的Action也向上抛出异常
public String list() throws SQLException{categories = categoryService.list();return SUCCESS;}
注意重点:我们需要在Struts.xml配置文件中配置需要处理的异常就可以了。
<action name="*-*" class="com.wjt276.bbs2009.action.{1}Action" method="{2}"><result>/admin/{1}-{2}.jsp</result><result name="input">/admin/{1}-{2}.jsp</result><!--<exception-mapping>标签是映射异常处理。表示映射哪种异常,此处是java.lang.Exception, 如果出现异常,那么它会跳转到reslut="error"的结果集,也就是/error.jsp --><exception-mapping result="error" exception="java.sql.SQLException"/><result name="error">/error.jsp</result></action>
当然,我们也可以将所有的异常使用同一个异常映射,那就是<global-exception-mappings>,需要映射的packge只需要继承此package就可以了。如下:
<package name="bbs2009-deafult" extends="struts-default"><global-results><result name="error">/error.jsp</result></global-results><global-exception-mappings><exception-mapping result="error" exception="java.sql.SQLException"/></global-exception-mappings></package>
action继承这个包就可以了:
<package name="admin" namespace="/admin" extends="bbs2009-default"><default-action-ref name="index"></default-action-ref><action name="index"><result>index.html</result></action><action name="*-*" class="com.wjt276.bbs2009.action.{1}Action" method="{2}"><result>/admin/{1}-{2}.jsp</result><result name="input">/admin/{1}-{2}.jsp</result><result name="error">/error.jsp</result></action></package>
注意:如果使用全局异常映射(<global-exception-mappings>)和全局结果集(<global-results>)则需要全局结果集(<global-results>)在前。
如果局部(当前)Action、和全局结果集存在相同的<result>,则使用最近的那个结果。
其中值得注意的是如果用default-action-ref对应的是一个简单的结果是可以执行的,但是如果想要让它执行class里面的内容就不行了(慎用)。这与这种情况,我们可以在web.xml中进行这样的配置:
<welcome-file-list><welcome-file>index</welcome-file></welcome-file-list>
总结:
1、 在Action中进行异常映射
2、 在package中进行全局异常映射
3、 使用继承共用异常映射
4、 Struts2中异常处理由拦截器实现(观察struts-default.xml)
a) 实际上Struts2的大多数功能都由拦截器实现。
- Struts2学习笔记(七)
- Struts2学习笔记七
- Struts2学习笔记(七) 上传文件
- Java Web学习笔记(七)struts2
- Struts2 学习笔记(七)模型驱动
- struts2学习笔记之七(常量)
- Struts2学习笔记(七) 结果(Result)(下)
- Struts2学习笔记(七) 结果(Result)(上)
- struts2学习笔记(七)——OGNL
- 黑马程序员---struts2学习笔记之七(表单验证)
- 学习笔记(七)
- Struts2.1笔记(七):Struts2输入校验
- Struts2学习(七)—类型转化
- Struts2学习(七)令牌机制介绍
- SSH学习(七)Struts2输入验证
- Struts2学习笔记七(Annotation配置、异步调用ajax(dom4j、Json))
- J2EE系列之Struts2学习笔记(七)--struts.xml配置
- Struts2学习笔记(七)之文件的下载
- MyEclipse8.5中安装findbugs插件的过程
- 亚马逊收购3D地图初创公司UpNext 欲与苹果和Google一分天下
- Android 使用AudioRecord录音相关和音频文件的封装
- android 回车键事件编程
- javamail乱码问题
- Struts2学习笔记(七)
- C#的异常处理机制
- {{PHP}}Smarty进阶安装指南
- C#如何把类CLASS实例进行序列化及反序列化为XML文件
- foreach语句使用需要注意的几点
- 图片在div中垂直居中的css
- 从追MM谈Java的23种设计模式
- 如何成为一名优秀的C程序员
- java 如何获取对方的IP