반응형

Back-End/Spring framework 30

Spring Path variable 사용 시 확장자

123456@RequestMapping("/temp/{filename}")public ResponseEntity tempView(@PathVariable String filename) throws IOException { logger.info("Return Temp image data"); logger.info(filename); return null;} Colored by Color Scriptercs위와같이 매핑한 후 localhost:8080/content/temp/testFile.jpg 이런 경로로 주소를 날렸더니 에러가 발생했다. 문제는 로그에 찍힌 filename .jpg는 사라진채 testFile만 들어와지는 것이었다. 1@RequestMapping("/temp/{filename:.+}")c..

Spring MVC image 반환

1. HTML1234 cs 위 이미지 태그는 IP주소:PORT번호/CONTEXT/getImage 의 주소로 요청을 날린다. 2. Controller1234567@RequestMapping("/getImage")@ResponseBody public ResponseEntity profileImage() throws IOException { HttpHeaders header = new HttpHeaders(); header.setContentType(MediaType.IMAGE_JPEG); return new ResponseEntity(IOUtils.toByteArray(new FileInputStream(new File("이미지 경로"))), header, HttpStatus.CREATED); }Colore..

커스텀 HandlerMethodArgumentResolver 사용시 MultipartHttpServletRequest 얻는 방법

12345@Override public Object resolveArgument(MethodParameter arg0,ModelAndViewContainer arg1,NativeWebRequest arg2,WebDataBinderFactory arg3) throws Exception{ MultipartHttpServletRequest request = (MultipartHttpServletRequest)arg2.getNativeRequest(); return request; }Colored by Color Scriptercs NativeWebRequest의 getNativeRequest() 메소드는 HttpServletRequest를 반환한다.MultipartHttpServletRequest는 HttpS..

Spring MVC MultipartHttpServletRequest 사용시 한글 문제

Ajax Multipart요청을 받는 컨트롤러에서 MultipartHttpServletRequest 안에 들어있는 parameter 들이 한글이 깨지는 문제가 발생했다. 때문에 12345678Enumeration paramNames = request.getParameterNames(); while(paramNames.hasMoreElements()) { String key = paramNames.nextElement(); String originalValue = request.getParameter(key); String encodedValue = new String(originalValue.getBytes("ISO-8859-1"), "UTF-8");}Colored by Color Scriptercs 위..

Spring MVC multipart-formdata 요청

1. MultipartResolver 사용을 위한 dependency 추가1234567891011 commons-fileupload commons-fileupload 1.3.1 commons-io commons-io 2.4Colored by Color Scriptercs 2. MultipartResolver 빈 추가123 Colored by Color Scriptercs 3. 컨트롤러1234@RequestMapping(value="/register", method=RequestMethod.POST)public void register(MultipartHttpServletRequest request) { logger.debug("요청 확인 {}", request);}Colored by Color Scrip..

Spring JSON 응답 보내기

Spring 버전 : 4.3.412345678910 com.fasterxml.jackson.core jackson-core 2.7.0 com.fasterxml.jackson.core jackson-databind 2.7.0Colored by Color Scriptercs 위와 같이 dependency 추가 후 스프링 설정파일에 12345 Colored by Color Scriptercs 위 내용 추가한 후 12345678910111213@Controller@RequestMapping("ajax")public class AjaxCallController { @RequestMapping(value="duplicate_check", method=RequestMethod.POST) @ResponseBody pu..

Spring 4.3 이상 환경에서 Mybatis AbstractMethodError 오류

스프링 4.3 환경에서 Mybatis 사용 중 아래와 같은 에러가 발생했다. AbstractMethodError: org.mybatis.spring.transaction.SpringManagedTransaction.getTimeout()Ljava/lang/Integer; 알아보니 버전과 관련된 문제인 듯 했다. 1234567891011121314151617 org.mybatis mybatis 3.4.0 org.mybatis mybatis-spring 1.3.0 org.springframework spring-jdbc ${org.springframework-version}Colored by Color Scriptercs 위와 같이 버전을 명시하니 에러가 발생하지 않았다.

Spring MVC Resource Mapping 방법

모든 경로, 즉 '/**' 대상으로 Interceptor를 걸어줄 경우, ~~.js, ~~.css 등의 정적자원의 요청까지도 인터셉터가 가로챈다. 이유는 Resource Mapping은 컨트롤러의 @RequestMapping과 동급으로 취급되고, Interceptor는 요청이 컨트롤러로 들어가기 전에 먼저 실행되기 때문에 Resource Mapping으로 정적자원에 대한 요청을 매핑해놔도 걸러지지 않고 인터셉터가 가로챌 수 있는 것이다. 여러가지 해결방법이 있겠지만 Interceptor 에서 가로채지 않을 URL을 지정하는 것으로 해결했다. 12345678 cs

Spring AOP 관련

스프링 AOP는 JDK 다이나믹 프록시를 이용한 방법과 CGLIB을 이용한 프록시를 이용하는 방법 2가지가 있다. 결국 AOP는 프록시를 통해 구현할 수 있다. 다이나믹 프록시를 이용한 방법은 치명적인 제약사항이 있다. 첫 번째는 프록시객체를 만들고자하는 대상이 인터페이스 또는 인터페이스를 implements 하고 있는 클래스여야 한다는 것이다. 일반적으로 Spring이 제공하는 AOP기술을 사용할 때 AOP를 적용하려고 하는 클래스에 어떤 인터페이스를 꼭 implements하지 않아도 됐다. 즉 기본적으로 사용되는 방법은 CGLIB을 이용한 프록시를 활용하는 방법이다. (다이나믹 프록시를 이용하려면 별도의 설정을 함) 두 번째로, 특정 메소드에 국한되지 않고 인터페이스의 모든 메소드에 대해 적용된다는 ..