• Struts学习笔记_声明式异常处理


    一,声明式异常处理:

     第一步:首先在有可能抛出异常的方法里面throws exception

    public List<Category> list() throws SQLException {
            Connection conn = DB.createConn();
            String sql = "select * from _category_"; //数据库里面没有这个table,产生异常
            PreparedStatement ps = DB.prepare(conn, sql);
            List<Category> categories = new ArrayList<Category>();
            try {
                ResultSet rs = ps.executeQuery();
                Category c = null;
                while(rs.next()) {
                    c = new Category();
                    c.setId(rs.getInt("id"));
                    c.setName(rs.getString("name"));
                    c.setDescription(rs.getString("description"));
                    categories.add(c);
                }
            } catch (SQLException e) {
                e.printStackTrace();
                throw(e);//抛出产生的异常
            }
            DB.close(ps);
            DB.close(conn);
            return categories;
        }
        

    第二步:.在Actoin中进行异常映射

    public String list() throws Exception {
            categories = categoryService.list();
            return SUCCESS;
        }

    第三步:在package中进行异常映射

    1.方法一:定义action自己的异常

    <struts>
        <constant name="struts.devMode" value="true"></constant>
    
        <package name="admin" namespace="/admin" extends="struts-default" >
    
               <action name="index">
                   <result>/admin/index.html</result>
               </action>
               
           <action name="*-*" class="com.bjsxt.bbs2009.action.{1}Action" method="{2}">
                   <result>/admin/{1}-{2}.jsp</result>
                   <result name="input">/admin/{1}-{2}.jsp</result>
                   <exception-mapping result="error" exception="java.sql.SQLException" />  //发生java.sql.SQLException异常时会跳转到error.jsp
                    <result name="error">/error.jsp</result>
           </action>
           
        </package> 
    </struts>

    2.方法二:使用继承共用异常映射(把所有的异常都交给global-results 处理)

    <struts>
        
         
        <constant name="struts.devMode" value="true"></constant>
        <package name="bbs2009_default" extends="struts-default">
         
            <global-results>
                <result name="error">/error.jsp</result>
            </global-results>
            
             <global-exception-mappings>
                <exception-mapping result="error" exception="java.lang.Exception"></exception-mapping>
            </global-exception-mappings>
    
        </package>
        
        <package name="admin" namespace="/admin" extends="bbs2009_default" >
     
               <action name="index">
                   <result>/admin/index.html</result>
               </action>
               
           <action name="*-*" class="com.bjsxt.bbs2009.action.{1}Action" method="{2}">
                   <result>/admin/{1}-{2}.jsp</result>
                   <result name="input">/admin/{1}-{2}.jsp</result>
                    <!-- <exception-mapping result="error" exception="java.sql.SQLException" />  
                    <result name="error">/error.jsp</result> -->
           </action>
          
        </package>
    
    </struts>

    二,Struts2中异常处理由拦截器实现(观察struts-default.xml)

        a)         实际上Struts2的大多数功能都由拦截器实现

  • 相关阅读:
    B. Gerald is into Art
    day 56 Django介绍
    day 55 bootstrap应用
    Python学习之变量的作用域
    day 54 JQ用法
    day 53 BOM与DOM
    day 52 js语法
    day 51 label标签,文字属性,背景属性,边框,display属性,盒模型,浮动,overflow,定位,z-index和模态框
    day 50 form表单,input框,textarea,select,css的引入方式,标签嵌套,选择器,宽高属性,字体属性
    day 49 html标签介绍,标题、段落、a、img、表格、特殊符号、常用标签、div、span
  • 原文地址:https://www.cnblogs.com/enjoy-life-clh/p/4102612.html
Copyright © 2020-2023  润新知