1、声明式异常处理异常处理机制异常处理机制异常处理机制异常处理机制异常处理声明异常处理声明异常处理声明异常处理声明异常处理示例异常处理示例异常处理示例异常处理示例温故温故n要点回顾:u自定义校验器定义校验器类,继承FieldValidatorSupport类,实现validate()方法注册校验器引用校验器u手工编写验证代码在Action组件中改写validate()方法,编写校验代码,将错误信息添加到Action的fieldErrors属性中本讲要点与教学目标本讲要点与教学目标【教学要点教学要点教学要点教学要点】1、异常处理机制、异常处理机制 2、异常处理声明、异常处理声明 3、异常处理示例、异
2、常处理示例【教学目标教学目标教学目标教学目标】了解了解Struts2中异常处理机制,掌握声明式异常处理中异常处理机制,掌握声明式异常处理的方法。的方法。异常处理机制异常处理机制【声明式异常处理声明式异常处理】在业务方法中不需要编写异常处理代码,只需将异常抛出(throws Exception),框架将按照异常类型及其在配置文件中的声明与映射调用相关的组件进行处理。完成此项任务的是拦截器exception,当程序发生异常并抛出时,exception拦截器将对此异常对象再一次封装,并放到值栈(ValueStack)中,封装成的对象包含两个属性:exception、exceptionStack案例案
3、例1 1:声明式异常处理:声明式异常处理【案例要求案例要求】此案例用来演示声明式异常处理的方法。用户从客户端提交数据到Action组件,在Action组件的execute()方法中人为设置能导致异常抛出的语句,通过异常声明映射到相关视图进行处理。【基本思路基本思路】1、相关视图(1)输入页:input.jsp;(2)成功页:success.jsp;(3)异常页:exception.jsp 2、Action组件-ExceptionAction.java 在execute()方法中抛出NullPointerException 3、在配置文件中进行异常声明与映射案例案例1 1:声明式异常处理ninp
4、ut.jspnsuccess.jsp s:textfield name=username label=/s:submit value=/案例案例1 1:声明式异常处理nAction类ExceptionAction.javapublicpublic classclass ExceptionAction ExceptionAction extendsextends ActionSupport ActionSupport private private String username;String username;public public String getUsername()String g
5、etUsername()return return username;username;public public voidvoid setUsername(String username)setUsername(String username)this this.username=username;.username=username;publicpublic String execute()String execute()throwsthrows Exception Exception if(username.length()6)if(username.length()6)throw ne
6、w Exception(throw new Exception(用用用用户户名太短名太短名太短名太短););Class.Class.forNameforName(com.microsoft.sqlserver.jdbc.SQLServerDriver(com.microsoft.sqlserver.jdbc.SQLServerDriver);return return SUCCESSSUCCESS;案例案例1 1:声明式异常处理 constant name=value=true/action name=exception com.hnjm.action.ExceptionAction exce
7、ption-mapping result=exception=java.lang.NullPointerException/exception-mapping result=java.lang.Exception/success.jsp /success.jsp /input.jsp /input.jsp result name=/exception.jsp/exception.jsp nstruts.xml中的声明案例案例1 1:声明式异常处理【结果结果】异常处理补充说明异常处理补充说明 在struts.xml中,可以将异常声明放到action内部,声明的异常仅在指定Action的Resul
8、t视图中引用,称为局部异常声明局部异常声明。异常声明也可以放到action之外,声明的异常可以在全局Result视图中引用,称为全局异常声明全局异常声明。案例案例2 2:全局异常声明:全局异常声明【案例要求案例要求】1、增加一个全局异常处理视图:error.jsp 2、修改在struts.xml,将对java.lang.Exception的异常声明改为全局声明案例案例2 2:全局异常声明nstruts.xml配置 result name=/error.jsp/error.jsp exception-mapping result=exception=java.lang.Exception/!-【
9、注意注意】strutsstruts中元素声明是有顺序的,此处中元素声明是有顺序的,此处必须在必须在之前声明之前声明顺顺序序不不能能颠颠倒倒案例案例2 2:全局异常声明【运行分析运行分析】异常的捕获也遵循“局部优先”原则,NullPointerException即符合局部声明的异常规则,又符合全局声明异常规则,此时按局部优先原则,转到局部的异常捕获视图。案例案例3 3:数据库连接访问的异常处理:数据库连接访问的异常处理【案例说明案例说明】在应用程序运行过程中,可能会因为数据库连接参数、数据库环境设置等错误导致连接失败,从而导致程序执行错误。以商品上传和显示为例,通过声明式异常处理,将SQLExc
10、eption异常映射到异常处理页进行输出。数据库连接访问的异常处理【案例分析案例分析】以前处理SQLException的方法是捕获异常直接在控制台输出。若要通过声明式异常输出到异常处理页,则需要将产生的异常继续抛出,即:在可能产生异常的方法内不用try-catch,而直接在方法声明中使用throws XXXException短语将异常抛出给它的调用者。数据库连接访问的异常处理【关键步骤关键步骤】1、将连接类、业务类中的try-catch删除,在对应方法的声明中使用“throws Exception”短语2、在struts.xml中进行异常声明和映射【具体操作具体操作】(略)小结小结n声明式异常处理u在struts.xml中声明异常处理的视图,将Action中抛出的异常在指定的视图中捕获并处理。n异常声明的类型u局部声明在Action内部声明u全局声明在Action之外声明作业作业n编写程序验证声明式异常处理的方法。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1