9.struts2异常处理(struts2笔记)

struts2中支持申明式的异常处理。当程序中出现异常之后,struts2需要我们向外抛,之后struts2为我们提供特定的处理struts2异常的接口,让我们可以在特定的页面进行处理。以上一个工程为基础,拷贝一份(工程struts2_3000_BBS2009_07_ExceptionHandling

1.首先我们在CategoryService中的方法可以看到之前有异常我们只是打印,但是上一层并不知道我们出现了异常,这里我们加上一个异常抛出(以list方法为例)

public List list() throws SQLException{
        Connection connection = DB.createConne();
        String sql = "select * from _category";
        PreparedStatement ps = DB.prepare(connection, sql);
        List categories = new ArrayList();
        try{
            ResultSet result = ps.executeQuery();
            while(result.next()){
                Category category = new Category();
                category.setId(result.getInt("id"));
                category.setName(result.getString("name"));
                category.setDescription(result.getString("description"));
                
                categories.add(category);
            }
        }catch(SQLException e){
            e.printStackTrace();
            //这里我们将异常进行抛出
            throw(e);
        }
        DB.close(ps);
        DB.close(connection);
        return categories;
    }

而在CategoryAction.java中的方法list()我们就不需要抓取了,只需要往外抛,让struts2帮我们处理。

//这里我们同样将异常抛出,统一交给struts2进行处理
    public String list() throws Exception{
        categories = service.list();
        return SUCCESS;
    }

那如何处理呢?我们在struts.xml

      
            /admin/{1}_{2}.jsp
            /admin/{1}_{2}.jsp
            
            
              
            /error.jsp
        

可以看到我们配置了当异常发生时我们就返回error,然后会跳转到error.jsp页面。

但是如果我们想让一个异常处理配置所有的异常都可以使用,则需要使用全局异常配置:
struts.xml




    
    
    
         
            
        
    
    
    
        
        
        
            /admin/index.html
        
        
        
            /admin/{1}_{2}.jsp
            /admin/{1}_{2}.jsp
            
            
            
            /error.jsp
        
    
    
    
        
        
            /index.jsp
        
    

可以看到我们将之前的异常配置注释掉了,然后配置了一个全局异常处理,然后其他package继承这个全局异常处理package。当发生异常之后会先在自己package中找,如果没找到则去父package(这里即全局异常package)找,找到之后仍然返回到本package中的result中。但是这样并不好,因为result不能重用,这里我们还可以配置一个全局的result。


        
            /error.jsp
        
         
            
        
    

注意:配置顺序不能反。

你可能感兴趣的:(9.struts2异常处理(struts2笔记))