보통 협업을 진행하다 보면 API 스펙을 전달해주고 완벽하게 테스트를 진행했는데도 들려오는 답변이 있습니다."API에서.. cors 에러가 발생해요.." 처음 협업을 진행하면서 CORS에 대해서 잘 모르기도 했었고, 스프링에서는 단순한 설정으로 이를 해결할 수 있었기 때문에 제대로 알아보고려고 하지 않았었죠. 이번에는 너무나 간단한 설정탓에 제대로 이해하지 못 했었던 CORS에 대해서 정리하고자 합니다. CORS란? CORS(Cross-Origin Resource Sharing)란, 클라이언트가 다른 출처(origin)에서 리소스를 요청할 때 발생하는 오류로 브라우저상에서 허용되지 않은 다른 출처를 제한하는 데 사용되는 보안 관련 오류입니다. CORS는 보통 아래 두 가지 이유로 발생하게 됩니다.브라우저..
안녕하세요, 이번에 알아볼 주제는 Spring의 Filter입니다. Spring에서는 WEB 요청을 위한 다양한 필터가 존재하는데요,이번 시간에는 Spring에서 기본적으로 제공 해 주는 필터 종류와 필터들이 어떻게 호출 되는지, 그리고 필터의 올바른 사용에 대해서 알아보려 합니다.Spring의 필터란?Filter는 Java Servlet API에서 제공하는 기능으로, HTTP 요청/응답에 대한 사전 및 사후 처리를 수행할 수 있는 기능을 제공합니다. 이는 Java 웹 애플리케이션에서 가장 기본적인 필터링 메커니즘입니다. 필터는 다양하게 사용되는데요, 주로 인증 및 권한 검사, 로깅 및 모니터링, 요청/응답 데이터 변환, CORS 설정 등으로 다양하게 사용되고 있습니다. Spring Filter는 Spr..
스프링을 공부하다가 우연히 @RequestBody와 @ModelAttribute를 통해 값을 바인딩할 때 오류를 겪는 상황을 발견하고, 평소 Class 바인딩은 자연스럽게 @ModelAttribute로, Json과 같은 타입은 자연스럽게 @RequestBody로 작성했었던, 아무 생각 없이 스프링을 공부했던 나 자신을 돌아보며 오늘 글을 작성하려한다. 이를 이해하기 위해서는 우선 HTTP Message에 대한 이해가 필요하다. HTTP Message는 우리가 어떤 요청을 보내거나 요청에 대한 응답을 보낼 때, 서버와 클라이언트가 서로 데이터를 교환하는 방식이다. 데이터를 요청할 때 부르는 용어인 Rquest에는 서버가 특정 동작을 수행하도록 하는 메시지를 담고 있고, 총 4개의 섹션으로 구분하고 있는데 ..
이번 스프링 부트를 통한 MVC 설정은 JPA - MySql - Thymeleaf를 통해 만들었습니다. - [build.gradle]에 dependency 추가dependencies { //jpa,jdbc관련 dependency implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-jdbc' implementation("commons-dbcp:commons-dbcp:1.4") implementation("org.springframework.boot:spring-boot-starter-jdbc:2.0.1.RELEASE") i..
보통 스프링 부트에서는 타임리프를 사용하는데, 스프링을 먼저 써보고 타일즈를 먼저 배워서 그런지 아직까진 타일즈가 편하다고 느껴서 스프링 부트에서의 타일즈 설정을 찾아보고 내가 겪은 점을 써본다. - [build.gradle] tiles 관련 dependency 추가 - 우선 jsp를 파싱해주기 위해서 [tomcat-embed-jasper]를 추가해줘야한다. 이게 없으면, 경로를 아무리 잘 잡아도 해당 jsp를 찾을 수 없다는 mapping 에러가 뜨게 된다. - 그리고, jsp를 쓰면 view에서 처리해줄 jstl을 사용하기때문에 이와 관련된 dependency를 추가해준다 - 마지막으로 tiles관련 dependency들을 추가해준다.dependencies { ......... imp..
이번 글에서는 스프링에서 타일즈을 설정하는 방법을 알아보겠습니다. 1. [pom.xml] -> 타일즈 관련 dependency 추가 다른 디펜던시들~ ~~ ~~ org.apache.tiles tiles-core 2.2.2 org.apache.tiles tiles-extras 2.2.2 org.apache.tiles tiles-servlet 2.2.2 org.apache.tiles tiles-jsp 2.2.2 o..
이전글에는 스프링 mvc 게시판을 만들기 위한 기본적인 셋팅을 다루었고, 오늘 글에서는 Controller부터 DB작업까지어떻게 이루어지는지 만들어 보도록 하겠다. - 기본 패키지 아래에 controller, service, dao 패키지를 만들어 주었다. - 프로젝트 패키지의 구성은 아래처럼 나눌 수도 있고, 업무 단위로도 나눌 수 있다고 한다.(e.g 로그인, 쇼핑 등등) - 패키지를 만들었으면, service와 dao 패키지에 service와 dao Interface를 먼저 만들어주고, - 각 패키지에 각각의 interface를 구현한 class를 아래 그림과 같이 만들어 준다. - service 인터페이스 소스 - 처음 인터페이스를 만들면 텅텅 비어있기 때문에 아래와 같은 메서드를 작..
MVC 프로젝트 만들기 - [file] -> [New] -> [Spring Legacy Project] 클릭 - [project name]에는 생성하고자 하는 프로젝트의 이름을 입력 - [Templates] -> [Persistence] -> [Spring MVC Project] 클릭 - [Next] 클릭 - [Finish]를 클릭하면, MVC 프로젝트가 생성이 된다. - 아래 소스는 [Web.xml]인데, 톰켓이 실행이 되고 url 요청이 들어오면, 서블릿 매핑에 의해 그 요청을 처리하고, 첫 번째로는 [servlet-context.xml]을 로드하고, 두 번째로 [root-context.xml]을 로드하게 된다. contextConfigLocation /WEB-INF/spri..