溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Web層框架對(duì)網(wǎng)站中所有異常的統(tǒng)一處理

發(fā)布時(shí)間:2020-07-25 12:48:09 來(lái)源:網(wǎng)絡(luò) 閱讀:306 作者:吳金瑞 欄目:網(wǎng)絡(luò)安全

    

一個(gè)網(wǎng)站的異常信息作為專業(yè)的人士,是不會(huì)輕易暴露給用戶的,因?yàn)槟菢雍莶话踩?,顯得你漏是一回事,只要還是考慮到網(wǎng)站的數(shù)據(jù)安全問(wèn)題,下面給大家分享一下一些常見(jiàn)的web層框架是如何處理統(tǒng)一的異常?!?/span>

  之前都是在Struts2的配置文件中配置攔截器來(lái)統(tǒng)一處理系統(tǒng)中所有的異常,給大家?guī)c(diǎn)偽代碼吧,好歹曾經(jīng)用過(guò),呵呵。

配置文件配置信息如下:

Web層框架對(duì)網(wǎng)站中所有異常的統(tǒng)一處理

 1   <package name="base" extends="struts-default"> 2         <!-- 異常處理 --> 3         <interceptors> 4             <!-- 1.聲明自定義異常攔截器 --> 5             <interceptor name="exceptionInterceptor" class="com.it.yycg.framework.exception.ExceptionInterceptor"></interceptor> 6             <!-- 2.聲明攔截器棧  --> 7             <interceptor-stack name="customStack"> 8                 <interceptor-ref name="exceptionInterceptor"/> 9                 <interceptor-ref name="defaultStack"/>10             </interceptor-stack>11         </interceptors>12         <!-- 設(shè)置默認(rèn)執(zhí)行的攔截器 -->13         <default-interceptor-ref name="customStack"/>14         <!-- 公用的 result -->15         <global-results>16             <result name="error_jsp" >/common/error.jsp</result>17             <!-- 拒絕訪問(wèn)返回頁(yè)面 -->18             <result name="refuse" >/common/refuse.jsp</result>19         </global-results>20         21         <!-- 配置訪問(wèn)Action返回jsp頁(yè)面的標(biāo)簽 
22             Struts默認(rèn)執(zhí)行類ActionSupport中的execute()方法23             class默認(rèn)ActionSupport24             成功后的返回name默認(rèn)為success25         -->26         <action name="ui_*_*">27             <result>/business/{1}/{2}.jsp</result>28         </action>        
29     </package>

Web層框架對(duì)網(wǎng)站中所有異常的統(tǒng)一處理

Java類偽代碼如下:

Web層框架對(duì)網(wǎng)站中所有異常的統(tǒng)一處理

          ExceptionInterceptor          serialVersionUID = -3570177760250354837L       String intercept(ActionInvocation actionInvocation)          HttpServletRequest request =         String result =                                    result =         }                                         ExceptionResultInfo exceptionResultInfo =                            (e                  exceptionResultInfo =             }   (e  UnknownAccountException || e                  ResultInfo resultInfo = ResultUtil.createFail("用戶名或密碼錯(cuò)誤!"                 exceptionResultInfo =              }   (e                  ResultInfo resultInfo = ResultUtil.createFail("沒(méi)有權(quán)限!"                 exceptionResultInfo =

Web層框架對(duì)網(wǎng)站中所有異常的統(tǒng)一處理

 

首先說(shuō)說(shuō)springmvc處理統(tǒng)一異常的方式,目前就我了解的有三種:直接使用springmvc提供的異常處理器、自己手動(dòng)配置自定義全局異常處理器和使用注解(該種方式?jīng)]用過(guò))?! ?/span>

  先說(shuō)一下第一種吧,它是直接在springmvc的核心配置文件中配置springmvc自身提供的簡(jiǎn)單異常處理器。

Web層框架對(duì)網(wǎng)站中所有異常的統(tǒng)一處理

 1   <!-- springmvc提供的簡(jiǎn)單異常處理器 --> 2     <!-- <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> 3          定義默認(rèn)的異常處理頁(yè)面 4         <property name="defaultErrorView" value="/WEB-INF/jsp/exception.jsp"/>                                    
 5         定義異常處理頁(yè)面用來(lái)獲取異常信息的變量名,也可不定義,默認(rèn)名為exception 
 6         <property name="exceptionAttribute" value="ex"/> 7         定義需要特殊處理的異常,這是重要點(diǎn) 
 8         <property name="exceptionMappings"> 9             <props>10                 <prop key="com.tgsit.cjd.model.CustomException">exception</prop>11             </props>12             還可以定義其他的自定義異常13         </property>14     </bean> -->

Web層框架對(duì)網(wǎng)站中所有異常的統(tǒng)一處理

 

  第二種就是自己定義一個(gè)異常處理器,然后通過(guò)在springmvc的核心配置文件中配置即可。

自定義異常處理器類偽代碼如下:

Web層框架對(duì)網(wǎng)站中所有異常的統(tǒng)一處理

 1 /** 2  * 自定義全局異常處理器: 3  */ 4 public class CustomExceptionResolver implements HandlerExceptionResolver { 5     @Override 6     public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, 7             Exception ex) { 8          9         ex.printStackTrace();10         CustomException customException = null;11         //如果拋出的是自定義的異常則直接轉(zhuǎn)換12         if(ex instanceof CustomException) {13             customException = (CustomException) ex;14         } else {15             //如果拋出的不是自定義的異常則重新構(gòu)造一個(gè)未知錯(cuò)誤異常16             new SysException("系統(tǒng)正在維護(hù)中,請(qǐng)稍后重試...");17         }18         //向前臺(tái)返回錯(cuò)誤信息19         ModelAndView modelAndView = new ModelAndView("exception");20         modelAndView.addObject("message", customException.getMessage());21         return modelAndView;22     }23 }

Web層框架對(duì)網(wǎng)站中所有異常的統(tǒng)一處理

springmvc配置文件配置信息如下(各位在迫不得已的情況復(fù)制的時(shí)候記得修改一下包名):

1 <!-- 配置自定義的全局異常處理器      只要實(shí)現(xiàn)HandlerExceptionResolver接口就是全局異常處理器-->2 <bean class="com.tgsit.cjd.utils.CustomExceptionResolver"/>

 


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI