web.xml 에러페이지 처리
API형태로 JSON으로 응답코드, 데이터를 리턴시 에러코드에 대한 대응이 필요했다.
기본적으로 web.xml에 아래와 같이 설정을 하면 각 각의 에러코드 발생시 지정해 놓은 jsp로 가게 된다.
하지만 Object에 결과값을 담아 리턴해야하기 때문에 페이지가 아닌 Controller로 이동시켜줘야 한다.
<error-page>
<error-code>401</error-code>
<location>/resources/common/error/serverError.jsp</location>
</error-page>
<error-page>
<error-code>403</error-code>
<location>/resources/common/error/serverError.jsp</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/resources/common/error/notFound.jsp</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/resources/common/error/serverError.jsp</location>
</error-page>
RequestMapping을 통한 Controller로 이동시키기
REST API형태이기 때문에 url pattern이 '/*' 이다.
<error-page>
<error-code>400</error-code>
<location>/error/400</location>
</error-page>
<error-page>
<error-code>401</error-code>
<location>/error/401</location>
</error-page>
<error-page>
<error-code>403</error-code>
<location>/error/403</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/error/404</location>
</error-page>
<error-page>
<error-code>405</error-code>
<location>/error/405</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/error/500</location>
</error-page>
일반적인 웹의 경우 사용할 일은 거의 없겠지만
* url pattern이 '*.do' 일 경우 아래와 같은 형식으로 지정
<error-page>
<error-code>400</error-code>
<location>/400/error.do</location>
</error-page>
@Controller
@RequestMapping(value = "/error")
public class ErrorController {
private static final Logger logger = LoggerFactory.getLogger(ErrorController.class);
/**
* HTTP Error GET
* @param code
* @return
* @throws Exception
*/
@RequestMapping(value = "/{code}", method = RequestMethod.GET)
@ResponseBody
public ResultVO methodErrorGet(@PathVariable int code) throws Exception{
logger.debug("HTTP Response Error Code : {}", code);
ResultVO resultVO = new ResultVO();
HttpStatus httpStatus = HttpStatus.valueOf(code);
resultVO.setCode(httpStatus.value());
return resultVO;
}
/**
* HTTP Error POST
* @param code
* @return
* @throws Exception
*/
@RequestMapping(value = "/{code}", method = RequestMethod.POST)
@ResponseBody
public ResultVO methodErrorPost(@PathVariable int code) throws Exception{
logger.debug("HTTP Response Error Code : {}", code);
ResultVO resultVO = new ResultVO();
HttpStatus httpStatus = HttpStatus.valueOf(code);
resultVO.setCode(httpStatus.value());
return resultVO;
}
}
* url pattern이 '*.do'일 경우
@RequestMapping(value = "/{code}/error.do") 와 같은 형태로 받을 수 있다.
'Programming > Web' 카테고리의 다른 글
[Web] JSTL FUNCTION (0) | 2015.03.10 |
---|---|
[Web] GET / POST 한글 처리 (0) | 2015.01.26 |
[Web] requestPath (0) | 2014.12.08 |
[Web] URI, URL, URN 이란? (0) | 2014.09.18 |
[Web] Servlet/JSP Programming (0) | 2014.09.18 |