사용자 도구

사이트 도구


springframework:mvc

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
다음 판 양쪽 다음 판
springframework:mvc [2015/03/03 13:32]
kwon37xi
springframework:mvc [2020/01/28 17:55]
kwon37xi
줄 3: 줄 3:
   * [[https://github.com/rstoyanchev/spring-mvc-31-demo|rstoyanchev/spring-mvc-31-demo]]   * [[https://github.com/rstoyanchev/spring-mvc-31-demo|rstoyanchev/spring-mvc-31-demo]]
  
-===== @ModelAttribute와 redirect ===== 
-컨트롤러에 ''@ModelAttribute'' 메소드가 지정된 상태에서 redirect를 수행하면 리다이렉트 주소 뒤에 모든 모델 어트리뷰트가 파라미터로 붙는 현상이 발생한다. 이 때 해결책은 **Model 객체의 모든 내용을 삭제한 뒤에 리다이렉트**하면 된다. [[http://stackoverflow.com/questions/2163517/how-do-i-prevent-spring-3-0-mvc-modelattribute-variables-from-appearing-in-url|java - How do I prevent Spring 3.0 MVC @ModelAttribute variables from appearing in URL? - Stack Overflow]] 
  
-<code java> 
-// ModelMap 객체일 경우 
-model.clear(); 
- 
-// Model 객체일 경우 
-model.asMap().clear(); 
-</code> 
- 
-Spring 3.1의 경우 [[http://static.springsource.org/spring/docs/3.1.x/javadoc-api/org/springframework/web/servlet/mvc/support/RedirectAttributes.html|RedirectAttributes]]를 사용하면 이런 작업이 불필요하다. 
 ===== <mvc:resources> ===== ===== <mvc:resources> =====
 아래와 같은 형태로 정적 파일을 제공해 줄 수 있다. 정적 리소스의 경로는 ''/resources-버전/images/test.gif'' 형태가 된다. 아래와 같은 형태로 정적 파일을 제공해 줄 수 있다. 정적 리소스의 경로는 ''/resources-버전/images/test.gif'' 형태가 된다.
줄 55: 줄 44:
   * 요청 URL이 두 번 반복되는 듯 보이는 현상이 발생한다면 그것은 응답 객체에 올바른 View를 지정하지 않아서, Spring이 URL을 View로 간주하고 리다이렉트를 시도한 것이다.   * 요청 URL이 두 번 반복되는 듯 보이는 현상이 발생한다면 그것은 응답 객체에 올바른 View를 지정하지 않아서, Spring이 URL을 View로 간주하고 리다이렉트를 시도한 것이다.
   * 예를들어 ''/api/resources/1''로 요청을 보냈는데 ''No mapping found for HTTP request with URI [/api/resources/1/api/resources/1] in DispatcherServlet with name 'servlet''' 같은 오류가 발생했다면 이는 ''@ResponseBody''를 지정하지 않고 View가 아닌 일반 객체를 리턴했기 때문이다.   * 예를들어 ''/api/resources/1''로 요청을 보냈는데 ''No mapping found for HTTP request with URI [/api/resources/1/api/resources/1] in DispatcherServlet with name 'servlet''' 같은 오류가 발생했다면 이는 ''@ResponseBody''를 지정하지 않고 View가 아닌 일반 객체를 리턴했기 때문이다.
 +
 +===== Date / Time 파라미터 =====
 +  * [[http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/format/annotation/DateTimeFormat.html|@DateTimeFormat]] 으로 요청 파라미터 포맷을 정할 수 있다.<code java>
 +@RequestParam(value = "registerDate") @DateTimeFormat(pattern = "yyyy/MM/dd") Date registerDate
 +</code>
 +  * 파라미터 DTO 클래스등을 지정할 경우 클래스의 필드에 지정할 수도 있다.
 +
 +===== CommonRequestLoggingFilter =====
 +  * [[http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/filter/CommonsRequestLoggingFilter.html|CommonRequestLoggingFilter]]
 +  * 요청을 로깅함.
 +
 +===== MdcLoggingInterceptor =====
 +  * [[java:slf4j:mdc|Slf4j MDC]]로 컨트롤러 정보를 저장해 두고, 그 컨트롤러의 호출 스택내에서 일어난 로그에 컨트롤러 정보를 함께 찍어줄 수 있다.
 +  * [[https://gist.github.com/kwon37xi/6e7aa448541d32faff105e5d53ab4a90|MdcLoggingInterceptor.java]]
 +
 +===== AbstractRequestLoggingFilter =====
 +  * [[https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/filter/AbstractRequestLoggingFilter.html|AbstractRequestLoggingFilter]] 를 사용하여 요청 파리미터 등의 정보를 로깅할 수 있다.
 +
 +===== Command Object =====
 +  * ''@RequestParam'' 를 나열하기 보다는 이를 한 묶음으로 한 클래스 객체를 만드는게 낫다.
 +  * 이 경우, **기본 생성자와 Setter 가 필수**이다.
 +
  
 ===== 기타 ===== ===== 기타 =====
줄 60: 줄 71:
   * [[springframework:mvc:webargumentresolver|Spring @MVC WebArgumentResolver]]   * [[springframework:mvc:webargumentresolver|Spring @MVC WebArgumentResolver]]
   * [[springframework:mvc:modelandviewresolver|Spring @MVC ModelAndViewResolver]]   * [[springframework:mvc:modelandviewresolver|Spring @MVC ModelAndViewResolver]]
 +  * [[http://www.baeldung.com/spring-mvc-content-negotiation-json-xml|Spring MVC Content Negotiation | Baeldung]]
 +  * [[http://www.baeldung.com/spring-new-requestmapping-shortcuts|Spring @RequestMapping New Shortcut Annotations | Baeldung]]
 +  * [[https://www.javacodegeeks.com/2018/06/domain-objects-spring-mvc.html|Dealing with Domain Objects in Spring MVC | Java Code Geeks - 2018]]
 +  * [[https://dzone.com/articles/spring-web-mvc-annotation-examples|Spring Web MVC Annotation Examples - DZone Java]]
springframework/mvc.txt · 마지막으로 수정됨: 2020/07/17 10:12 저자 kwon37xi