struts2异常处理

java1234官网

在sstruts2里面配置自己的异常处理

1 <exception-mapping result="error" exception="java.sql.SQLException"/>
2             <result name="error">/error.jsp</result>

在service里面捕捉到异常后往外抛,如

 1 public List<Category> list()throws SQLException{
 2         Connection conn = DB.createConn();
 3         String sql = "select * from category";
 4         PreparedStatement ps = DB.prepare(conn, sql);
 5         List<Category> categories = new ArrayList<Category>();
 6         ResultSet rs;
 7         try {
 8             rs = ps.executeQuery();
 9             Category c = null;
10             while(rs.next()){
11                 c = new Category();
12                 c.setId(rs.getInt("id"));
13                 c.setName(rs.getString("name"));
14                 c.setDescription(rs.getString("description"));
15                 categories.add(c);
16             }
17         } catch (SQLException e) {
18             // TODO Auto-generated catch block
19             e.printStackTrace();
20             throw (e);
21         }
22         DB.close(ps);
23         DB.close(conn);
24         return categories;
25     }

注意抛出异常throw(e),必须显示声明异常throw SQLException.

当action调此方法时,会接住异常,再次往外平抛,由strust接住,找到此异常对应匹配的result,显示页面。

如果有很多种异常怎么办?要写很多个吗?

写一个package,在里面写个全局的异常映射,后面的包都继承这个包。代码如下

 1 <package name="bbs2_default" extends="struts-default">
 2     <!--     <global-results>
 3             <result name="error">/admin/error.jsp</result>
 4         </global-results>
 5          -->
 6         <global-exception-mappings>
 7             <exception-mapping result="error" exception="java.lang.Exception"></exception-mapping>
 8         </global-exception-mappings>
 9     </package>
 1  
 2     <package name="admin" namespace="/admin" extends="bbs2_default">
 3         
 4         <action name="index">
 5             <result>/admin/index.html</result>
 6         </action>
 7         
 8         <action name="*-*" class="com.lch.bbs2009.action.{1}Action" method="{2}">
 9             <result name="success">/admin/{1}-{2}.jsp</result>
10             <result name="input">/admin/{1}-{2}.jsp</result>
11        <!--      <exception-mapping result="error" exception="java.sql.SQLException"/> -->    
12             <result name="error">/error.jsp</result>            
13         </action>
14 
15     </package>

在admin包中没找到对应的异常,则在父包中找,返回一个相应的result,再在admin中找到对应的result,再跳转到对应的页面。

但是这样还是比较麻烦,通常的做法是

1  <package name="bbs2_default" extends="struts-default">
2         <global-results>
3             <result name="error">/error.jsp</result>
4         </global-results>
5         <global-exception-mappings>
6             <exception-mapping result="error" exception="java.lang.Exception"></exception-mapping>
7         </global-exception-mappings>
8     </package>

 global-results要在global-exception-mappings的前面。

拦截器

默认拦截器配置引用

 <default-interceptor-ref name="defaultStack"/>

虽然在这里exception没有配置任何的interceptior,但是任何调用都会被上面这些拦截器过滤一遍。我们看一下exception的拦截器

任何的拦截器都必须实现一个抽象类AbstractInrerceptor,这个抽象类必须实现一个接口Interceptor通过查看,找到拦截所用的方法

这句话就已经调用了action了

一句话总结,对于异常的声明式处理,在struts2里面是用拦截器来实现的。

转载于:https://www.cnblogs.com/ligui989/p/3220763.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/474149.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 486. 预测赢家(博弈DP)

文章目录1. 题目2. 解题1. 题目 给定一个表示分数的非负整数数组。 玩家 1 从数组任意一端拿取一个分数&#xff0c;随后玩家 2 继续从剩余数组任意一端拿取分数&#xff0c;然后玩家 1 拿&#xff0c;…… 。 每次一个玩家只能拿取一个分数&#xff0c;分数被拿取之后不再可取…

