사용자 도구

사이트 도구


springframework:mvc

차이

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

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
springframework:mvc [2015/02/03 18:48]
kwon37xi [<mvc:default-servlet-handler/>]
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''​ 형태가 된다.
줄 53: 줄 42:
  
 ===== URL이 두번 반복되고 Controller 매핑을 못찾는 현상 ===== ===== URL이 두번 반복되고 Controller 매핑을 못찾는 현상 =====
-  * 요청 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/01/28 17:55 저자 kwon37xi