一、学习案例:通过在input.jsp页面输入登录账号和password測试异常处理机制。

二、案例分析:struts2提供了局部异常处理机制和全局异常处理机制。局部优先于全局异常处理,当异常找不到局部异常处理时才会查询全局异常处理。

a)异常类声明

<pre class="java" name="code">public class UsernameException extends Exception {

	private String message;

	public String getMessage() {
return message;
} public void setMessage(String message) {
this.message = message;
} public UsernameException(String message){
super(message);
this.message = message;
} }

b)抛异常

		if(!"admin".equals(username)){
throw new UsernameException("用户名输入错误! ");
}

c)Struts.xml配置异常处理

1、局部异常处理(作用在当前action。

	<action name="login" class="com.almostman.action.LoginAction">
<exception-mapping result="usernameInvalid" exception="com.almostman.exception.UsernameException"/>
<exception-mapping result="passwordInvalid" exception="com.almostman.exception.PasswordException"/>
<result>/login.jsp</result>
<result name="usernameInvalid">/usernameInvalid.jsp</result>
<result name="passwordInvalid">/passwordInvalid.jsp</result>
</action>

2、全局异常处理(作用在当前package。)

		<!-- 全局结果 -->
<global-results>
<result name="usernameInvalid">/usernameInvalid.jsp</result>
<result name="passwordInvalid">/passwordInvalid.jsp</result>
</global-results> <!-- 全局异常 -->
<global-exception-mappings>
<exception-mapping result="usernameInvalid" exception="com.almostman.exception.UsernameException"/>
<exception-mapping result="passwordInvalid" exception="com.almostman.exception.PasswordException"/>
</global-exception-mappings> 

三、经验之谈:

a) 异常处理。一般在敲代码时。一定要记得往外抛异常,千万别搞个try...catch就无论了。特别是面试时,异常处理也是非常重要的。我曾面试过一个公司,当时面试官就指出这一点了。

所以遇到异常一定记得往外抛。

b) 代码的健壮性。什么是代码的健壮性。比方最基础的,我们学习servlet时数据库的增删改查。你可能几十行就能搞定。但这种程序也更easy被别人“搞定”。这里的搞定是破坏的意思。敲代码就算一时不能面面俱到,也要最起码的全面考虑下再下手,别看过需求上来就下手。

遇到问题解决这个问题,到最后可能换一种方式就能非常easy实现的功能被你搞的千疮百孔。

c) 异常处理在项目中是常常见到的。可是不是我们这样处理的。假设异常都这样处理struts2对这一块也就太失败了。每一个系统都有自己的异常处理方案在此就不多讲了。我要说的是,自己开发系统时,在保证代码的健壮性的前提下。我们仅仅需配置全局异常就可以,不是必需全部的出现几率不大的异常都进行处理。

四、參考项目:http://download.csdn.net/detail/u011638419/8182127

五、每日一乐:

20岁之前。爸妈说不许交男朋友,交了就不准进家门。

但是。20岁之后。爸妈又说。再不交个男朋友就别回来了。

终于解释权归爱尚合伙人全部,转载请注明出处。

