一口一口吃掉Struts(十)——异常自动处理机制
在通常的情况下,我们得到异常以后,需要将页面导航到一个错误提示的页面,提示错误信息。利用Stuts我们可以采用两种方式处理异常 一、编程式异常处理 *即我们在Action中调用业务逻辑层对象的方法时,用try{ }catch的方式来截获异常之后,手工对异常进行处理 *我们以前的开发过程中,都是使用编程式的异常处理 *在编程式异常处理的时候,我们可以使用struts的消息处理机制来对这些异常信息进行处理。 二、自动异常处理机制 *即在Action中不捕捉异常,而是将异常抛出给struts框架处理 *我们需要在配置文件中指示struts如何处理这些被抛出的异常 *使用<exception/>元素来定义自动异常处理 方式一在上一篇有关国际化的文章中,我们已经涉及过了,这里我们主要说一下方式二。 主要步骤:1、配置Excepiton标签
<action path="/login" type="com.jialin.LoginAction" name="userForm"scope="request" validate="true" attribute="uf" input="/index.jsp"><exception key="login.user.not.found" type="com.jialin.UserNotFoundException" /><exception key="login.password.error" type="com.jialin.PasswordErrorException"path="/LoginFail.jsp" /></action>
<global-exceptions><exception key="login.user.not.found" type="com.jialin.UserNotFoundException" /><exception key="login.password.error" type="com.jialin.PasswordErrorException"path="/LoginFail.jsp" /></global-exceptions>
** * 登录action * * @author jialin 作用:取得表单数据,调用model层业务逻辑,返回转向信息 */public class LoginAction extends Action {@Overridepublic ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)throws Exception {UserActionForm userForm = (UserActionForm) form;String userName = userForm.getName();int password = userForm.getPassword(); UserManage userManage = new UserManage();User user = new User();user.setName(userName);user.setPassword(password); //这里不再有trycatch语句userManage.ValidateUser(user);return mapping.findForward("success");}}配置文件采用上面列举出的。 显示界面使用使用<html:errors/>标签,即可将其异常对应的错误消息文本进行显示 效果: 下篇继续