Spring MVC/02.Spring @MVC
-
이번 포스트에서는 locale과 알아보고 spring boot에서 locale관리 방법에 대해 알아보자. Locale Locale이란? Locale이란 사용자의 언어, 지역 설정을 정의하는 문자열로 Locale에 따라 날짜, 숫자등의 출력 포멧이 다양하게 표현된다. public void afterPropertiesSet() throws Exception { printByLocale(Locale.KOREA); printByLocale(Locale.US); } private void printByLocale(Locale locale) { double money = 123456.789; LocalDateTime now = LocalDateTime.now(); NumberFormat nf = NumberForm..
Locale 관리이번 포스트에서는 locale과 알아보고 spring boot에서 locale관리 방법에 대해 알아보자. Locale Locale이란? Locale이란 사용자의 언어, 지역 설정을 정의하는 문자열로 Locale에 따라 날짜, 숫자등의 출력 포멧이 다양하게 표현된다. public void afterPropertiesSet() throws Exception { printByLocale(Locale.KOREA); printByLocale(Locale.US); } private void printByLocale(Locale locale) { double money = 123456.789; LocalDateTime now = LocalDateTime.now(); NumberFormat nf = NumberForm..
2023.12.13 -
SpringBoot 3.x에 들어서면서 jakarta.XX 패키지가 전면에 들어오면서 여러가지 혼선이 발생했다. 라이센스가 변경되면서 한번은 거쳐야하는 홍역인듯 하다. ㅠㅠ 이번 포스트에서는 SpringBoot 3.x에서 jsp, jstl의 사용 설정에 대해서 살펴보자. SpringBoot 3.x에서 jsp, jstl 설정 tomcat 10.x 문제의 발단은 SpringBoot에 내장되는 톰켓의 버전이 9.x에서 10.x로 변경되면서 시작되었다. Tomcat initialized with port(s): 8080 (http) Starting service [Tomcat] Starting Servlet engine: [Apache Tomcat/10.1.8] 의존성의 변경 이에 따라 Servlet, JSP,..
[Spring@MVC] SpringBoot 3.x에서 jsp, jstl 설정SpringBoot 3.x에 들어서면서 jakarta.XX 패키지가 전면에 들어오면서 여러가지 혼선이 발생했다. 라이센스가 변경되면서 한번은 거쳐야하는 홍역인듯 하다. ㅠㅠ 이번 포스트에서는 SpringBoot 3.x에서 jsp, jstl의 사용 설정에 대해서 살펴보자. SpringBoot 3.x에서 jsp, jstl 설정 tomcat 10.x 문제의 발단은 SpringBoot에 내장되는 톰켓의 버전이 9.x에서 10.x로 변경되면서 시작되었다. Tomcat initialized with port(s): 8080 (http) Starting service [Tomcat] Starting Servlet engine: [Apache Tomcat/10.1.8] 의존성의 변경 이에 따라 Servlet, JSP,..
2023.06.22 -
처음 스프링을 공부하면서 Spring@MVC는 DispatcherServlet부터 관여하고 Filter는 Servlet 이전에 동작하기 때문에 Filter는 Spring과는 무관한 기술이라고 뇌리 속에 박고 있었는데..스프링에서는 DelegatingFilterProxy라는 녀석이 Filter에서도 스프링과의 협업이 가능하게 한다. 참고로 이 클래스는 Spring Security에서 Filter를 사용하기 위해서 등장했다. 이번 포스트에서는 Spring의 DelegatingFilterProxy에 대해서 살펴보자. DelegatingFilterProxy DelegatingFilterProxyDelegatingFilterProxy는 스프링의 빈을 filter로 사용하기 위한 proxy filter로 spri..
[Spring@MVC] 스프링과 Filter처음 스프링을 공부하면서 Spring@MVC는 DispatcherServlet부터 관여하고 Filter는 Servlet 이전에 동작하기 때문에 Filter는 Spring과는 무관한 기술이라고 뇌리 속에 박고 있었는데..스프링에서는 DelegatingFilterProxy라는 녀석이 Filter에서도 스프링과의 협업이 가능하게 한다. 참고로 이 클래스는 Spring Security에서 Filter를 사용하기 위해서 등장했다. 이번 포스트에서는 Spring의 DelegatingFilterProxy에 대해서 살펴보자. DelegatingFilterProxy DelegatingFilterProxyDelegatingFilterProxy는 스프링의 빈을 filter로 사용하기 위한 proxy filter로 spri..
2022.11.18 -
스프링을 사용하다 보면 자동으로 무언가를 해주는 3녀석 있다. filter, interceptor, AOP가 주인공인데 잘만 쓰면 우리의 코드를 확 줄여줘서 퇴근을 빠르게 해줄 수 있는 녀석들이다. 이번 포스트에서는 면접에서 이 녀석들의 차이점을 왕왕 물어보기도 하므로 정리해보자. 공통점 filter, interceptor, AOP의 사용 목적은 실제 호출하려는 대상 이전/이후에 호출되서 주요 목적 이외의 부가적인 동작을 처리해준다는 공통점이 있다. 차이점 Spring @MVC를 이용해서 웹 애플리케이션을 작성한다고 할 때 filter, interceptor, AOP의 동작 위치를 살펴보자. 일단 filter는 spring과 무관한 J2EE의 스펙이다. 사용자의 모든 요청은 filter를 거쳐서 Serv..
[spring]filter vs interceptor vs AOP스프링을 사용하다 보면 자동으로 무언가를 해주는 3녀석 있다. filter, interceptor, AOP가 주인공인데 잘만 쓰면 우리의 코드를 확 줄여줘서 퇴근을 빠르게 해줄 수 있는 녀석들이다. 이번 포스트에서는 면접에서 이 녀석들의 차이점을 왕왕 물어보기도 하므로 정리해보자. 공통점 filter, interceptor, AOP의 사용 목적은 실제 호출하려는 대상 이전/이후에 호출되서 주요 목적 이외의 부가적인 동작을 처리해준다는 공통점이 있다. 차이점 Spring @MVC를 이용해서 웹 애플리케이션을 작성한다고 할 때 filter, interceptor, AOP의 동작 위치를 살펴보자. 일단 filter는 spring과 무관한 J2EE의 스펙이다. 사용자의 모든 요청은 filter를 거쳐서 Serv..
2021.10.21 -
웹 애플리케이션을 작성하다 보면 파일을 업로드 하거나 다운로드 하는 일은 매우 빈번한 일이다. 이번 포스트에서는 SpringBoot를 이용해서 file을 upload 및 다운로드하는 방법에 대해 알아보자. 프로젝트 구성 pom.xml 이번 프로젝트는 다음의 환경에서 테스트 되었다. application.yml file upload와 관련된 설정은 하단의 spring.servlet.multipart 관련 부분이다. 내용은 주석을 참고한다. server: port: 9090 servlet: encoding: force-response: true spring: datasource: driver-class-name: org.h2.Driver password: '' url: jdbc:h2:~/spring-test..
[SpringBoot]file upload /download 처리웹 애플리케이션을 작성하다 보면 파일을 업로드 하거나 다운로드 하는 일은 매우 빈번한 일이다. 이번 포스트에서는 SpringBoot를 이용해서 file을 upload 및 다운로드하는 방법에 대해 알아보자. 프로젝트 구성 pom.xml 이번 프로젝트는 다음의 환경에서 테스트 되었다. application.yml file upload와 관련된 설정은 하단의 spring.servlet.multipart 관련 부분이다. 내용은 주석을 참고한다. server: port: 9090 servlet: encoding: force-response: true spring: datasource: driver-class-name: org.h2.Driver password: '' url: jdbc:h2:~/spring-test..
2021.05.06 -
post /mod의 문제점 페이지 흐름과 관련해서 기존의 post /mod의 문제점에 대해 살펴보자. post로 요청된 /mod가 성공적으로 동작되면 index.html로 연결된다. @PostMapping("/mod") public String doModEmp(Model model, @ModelAttribute("emp") @Valid Employee emp, BindingResult result) { if (result.hasErrors()) { List globalErrors = result.getGlobalErrors(); for (ObjectError ge : globalErrors) { if (ge.getCode().equals(MyPasswordEquals.class.getSimpleName(..
08. Redirection과 flash scopepost /mod의 문제점 페이지 흐름과 관련해서 기존의 post /mod의 문제점에 대해 살펴보자. post로 요청된 /mod가 성공적으로 동작되면 index.html로 연결된다. @PostMapping("/mod") public String doModEmp(Model model, @ModelAttribute("emp") @Valid Employee emp, BindingResult result) { if (result.hasErrors()) { List globalErrors = result.getGlobalErrors(); for (ObjectError ge : globalErrors) { if (ge.getCode().equals(MyPasswordEquals.class.getSimpleName(..
2020.07.09 -
파라미터와 validation validation은 화면에서 넘어온 데이터가 원하는 형식에 적합한가를 나타내는 것으로 앞서 살펴본 formatting과는 다르다. 포메팅이 원본 데이터를 가독성 좋은 문자열로 보이도록 처리하거나 그 문자를 다시 원본 데이터로 형 변환하기 위한 과정이라면 validation은 원하는 형태로 작성되었는가만 본다. 예를 들어 비밀번호의 복잡성이나 필수 입력 항목의 작성 여부, 값의 범위등을 확인하는 것이 validation이다. 클라이언트 단에서의 validation vs 서버 단에서의 validation 일반적으로 validation은 클라이언트 단에서 java script를 이용해서 처리하는 것으로 오해하기 쉽다. 하지만 일단 javascript를 통과한 패킷을 해커가 조작..
07. 파라미터와 validation파라미터와 validation validation은 화면에서 넘어온 데이터가 원하는 형식에 적합한가를 나타내는 것으로 앞서 살펴본 formatting과는 다르다. 포메팅이 원본 데이터를 가독성 좋은 문자열로 보이도록 처리하거나 그 문자를 다시 원본 데이터로 형 변환하기 위한 과정이라면 validation은 원하는 형태로 작성되었는가만 본다. 예를 들어 비밀번호의 복잡성이나 필수 입력 항목의 작성 여부, 값의 범위등을 확인하는 것이 validation이다. 클라이언트 단에서의 validation vs 서버 단에서의 validation 일반적으로 validation은 클라이언트 단에서 java script를 이용해서 처리하는 것으로 오해하기 쉽다. 하지만 일단 javascript를 통과한 패킷을 해커가 조작..
2020.07.08 -
파라미터의 formatting 화면에서 전달된 파라미터가 HTTP 를 통해 서버로 전송될 때는 언제나 문자열이다. 이제까지 똑똑한 @Controller는 적절한 자바 데이터 타입으로 형 변환 후 전달해줬다. @RequestMapping("/add") public String add(@RequestParam Double a, @RequestParam Integer b, Model model) { String message = String.format("%3.1f와 %d의 합은 %3.1f입니다.", a, b, a + b); model.addAttribute("message", message); return "index"; } 하지만 Controller는 인공지능이 아니니 조금만 복잡해지면 값에 대한 bind..
06. 파라미터의 formatting파라미터의 formatting 화면에서 전달된 파라미터가 HTTP 를 통해 서버로 전송될 때는 언제나 문자열이다. 이제까지 똑똑한 @Controller는 적절한 자바 데이터 타입으로 형 변환 후 전달해줬다. @RequestMapping("/add") public String add(@RequestParam Double a, @RequestParam Integer b, Model model) { String message = String.format("%3.1f와 %d의 합은 %3.1f입니다.", a, b, a + b); model.addAttribute("message", message); return "index"; } 하지만 Controller는 인공지능이 아니니 조금만 복잡해지면 값에 대한 bind..
2020.07.07