linux中的ip地址、子网掩码、端口

ip地址&#xff1a;用来在网络中标记一台电脑的一串数字&#xff0c;比如192.168.1.1&#xff1b;在本地局域网上是惟一的。 每一个IP地址包括两部分&#xff1a;网络地址和主机地址 子网掩码只有一个作用&#xff0c;就是将某个IP地址划分成网络地址和主机地址两部分子网掩码的…

R语言第七讲 线性回归分析案例

题目 MASS 库中包含 Boston (波士顿房价)数据集&#xff0c;它记录了波士顿周围 506 个街区的 medv (房价中位数)。我们将设法用 13 个预测变量如 rm (每栋住宅的平均房间数)&#xff0c; age (平均房 龄)&#xff0c; lstat (社会经济地位低的家庭所占比例)等来预测 medv (房价…

01.神经网络和深度学习 W4.深层神经网络(作业:建立你的深度神经网络+图片猫预测)

文章目录作业1. 建立你的深度神经网络1. 导入包2. 算法主要流程3. 初始化3.1 两层神经网络3.2 多层神经网络4. 前向传播4.1 线性模块4.2 线性激活模块4.3 多层模型5. 损失函数6. 反向传播6.1 线性模块6.2 线性激活模块6.3 多层模型6.4 梯度下降、更新参数作业2. 深度神经网络应…

浅析调用android的content provider(一)

在Android下&#xff0c;查询联系人、通话记录等&#xff0c;需要用到content provider。但是&#xff0c;调用content provider时&#xff0c;Android框架内部是如何做的呢&#xff1f;这一系列文章就是解决这个问题的&#xff0c;所采用的开发环境及源码都是基于Android 1.6版…

linux中的集线器、交换机、路由器及组网

集线器&#xff1a;&#xff08;缺点&#xff1a;群发信息 hub&#xff08;集线器&#xff09;能够完成多个电脑的链接每个数据包的发送都是以广播的形式进行的&#xff0c;容易堵塞网络 通过交换机组网 网络交换机&#xff08;又称“网络交换器”&#xff09;&#xff0c;是…

R语言第七讲 线性回归分析案例续

题目 MASS 库中包含 Boston (波士顿房价)数据集&#xff0c;它记录了波士顿周围 506 个街区的 medv (房价中位数)。我们将设法用 13 个预测变量如 rm (每栋住宅的平均房间数)&#xff0c; age (平均房 龄)&#xff0c; lstat (社会经济地位低的家庭所占比例)等来预测…

LeetCode 1129. 颜色交替的最短路径(BFS)

文章目录1. 题目2. 解题1. 题目 在一个有向图中&#xff0c;节点分别标记为 0, 1, ..., n-1。 这个图中的每条边不是红色就是蓝色&#xff0c;且存在自环或平行边。 red_edges 中的每一个 [i, j] 对表示从节点 i 到节点 j 的红色有向边。 类似地&#xff0c;blue_edges 中的每…

web.config文件之自定义错误节

web.config文件之自定义错误节 大家都知道&#xff0c;在开发asp.net应用程序时&#xff0c;通过web.config文件可以配置在执行 Web 请求期间发生未处理的错误时&#xff0c;ASP.NET 显示信息的方式。下面是一个典型的基本配置&#xff1a; ?<system.web><customErro…

R语言第八讲 评估模型之交叉验证法分析案例

题目 评估Auto数据集上拟合多个线性模型所产生的测试错误率。Auto数据集是存在与ISLR程序包中的一个摩托车相关数据的数据集&#xff0c;读者可自行下载ISLR程序包&#xff0c;并将Auto数据集加载。 相关资料 交叉验证是在机器学习建立模型和验证模型参数时常用的办法。交叉验…

linux中UDP程序流程、客户端、服务端

