티스토리 뷰

자바로 웹서버를 개발하다보면 Controller 에서 수신하는 파라미터 정보가 필수인지 아닌지 직관적으로 확인이 필요한 경우가 많다


  1. 프로퍼티의 속성만 보고서 required  여부를 판단할수 있도록 명시를 해주도록 하자.
  2. required로 정의된 프로퍼티가 없을때 AOP의 Exception처리로 MissingServletRequestParameterException 를 정의해주자.
  3. 단, 해당 파라미터가 누락되었을때만 Exception처리에 포함되고, 파라미터는 있고 값이 empty이거나 요구한 값과 상이한것에 대해서는 로직단에서 구현해야 한다.

 



/*컨트롤러단 파라미터 속성 정의 예*/
@RequestMapping(value = "/test", produces="text/html")
@ResponseBody
   public String paymentCallback(
        @RequestParam(value = "param1", defaultValue = "", required=true) String startDateTime,
        @RequestParam(value = "param2", defaultValue = "", required=true) String endDateTime,
        @RequestParam(value = "param3", defaultValue = "", required=false) String tradeNo,
        HttpServletResponse res) throws Exception {
    }


/*LogException 예*/
@Override
    public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception e) {
         
        if(shouldApplyTo(request, handler)) {
             
             
            if(logger.isDebugEnabled())
                logger.debug((new StringBuilder("Resolving eception from handler [")).append(handler).append("]: ").append(e).toString());
             
            Map<String, Object> error = new HashMap<String, Object>();
            if (e instanceof MissingServletRequestParameterException) {
                System.out.println("필수 파라미터 누락! : " + e.getMessage());
            }
        }
    }


파라미터 누락시 아래와 같은 로그를 확인할 수 있으므로 로그추적에도 용이함
 
7월 08 01:04:50 오전 ERROR - LoggingExceptionResolver.resolveException(91) | METHOD : POST
7월 08 01:04:50 오전 ERROR - LoggingExceptionResolver.resolveException(92) | URI : /test
7월 08 01:04:50 오전 ERROR - LoggingExceptionResolver.resolveException(93) | Parameter : {param2=1&param=3}
7월 08 01:04:50 오전 ERROR - LoggingExceptionResolver.resolveException(94) | IP : 10.1.1.1
7월 08 01:04:50 오전 ERROR - LoggingExceptionResolver.resolveException(95) | errorMessage : org.springframework.web.bind.MissingServletRequestParameterException: Required String parameter 'param1' is not present



'프로그램 > JAVA' 카테고리의 다른 글

톰캣 common-dbcp  (0) 2016.10.18
Troubleshooting 스레드사용법  (0) 2016.10.12
자바 메모리 튜닝  (0) 2016.10.12
자바 메모리 분석방법 및 분석도구  (0) 2016.10.12
자바 버전 관리 및 운영 alternatives  (0) 2016.07.05
댓글