在通常的情況下,我們得到異常以后,需要將頁面導航到一個錯誤提示的頁面,提示錯誤信息。
      
      利用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>
      
      該Exception只對當前action起作用,也可以配置全局exception
        <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>
      
      哪個優先?就近原則。
        
          <exception/>
        
        
          元素配置的關鍵屬性是:
        
      
      
        
          *key – 即這個異常所對應的錯誤提示消息文本的key,這個key的值,
          
            需要在資源屬性文件中進行定義
          
        
      
      
        
          *type – 即定義需要處理哪種類型的Exception
        
      
      
        
          *path – 定義一旦出現異常,需要轉向哪個頁面來進行提示,如果不定義path屬性,默認情況下,將使用Action配置中的input屬性的值來作為轉向的頁面
        
      
      
        
    2、 
   
        
          在
        
        
          JSP
        
        
          頁面中,使用
        
        
          <
        
        
          html:errors
        
        
          />
        
        
          標簽,即可將其異常對應的錯誤消息文本進行顯示
        
      
      
        
    示例: 
  
      
      
        
    還是以登錄為例—— 
  
      
      
        
    LoginAction 
  
      
      
        **
 * 登錄action
 * 
 * @author jialin 作用:取得表單數據,調用model層業務邏輯,返回轉向信息
 */
public class LoginAction extends Action {
	@Override
	public 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
        
        
          />
        
        
          標簽,即可將其異常對應的錯誤消息文本進行顯示
        
      
      
        
    效果: 
  
      
      
      
        
    下篇繼續 
  
      
      
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061
					微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
					
