Struts2之异常处理
一、学习案例:通过在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之异常处理的更多相关文章
- Struts2的异常处理
Struts2的异常处理 1.异常处理机制(1)发送请求到控制器(Action); (2)Action出现异常后,依照所捕捉的不同异常转入不同的视图资源. 2.异常捕捉 (1)在Action的处理逻辑 ...
- 【struts2】Struts2的异常处理
在Action中execute方法声明为:public String execute() throws Exception,这样,Action可以抛出任何Exception. 1)自己实现异常处理 我 ...
- (十)struts2的异常处理机制
成熟的MVC框架应该提供成熟的异常处理机制.当然可以在方法中手动捕捉异常,当捕捉到特定异常时,返回特定逻辑视图名. 这种方式非常繁琐,需要在方法中写大量try catch块,最大的缺点还是一旦需要改变 ...
- struts2:异常处理
Struts2框架提供了自己的异常处理机制,只需要在struts.xml文件中配置异常处理即可,而不需要在Action方法中来捕捉异常. 传统方法 public String execute() th ...
- java之struts2之异常处理
1.在应用项目中,异常的出现时很正常的.而且项目上线后发生异常也很正常的.那么需要对这些异常有相应的处理机制,以便客户能够看你到更加友好的界面.Struts2中提供了异常处理机制. 2.Struts中 ...
- 配置Struts2的异常处理
最好的方式是通过声明管理异常处理 1Action里面的execute()方法抛出所有异常:public String execute() throws Exception{} 2声明异常捕捉 ...
- SSH答疑解惑系列(三)——Struts2的异常处理
Struts2的异常采用声明式异常捕捉,具体通过拦截器来实现. 在项目中,我们可以在Action中直接抛出异常,剩下的就交给Struts2的拦截器来处理了.当然,我们需要进行相关配置. Struts2 ...
- Struts2全局异常处理
1.在struts.xml中配置全局异常处理 在Action中抛出异常,此异常可以是action自己抛的,也可以是Service抛出来的,都会跳转到全局异常中,只有在当前Action中配置域全局异常返 ...
- Struts2 语法--异常处理
1. UsersDAO.java里产生一个例外: System.out.println(1/0); 2. 调用DAO的UsersAction1.java 的execute方法, 加抛异常: publi ...
随机推荐
- 如何清除win7开机密码
一.电脑已经登录到系统,但是忘记了密1对于这种情况是最简单的,其实只需要将密码取消就可以了右键单击桌面上我的电脑,选择管理即可进入计算机管理界面2依次展开系统工具--本地用户和组--用户,在右侧选择要 ...
- maven学习系列教程,第一课(web项目的搭建)
1.现在一般eclipse都已经装好了maven板块,无需自行下载安装,所以我们的第一步就是新建一个maven project 2地址使用默认的就行 3这边筛选一下,选择webapp 4. 5.建好后 ...
- 8个很有用的PHP安全函数,你知道几个?
原文:Useful functions to provide secure PHP application 译文:有用的PHP安全函数 译者:dwqs 安 全是编程非常重要的一个方面.在任何一种编程语 ...
- centos编译helloworld的几个小问题
1.GCC使用在使用GCC编译程序时,编译过程可以被细分为四个阶段:预处理(Pre-Processing)编译(Compiling)汇编(Assembling)链接(Linking).例如: ...
- C++ 我想这样用(三)
话接前篇,继续谈在C++环境下使用C风格编程时的注意点: 6.关于原型的声明 在C里,调用一个未声明的函数是允许的,但是在C++里,必须先声明才能调用函数.另外,如果函数的参数是空的,那么在c里面是未 ...
- vim对erlang语法支持
发现vim写erlang代码语法缩进都不对,后来发现vim是7.0的,vim7.3开始才对erlang这块进行了支持,所以升级vim git上下载源码包,然后一系列配置安装 http://www.2c ...
- git使用中遇到的常见问题
.gitignore 中添加的文件不能被忽略掉 这是因为我们误解了 .gitignore 文件的用途,该文件只能作用于 Untracked Files,也就是那些从来没有被 Git 记录过的文件(自添 ...
- Makefile中用宏定义进行条件编译
在源代码里面如果这样是定义的: #ifdef MACRONAME //可选代码 #endif 那在makefile里面 gcc -D MACRONAME=MACRODEF 或者 gcc ...
- Spark生态之Spark Core
- 现代程序设计——homework-10
设计 对于MVC我的理解是这样的,V是台显示器,注意仅仅是一台比显示器普通显示器多几个按钮,用户按什么,按了什么该干什么都不用操心:M是实体的软件抽象,假设实体可以但不执行,我就可以一步一步走,实体可 ...