UDP--- 用户数据报协议&#xff08;User Datagram Protocol&#xff09;&#xff0c;是一个无连接的简单的面向数据报的运输层协议。 优点&#xff1a;传输速度快 缺点&#xff1a;不可靠 socket的中文意思是接插件&#xff1a; 创建socket 在 Python 中 使用socket 模块的类 …

LeetCode 1041. 困于环中的机器人

文章目录1. 题目2. 解题1. 题目 在无限的平面上&#xff0c;机器人最初位于 (0, 0) 处&#xff0c;面朝北方。机器人可以接受下列三条指令之一&#xff1a; “G”&#xff1a;直走 1 个单位“L”&#xff1a;左转 90 度“R”&#xff1a;右转 90 度 机器人按顺序执行指令 ins…

Javascript实现合并单元格

Web上的报表或表格应用&#xff0c;较为复杂的表格操作一般都比较难实现&#xff0c;这里介绍一下用ComponentOne Studio for ASP.NET Wijmo中的SpreadJS&#xff0c;可以实现一些较为复杂的表格操作&#xff0c;个人认为他模仿桌面应用的操作体验非常不错&#xff0c;虽然我并…

R语言第八讲续 评估模型之自助法分析案例

题目 今天来用自助法评估一下ISLR 程序包中的 Portfolio (金融资产)数据集的预测函数 相关资料 自助法&#xff08;Bootstraping&#xff09;是另一种模型验证&#xff08;评估&#xff09;的方法&#xff08;之前已经介绍过单次验证和交叉验证&#xff09;。其以自助采样&…

python中常见的15中面试题

下面这些问题涉及了与Python相关的许多技能&#xff0c;问题的关注点主要是语言本身&#xff0c;不是某个特定的包或模块。每一个问题都可以扩充为一个教程&#xff0c;如果可能的话。某些问题甚至会涉及多个领域。 我之前还没有出过和这些题目一样难的面试题&#xff0c;如果你…

LeetCode 1039. 多边形三角剖分的最低得分(区间DP)

文章目录1. 题目2. 解题1. 题目 给定 N&#xff0c;想象一个凸 N 边多边形&#xff0c;其顶点按顺时针顺序依次标记为 A[0], A[i], ..., A[N-1]。 假设您将多边形剖分为 N-2 个三角形。 对于每个三角形&#xff0c;该三角形的值是顶点标记的乘积&#xff0c;三角剖分的分数是…

CentOS6.4安装包初识

LiveCD 一般用来修复系统使用&#xff0c;有容量很小&#xff0c;不用安装&#xff0c;可以自启动等特性。bin DVD也具有同 样的功能&#xff0c;但是体积较大&#xff0c;所以会有live DVD。   LiveDVD 与LiveCD 相同是不需要安装就直接使用的&#xff0c;要安装的话还是要安…

R语言第九讲 验证集法

目的 为了更好的熟悉分析定性变量的逻辑斯谛回归分析的应用和验证集法(评估拟合拟合模型的一种方法&#xff09;&#xff0c;用一个简单的示例来介绍一下它们在分析数据中的应用。 题目 在 Default 数据集上用income 和 balance 做逻辑斯谛回归来预测 default的概率。现…

总结python中基本的面试题

1.Python是如何进行内存管理的&#xff1f; 答:从三个方面来说,一对象的引用计数机制,二垃圾回收机制,三内存池机制 一、对象的引用计数机制 Python内部使用引用计数&#xff0c;来保持追踪内存中的对象&#xff0c;所有对象都有引用计数。 引用计数增加的情况&#xff1a; 1&a…

02.改善深层神经网络:超参数调试、正则化以及优化 W1.深度学习的实践层面

文章目录1. 训练&#xff0c;验证&#xff0c;测试集2. 偏差&#xff0c;方差3. 机器学习基础4. 正则化5. 为什么正则化预防过拟合6. dropout&#xff08;随机失活&#xff09;正则化7. 理解 dropout8. 其他正则化9. 归一化输入10. 梯度消失 / 梯度爆炸11. 神经网络权重初始化1…