• Struts——(四)异常处理机制


    在通常的情况下,我们得到异常以后,需要将页面导航到一个错误提示的页面,提示错误信息。利用Stuts我们可以采用两种方式处理异常:
    1.编程式异常处理
    • 即我们在Action中调用业务逻辑层对象的方法时,用try{ }catch的方式来截获异常之后,手工对异常进行处理
    • 在编程式异常处理的时候,我们可以使用struts的消息处理机制来对这些异常信息进行处理。

    2. 自动异常处理机制

    • 即在Action中不捕捉异常,而是将异常抛出给struts框架处理
    • 我们需要在配置文件中指示struts如何处理这些被抛出的异常
    • 使用<exception/>元素来定义自动异常处理

    一、主要步骤:

    1. 配置Exception标签:struts-config.xml

    1 <action path="/login" type="com.jialin.LoginAction" name="userForm" scope="request" validate="true" attribute="uf" input="/index.jsp">
    2     <exception key="login.user.not.found" type="com.jialin.UserNotFoundException" />
    3     <exception key="login.password.error" type="com.jialin.PasswordErrorException" path="/LoginFail.jsp" />
    4 
    5 </action>

    该Exception只对当前action起作用,也可以配置全局exception

    1 <global-exceptions>
    2     <exception key="login.user.not.found" type="com.jialin.UserNotFoundException" />
    3     <exception key="login.password.error" type="com.jialin.PasswordErrorException" path="/LoginFail.jsp" />
    4 </global-exceptions>
     
    1)<exception/>元素配置的关键属性是
     
    • key – 即这个异常所对应的错误提示消息文本的key,这个key的值,需要在资源属性文件中进行定
    • type – 即定义需要处理哪种类型的Exception
    • path – 定义一旦出现异常,需要转向哪个页面来进行提示,如果不定义path属性,默认情况下,将使用Action配置中的input属性的值来作为转向的页面

    2)哪个优先?——就近原则

    2. 在JSP页面,使用:<html:errors/>标签

    即可将其异常对应的错误消息文本进行显示

     1 **
     2  * 登录action
     3  * 
     4  * @author jialin 作用:取得表单数据,调用model层业务逻辑,返回转向信息
     5  */
     6 public class LoginAction extends Action {
     7 
     8     @Override
     9     public ActionForward execute(ActionMapping mapping, ActionForm form,
    10             HttpServletRequest request, HttpServletResponse response)
    11             throws Exception {
    12         UserActionForm userForm = (UserActionForm) form;
    13         String userName = userForm.getName();
    14         int password = userForm.getPassword(); 
    15 
    16         UserManage userManage = new UserManage();
    17         User user = new User();
    18         user.setName(userName);
    19         user.setPassword(password);
    20         //这里不再有trycatch语句
    21         userManage.ValidateUser(user);
    22         return mapping.findForward("success");
    23 
    24     }
    25 
    26 }
    27 
    28 
    29 <span style="font-family:Arial;BACKGROUND-COLOR: #ffffff"></span>

    二、就近原则

  • 相关阅读:
    Java代码打成jar后 classgetClassLoadergetResource("")返回为null
    springboot-yml内list、map组合写法
    rpc-java 生成代码路径设置
    Git操作 :从一个分支cherry-pick多个commit到其他分支
    使用maven插件生成grpc所需要的Java代码
    'Failed to import pydot. You must `pip install pydot` and install graphviz
    seasonal_decompose plot figsize
    Failed to install 'TwoSampleMR' from GitHub
    prophet Building wheel for fbprophet (setup.py) ... error
    python matplotlib 绘图线条类型和颜色选择
  • 原文地址:https://www.cnblogs.com/lesleysbw/p/6252591.html
Copyright © 2020-2023  润新知