Struts2之异常处理的更多相关文章

  1. Struts2的异常处理

    Struts2的异常处理 1.异常处理机制(1)发送请求到控制器(Action); (2)Action出现异常后,依照所捕捉的不同异常转入不同的视图资源. 2.异常捕捉 (1)在Action的处理逻辑 ...

  2. 【struts2】Struts2的异常处理

    在Action中execute方法声明为:public String execute() throws Exception,这样,Action可以抛出任何Exception. 1)自己实现异常处理 我 ...

  3. (十)struts2的异常处理机制

    成熟的MVC框架应该提供成熟的异常处理机制.当然可以在方法中手动捕捉异常,当捕捉到特定异常时,返回特定逻辑视图名. 这种方式非常繁琐,需要在方法中写大量try catch块,最大的缺点还是一旦需要改变 ...

  4. struts2:异常处理

    Struts2框架提供了自己的异常处理机制,只需要在struts.xml文件中配置异常处理即可,而不需要在Action方法中来捕捉异常. 传统方法 public String execute() th ...

  5. java之struts2之异常处理

    1.在应用项目中,异常的出现时很正常的.而且项目上线后发生异常也很正常的.那么需要对这些异常有相应的处理机制,以便客户能够看你到更加友好的界面.Struts2中提供了异常处理机制. 2.Struts中 ...

  6. 配置Struts2的异常处理

    最好的方式是通过声明管理异常处理 1Action里面的execute()方法抛出所有异常:public String execute() throws Exception{} 2声明异常捕捉     ...

  7. SSH答疑解惑系列(三)——Struts2的异常处理

    Struts2的异常采用声明式异常捕捉,具体通过拦截器来实现. 在项目中,我们可以在Action中直接抛出异常,剩下的就交给Struts2的拦截器来处理了.当然,我们需要进行相关配置. Struts2 ...

  8. Struts2全局异常处理

    1.在struts.xml中配置全局异常处理 在Action中抛出异常,此异常可以是action自己抛的,也可以是Service抛出来的,都会跳转到全局异常中,只有在当前Action中配置域全局异常返 ...

  9. Struts2 语法--异常处理

    1. UsersDAO.java里产生一个例外: System.out.println(1/0); 2. 调用DAO的UsersAction1.java 的execute方法, 加抛异常: publi ...

随机推荐

  1. Android http协议实现文件下载

    用http协议下载文件,主要用到的是httpURLConnection对象,主要的步骤如下: 1. 创建HttpURLConnection对象 2.获得一个InputStream对象 3.修改权限:访 ...

  2. codeforces 700B Connecting Universities 贪心dfs

    分析:这个题一眼看上去很难,但是正着做不行,我们换个角度:考虑每条边的贡献 因为是一棵树,所以一条边把树分成两个集合,假如左边有x个学校,右边有y个学校 贪心地想,让每条边在学校的路径上最多,所以贡献 ...

  3. div模拟的下拉框特效jquery

    从网上找来的,感觉不错就拿来分享下 <style type="text/css"> body, ul, li { margin: 0; padding: 0; font ...

  4. python 常用模块

    1.os模块 os模块包装了不同操作系统的通用接口,使用户在不同操作系统下,可以使用相同的函数接口,返回相同结构的结果. os.name:返回当前操作系统名称('posix', 'nt', 'os2' ...

  5. bzoj 1009 [HNOI2008]GT考试(DP+KMP+矩阵乘法)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1009 [题意] 给定一个字符串T,问长度为n且不包含串T的字符串有多少种. [思路] ...

  6. 自定义实现InputFormat、OutputFormat、输出到多个文件目录中去、hadoop1.x api写单词计数的例子、运行时接收命令行参数,代码例子

    一:自定义实现InputFormat *数据源来自于内存 *1.InputFormat是用于处理各种数据源的,下面是实现InputFormat,数据源是来自于内存. *1.1 在程序的job.setI ...

  7. 【C语言】-一维数组

    数组: 数组是一系列相同类型的有序数据的集合,数组中的每一个元素都是同一个数据类型,所有元素共用一个名字,用下标来区别数组中的每一个元素. C语言中,数组属于构造数据类型.一个数组中含有多个数组元素, ...

  8. [iOS 多线程 & 网络 - 2.7] - NSURLCache

    A.基本知识 1.为什么需要缓存?   有时候一个url会请求多次,得到的内容确实一样的   2.缓存的概念     3.缓存数据的过程     当服务器返回数据时,需要做以下步骤(1)使用服务器的数 ...

  9. 虚拟攻防系统 HoneyPot

    转载原地址 http://www.2cto.com/Article/200410/9.html Honeypot 是一个故意设计为有缺陷的系统,通常是用来对入侵者的行为进行警报或者 诱骗.传统的 Ho ...

  10. HDU 4597 Play Game (DP,记忆化搜索,博弈)

    题意:Alice和Bob玩一个游戏,有两个长度为N的正整数数字序列,每次他们两个,只能从其中一个序列,选择两端中的一个拿走.他们都希望可以拿到尽量大的数字之和, 并且他们都足够聪明,每次都选择最优策略 ...