創(chuàng)新互聯(lián)建站是一家專注于成都網(wǎng)站制作、成都網(wǎng)站建設(shè)與策劃設(shè)計(jì),昌邑網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)建站做網(wǎng)站,專注于網(wǎng)站建設(shè)10年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:昌邑等地區(qū)。昌邑做網(wǎng)站價(jià)格咨詢:18980820575
一個(gè)網(wǎng)站的異常信息作為專業(yè)的人士,是不會(huì)輕易暴露給用戶的,因?yàn)槟菢雍莶话踩?,顯得你漏是一回事,只要還是考慮到網(wǎng)站的數(shù)據(jù)安全問題,下面給大家分享一下一些常見的web層框架是如何處理統(tǒng)一的異常?!?/p>
之前都是在Struts2的配置文件中配置攔截器來統(tǒng)一處理系統(tǒng)中所有的異常,給大家?guī)c(diǎn)偽代碼吧,好歹曾經(jīng)用過,呵呵。
配置文件配置信息如下:
12 3 4 5 12 136 7 8 119 10 14 15 16 20 21 26/common/error.jsp 17 18/common/refuse.jsp 1927 29/business/{1}/{2}.jsp 28
Java類偽代碼如下:
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("沒有權(quán)限!" exceptionResultInfo =
首先說說springmvc處理統(tǒng)一異常的方式,目前就我了解的有三種:直接使用springmvc提供的異常處理器、自己手動(dòng)配置自定義全局異常處理器和使用注解(該種方式?jīng)]用過)?! ?/p>
先說一下第一種吧,它是直接在springmvc的核心配置文件中配置springmvc自身提供的簡單異常處理器。
1 2
第二種就是自己定義一個(gè)異常處理器,然后通過在springmvc的核心配置文件中配置即可。
自定義異常處理器類偽代碼如下:
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 }
springmvc配置文件配置信息如下(各位在迫不得已的情況復(fù)制的時(shí)候記得修改一下包名):
1 2