[Spring] 서블릿 필터와 스프링 인터셉터(Servlet Filter, Spring Interceptor)
·
TIL/Spring
서블릿 필터(Servlet Filter)와 스프링 인터셉터(Spring Interceptor)는 왜 사용하는걸까?만약 우리가 개발을 할 때 로그인 여부를 체크하는 로직을 모든 컨트롤러 쪽에 작성을 한다면 작업이 많이 번거로울 것이다.이렇게 모든 컨트롤러 로직에서 공통으로 관심이 있는 것을 공통 관심사(cross-cutting concern)라고 한다. 이러한 공통 관심사는 스프링의 AOP로도 해결할 수 있지만,웹과 관련된 공통 관심사는 서블릿 필터 또는 스프링 인터셉터를 사용하는 것이 좋다. 웹과 관련된 공통 관심사를 처리할 때는 HTTP Header나 URL의 정보들이 필요한데, 서블릿 필터와 스프링 인터셉터는 HttpServletRequest를 제공하고 있어 편리하게 공통 관심사를 처리할 수 있다. ..
[Spring] 빈 스코프 란?
·
TIL/Spring
1. 빈 스코프 란?스프링 빈은 스프링 컨테이너의 시작과 함께 생성되어서 스프링 컨테이너가 종료될 때 까지 유지된다.이것은 스프링 빈이 기본적으로 '싱글톤 스코프'로 생성되기 때문이다.스코프(scope)는 의미 그대로 빈이 존재할 수 있는 범위를 뜻한다. 스프링은 다음과 같은 다양한 스코프를 지원한다.싱글톤기본 스코프로, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프이다.프로토타입스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여하고 더는 관리하지 않는 매우 짧은 범위의 스코프이다.웹 관련 스코프request: 웹 요청이 들어오고 나갈 때 까지 유지되는 스코프session: 웹 세션이 생성되고 종료될 때 까지 유지되는 스코프application: 웹의 서블릿 컨텍스트와..
[Spring] 찍어먹어보자! Spring Security와 인증/인가란 무엇인가?(feat. 로그인, 로그아웃, 회원가입 간단 구현)
·
TIL/Spring
찍어먹어보자! 인증과 인가란 무엇인가?인증(authentication)은 사용자의 신원을 입증하는 과정이다. 예를 들어 사용자가 사이트에 로그인을 할 때 누구인지 확인하는 과정을 인증이라고 한다. 인가(authorization)는 사이트의 특정 부분에 접근할 수 있는지 권한을 확인하는 작업이다. 즉, 일반 사용자가 관리자 페이지에 접속할 수 없고 관리자는 관리자 페이지에 접속할 수 있는 것처럼 권한을 확인하는 것을 인가라고 한다. 찍어먹어보자! Spring Security란 무엇인가?스프링 시큐리티는 스프링 기반 애플리케이션의 보안을 담당하는 스프링 하위 프레임워크이다.보안 관련 옵션을 많이 제공하며, 애너테이션으로 설정도 쉽다.CSRF 공격(사용자의 권한을 가지고 특정 동작을 수행하도록 유도하는 공격)..
[TIL] Spring Framework - HandlerInterceptorAdapter
·
TIL/Spring
인터셉터(Interceptor)란? Controller에 들어오는 요청(HttpRequest)과 Controller가 응답(HttpResponse)을 가로채는 역할은 한다. Filter와 역할이 유사한데 Filter와 Interceptor는 분명한 차이점이 있다. 1) 호출 시점 > Filter는 DispatcherServlet이 실행되기 전 , Interceptor는 DispatcherServlet이 실행된 후 2) 설정 위치 > Filter는 web.xml , Interceptor는 spring-servlet.xml 3) 구현 방식 > Filter는 web.xml에서 설정을 하면 구현 가능, Interceptor는 설정은 물론 메서드 구현도 필요 Interceptor를 구현하는 방법은 2가지가 있다...
[TIL] Spring 5.0.7 버전 다루기(5.x 버전)
·
TIL/Spring
이전에는 스프링 3.X와 4.X 버전을 사용하였다. 오늘부터는 5.X 버전에 대해서 살짝 다뤄보았다. 사용하는 버전은 아래와 같다. JDK 1.8 STS3 Tomcat 8.5.x Oracle 11g XE 참고) 스프링 5.X 최소 JDK 1.8 스프링 4.X 최소 JDK.1.6 스프링 3.X 최소 JDK 1.5 (SP코딩단의 코드로 배우는 스프링 웹 프로젝트(개정판) 교재를 참고하였습니다) 1. 스프링 프로젝트 생성(p30) 1) File - New - Legacy Progject로 프로젝트 생성하기 > 프로젝트명 : ex00 > top-level : org.zerock.controller *** 프로젝트 생성 시 에러 발생 : 이클립스 종료 후 현재 사용자 폴더 내에 있는 .m2 밑에 repositor..
[SIST] Spring_days10_MyBatis
·
TIL/Spring
1. MyBatis란? - DB 연동을 대신해주는 프레임워크이며, XML과 애노테이션을 사용하는 2가지 방법이 있다.(즉, DAO의 역할을 대신해줌) MyBatis의 공식 페이지에서는 아래와 같이 설명 (https://mybatis.org/mybatis-3/ko/index.html) ㄱ. 마이바티스는 개발자가 지정한 SQL, 저장프로시저 그리고 몇가지 고급 매핑을 지원하는 퍼시스턴스 프레임워크이다. ㄴ. 마이바티스는 JDBC로 처리하는 상당부분의 코드와 파라미터 설정및 결과 매핑을 대신해준다. ㄷ. 마이바티스는 데이터베이스 레코드에 원시타입과 Map 인터페이스 그리고 자바 POJO 를 설정해서 매핑하기 위해 XML과 애노테이션을 사용할 수 있다. 2. Mapper XML 파일 1) 마이바티스의 가장 큰 ..
[SIST] Spring_days09_Spring Security(스프링 시큐리티)
·
TIL/Spring
1. 웹 개발자가 필요한 웹 보안 + 스프링 Security - 보안 관련 영역 중에서 웹어플리케이션 개발자의 코딩과 직결된 세가지 1) 인증(Authentication) 처리 - 어떤 회원이던 상관없이 로그인을 해서 현재 사용자가 확인이 되는 것 ex) 관리자로 로그인한 것은 인증 2) 인가(Authorization) 처리 - 인증받은 사용자가 권한이 있는지 체크하는 것 ex) 관리자가 로그인해서 관리자 권한이 있는지 확인하는 것 3) UI 처리 ex) 인증을 받고 권한이 있다면 보이도록하거나 활성화 그렇지 않다면 보이지않거나 비활성화 처리하는 것 [수정][삭제] 버튼 - 스프링에서 제공하는 시큐리티를 사용하게 되면... > 기본 제공 + 개발자 용도 별로 확장 가능(라이브러리 사용해서) > 웹보안(인..
[SIST] Spring_days09_SpringTiles 프로젝트를 옮겨서 STS툴로 STSMVC03 만들기 + root-context와 servlet-context로 사용
·
TIL/Spring
어제 했던 작업을 복습차원으로 SpringTiles 프로젝트를 STS 툴을 이용하여 STSMVC03 프로젝트 생성하였다. 어제와 다른 점은 아래부터 설명하도록 하겠다. 먼저, dispatcher-service.xml에 있는 설정을 root-context.xml에 잘라서 붙여넣고 dispatcher-servlet.xml에 있는 설정을 잘라서 servlet-context.xml 잘라서 붙여 넣었다. 변경된 root-context.xml과 servlet-context.xml의 최종본은 아래와 같다. [root-context.xml] [servlet-context.xml] 위의 최종본을 만들기 위해서 기존의 xml 파일에 있는 것을 잘라내서 붙여넣기를 하고보니 빨갛게 에러가 보인다. beans 태그에 tx와 a..
[TIL] Maven(메이븐)과 Spring Tool Suite(STS)
·
TIL/Spring
오늘 수업시간에 메이븐 빌드 도구와 STS에 대해서 배웠는데 둘에 대한 정확한 개념이 잡히지 않아서 따로 검색을 하고 찾아 추가 공부를 해보았다. 1. Apache Maven 1) Maven(메이븐) - 정의 : 프로젝트 구조와 내용을 기술하는 선언적 접근 방식의 오픈 소스 빌드 도구(툴) - 프로젝트 종속 라이브러리들과 그 라이브러리에 의존하는 dependency 자원까지 관리를 해준다. - 프로젝트의 전과정을 통합 관리 해준다. - 프로젝트 전반의 리소스 관리와 설정 파일, 이와 관련된 표준디렉토리 구조를 처음부터 일관된 형태로 구성하여 관리할 수 있다. 2) Maven(메이븐) 설치 메이븐 설치하는 방법은 수업 TIL에도 적혀있지만 간단하게 글로만 풀자면 아래와 같다. - maven.apache.o..