velocity 템 플 릿 엔진 학습 (3) - 이상 처리
14046 단어 velocity
오류
1 <error-page>
2 <error-code>404</error-code>
3 <location>/nopage.do</location>
4 </error-page>
5
6 <error-page>
7 <error-code>500</error-code>
8 <location>/error.do</location>
9 </error-page>
웹. xml 에 이 두 가 지 를 추가 합 니 다. location 노드 를 주의 하 십시오. 물리 적 파일 경로 로 지정 한 것 이 아니 라 Spring MVC 에서 Controller 의 구체 적 인 방법 으로 매 핑 된 URI 입 니 다.
1 @RequestMapping(value = "/nopage.do", method = RequestMethod.GET)
2 public String pageNotFound(Locale locale, Model model) throws Exception {
3 return "errors/404";
4 }
5
6 @RequestMapping(value = "/error.do", method = RequestMethod.GET)
7 public String innerError(Locale locale, Model model) throws Exception {
8 return "errors/500";
9 }
위 는 Controller 의 처리 입 니 다.
2. 일반적인 이상 처리
Controller 의 처 리 는 여전히 이전 과 같 습 니 다. 관건 은 errors / error. vm 이 템 플 릿 파일 을 어떻게 쓰 느 냐 입 니 다.
1 <!doctype html>
2 <html>
3 <head>
4 #parse("comm/header.vm")
5 #set($ex=$request.getAttribute("ex"))
6 <title>ERROR</title>
7 </head>
8 <body style="margin:20px">
9 <H2>
10 :$ex.class.simpleName
11 </H2>
12 <hr/>
13 <P>
14 <strong> :</strong>$ex.message
15 </P>
16
17 <P>
18 <strong> :</strong>
19 </P>
20 <pre>
21 #foreach($stack in $ex.getStackTrace())
22 $stack.toString()
23 #end
24 </pre>
25 </body>
26 </html>
주의: 5, 10, 21 - 23 이 몇 줄
3. ajax 이상 처리
BaseController 에서 json 문자열 을 직접 되 돌려 주 려 면 다음 코드 를 참고 하 십시오.
1 @ExceptionHandler
2 public String exp(HttpServletRequest request, HttpServletResponse response, Exception ex) throws Exception {
3 String resultViewName = "errors/error";
4
5 //
6 logger.error(ex.getMessage(), ex);
7
8 //
9 if (ex instanceof BusinessException) {
10 resultViewName = "errors/biz-error";
11 } else {
12 //
13 //ex = new Exception(" , !");
14 }
15
16 String xRequestedWith = request.getHeader("X-Requested-With");
17 if (!StringUtils.isEmpty(xRequestedWith)) {
18 // ajax
19 ResponseUtil.OutputJson(response, "{\"error\":\"" + ex.getClass().getSimpleName() + "\",\"detail\":\"" + ex.getMessage() + "\"}");
20 }
21 request.setAttribute("ex", ex);
22 return resultViewName;
23 }
관건 은 두 가지 가 있 습 니 다. 방법 서명 에 Http ServletResponse response 를 추가 한 다음 19 줄 에서 JSon 문자열 을 직접 출력 합 니 다. 그 중에서 Response Util 류 를 사 용 했 습 니 다. 이 유형의 주요 코드 는 다음 과 같 습 니 다.
1 public static void OutputContent(HttpServletResponse response,
2 String contentType, String content) throws IOException {
3 response.setContentType(contentType + ";charset=utf-8");
4 response.setCharacterEncoding("UTF-8");
5 PrintWriter out = response.getWriter();
6 out.println(content);
7 out.flush();
8 out.close();
9 }
10
11 public static void OutputJson(HttpServletResponse response, String content)
12 throws IOException {
13 OutputContent(response, "application/json", content);
14 }
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
POJ 3300 Tour de FranceAt any time the chain connects one of the front sprockets to one of the rear sprockets. The drive ratio -- the ratio of ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.