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的大多数功能都由拦截器实现

posted @ 2014-11-26 20:18  enjoy_clh  阅读(138)  评论(0编辑  收藏  举报