본문 바로가기

Framework/Spring12

보안 프레임워크 : 스프링 시큐리티 스프링 시큐리티 보안 관련 기능을 제공하는 프레임워크인 스프링 시큐리티에 대해 톺아본다. 스프링 시큐리티란? 보안을 담당하는 스프링 하위 프레임워크 인증과 권한에 대한 부분을 Filter 흐름에 따라 처리하고 있다. * Filter는 Dispatcher Servlet으로 가기 전에 적용 되므로 가장 먼저 요청을 받는다. 145번 포스팅에서 암호화 기능을 사용하기 위해 잠시 살펴봤었다 인증과 권한 스프링 시큐리티에서 보안을 구성하는 두가지 핵심 영역이다. 인증(Authentication) - 보호된 리소스에 접근하는 유저에게 접근 권한이 있는지 확인하는 일련의 과정 == 로그인 * 접근주체(Principal) : 보호된 리소스에 접근하는 대상(유저) * 비밀번호(Credential) : 접근주체의 비밀번호.. 2023. 5. 3.
[Boot] 로깅 설정하기 (SLF4J, log4j, logback) 로깅 Logging 로깅 라이브러리를 사용하는 이유와 사용방법에 대해서 알아보자. 로깅이란? 정보를 제공하는 일련의 기록인 로그(log)를 생성하도록 시스템을 작성하는 활동. 로그를 출력하는 방법 - System.out.println() 이용 - 로깅 라이브러리 이용 System.out.pringln()의 한계 속도가 느리다. 날짜/시간/타입(error, info, debug,..) 등과 같은 정보가 기본적으로 없다 콘솔창에 출력만 하기 때문에 데이터를 쌓고 남기기 힘들다. 로깅 라이브러리 종류 java.util.logging - JDK에 포함된 기본 로깅 API(별도 라이브러리 추가X) - 기능이 부족해 많이 사용되지는 않는다. Log4j - 아파치 제단에서 제공하며 가장 많이 사용되는 로깅 라이브러리.. 2023. 4. 14.
[Boot] 스프링부트 기본개념 및 프로젝트 생성 Spring Boot 스프링부트에 대해 알아보고 STS 및 인텔리제이를 사용해서 프로젝트를 생성해본다. 참고자료 : 점프 투 스프링부트 포스팅순서 스프링부트 개요 프로젝트 생성하기 - IntelliJ ver - 이클립스ver - 테스트하기 스프링부트 도구 설치하기 - Spring Boot Devtools - Lombok 프로젝트 구조 - 디렉토리 주요구조 - 주요파일 스프링부트 개요 스프링부트에 대해 간략하게 알아본다. 스프링부트란? 기존 스프링(Spring) 프레임워크에 톰캣 서버를 내장하고 여러 편의 기능들을 추가하여 꾸준한 인기를 누리고 있는 프레임워크 스프링레거시와의 차이점 보안적으로 안전하다 - SQL 인젝션(sql문을 조작하여 공격), XSS(자바스크립트를 삽입해 공격), CSRF(위조된 요청.. 2023. 4. 5.
[08] 스케줄러(+cron표현) 스케줄러 특정날짜, 특정시간, 혹은 일정주기마다 특정한 작업(sql)을 실행시키고자 할 경우 스프링에서 제공하는 scheduler를 활용할 수 있다. 사용준비하기 스케줄러를 사용하려면 클래스 및 메소드를 만든 후 어노테이션을 붙이면 된다. 단, 스케줄러를 사용하겠다는 등록이 선행되어야한다. 등록위치 : servlet-context.xml 스키마 등록하기 NameSpaces탭에서 task체크 스케줄 등록하기 1. 테스크 스케줄러라는 객체를 빈을 등록시켜주는 과정 - id : 사용할 이름을 붙인다 - pool size : 쓰레드(일을 처리하는 단위), 기본값은 1이다 10정도로 설정해준다. 2. @Scheduled라는 어노테이션을 스캔해서 등록하겠다는 의미 - scheduler : 으로 등록해둔 bean의 .. 2023. 3. 10.
[07] websocket을 이용한 실시간 채팅 WebSocket 통신방식 중 하나인 WebSocket을 이용해서 실시간으로 통신이 가능하다. 다이나믹 웹 프로젝트라면 웹소켓을 활용할 수 있으며, 스프링에서도 라이브러리를 통해 웹소켓을 사용할 수 있다. HTTP통신 : 비연결 통신 기존에 사용했던 통신은 url을 통해서 요청하는 HTTP통신이다. (ajax도 HTTP를 이용한다) cf. HTTP통신이란? 데이터를 주고받는 프로토콜(규칙) 비연결 통신 클라이언트가 요청을 서버에 보내고 나서 서버가 응답하면 연결이 끊기는 특성이 있음 >> 지속적으로 데이터를 주고받을 수 없다. >> setInterval() 등의 함수로 주기적으로 연결시키는 방법으로 우회해야한다.(polling 방식) websocket통신 : 영구적 양방향 통신 영구적이다 : HTTP를 .. 2023. 3. 5.
[06] 비동기식 통신(AJAX) AJAX in 스프링 스프링에서 비동기식 통신을 할때도 AJAX를 활용할 수 있다. JSP단은 키값의 중요도가 높아진다는 것 외에는 달라지는것은 없다. 단, Contoller단에서는 활용할 수 있는 코드가 추가된다. AJAX복습 기본 AJAX 복습하러가기 [KeyPoint] - 순수JS방식보다 jQuery방식이 훨씬 쉽다 >> jQuery방식으로 코드를 구성해본다. - input에서 name으로 키값을 주는것이 아닌 ajax구문에서 키값을 준다. >> input에는 ajax에서 선택할 수 있도록 id 속성을 쓴다. - controller단에서 응답할 데이터에 한글이 껴있는 경우 >> 메소드로 문자셋을 utf-8로 설정해준다. - 다수의 데이터를 보내고자 vo객체로 응답하면 toString메소드가 실현되어.. 2023. 2. 27.
[05] 인터셉터 인터셉터 스프링에서 제공하는 인터셉터에 대해 알아보자 인터셉터란? 필요성 사용자는 url을 조작함으로써 접근권한이 없는 페이지에 진입 할 수 있다. 인터셉터를 사용한다면 이와 같은 상황을 방지할 수 있다. 필터와의 차이점 필터가 서블릿 구동 전에 수행된다면 인터셉터는 서블릿 구동 후 컨트롤러가 실행되기 전에 수행된다 반대로 컨트롤러 실행 후 서블릿으로 돌아오기 전에 낚아채서 수행시킬수도 있다. 활용 예 1. 해당 요청을 할 수 있는 회원이 맞는지 로그인여부 확인 2. 해당 요청을 할 수 있는 권의 회원이 맞는지 권한확인 HandlerInterceptor 살펴보기 Spring에서 제공하는 인터페이스로 이를 구현함으로써 인터셉터 기능을 사용한다. preHandle메소드 전처리, DispatcherServle.. 2023. 2. 24.
[04] 파일등록 : commons 라이브러리 파일등록 기존에 사용하던 Cos가 아닌 다른 라이브러리를 사용해보고, spring에서 파일을 등록하는 절차는 어떻게 되는지 알아보자 새로운 라이브러리 : commons-fileupload Cos.jar의 단점 1. 파일의 크기에 제한이 있다 2. multiple 기능 사용 불가하다 >> 이를 보완할 라이브러리를 적용해보자 commons-fileupload 준비하기 1. 메이븐에서 하기 두가지 라이브러리를 검색한다 1-1. Apache Commons FileUpload 1-2. Apache Commons IO 2. pom.xml에 라이브러리를 추가한다. 3. root-context.xml에서 bean으로 등록한다. (최대용량도 이때 지정한다) commons-fileupload commons-fileuplo.. 2023. 2. 22.
[03] 발전된 방식(암호화, 롬복, ..) 발전된 방식 기존의 코드에 좀더 발전된 방식을 차용해보자. 포스팅순서 유용한 팁 1-1. 스프링의 인코딩필터 1-2. 좀 더 세련된 페이징처리 1-3. 쿼리스트링의 대안 코드 암호화 롬복 유용한 팁 코드를 구성하는데 도움이 되는 짧은 팁들을 모아보았다. 스프링의 인코딩 필터 한글로 입력된 파라미터를 받으려면 인코딩 작업은 필수이다. 이때 스프링에서 제공하는 인코딩 필터(CharacterEncodingFilter)를 등록하여 활용해보자 등록과정(web.xml) 1) 태그로 CharacterEncodingFilter를 등록한다. 2) 태그를 통해 어떤 문자셋으로 인코딩 할것인지 입력한다. 3) 태그를 통해 어떤 url요청시 거쳐갈것인지 입력한다. url-patten을 '/*'로 입력하면 모든 url요청시 거.. 2023. 2. 22.
[02] Controller 톺아보기 (url매핑, 파라미터받기, 결과리턴하기) Spring의 MVC Pattern 스프링의 MVC의 흐름은 기존에 해오던 방식과 거의 동일하다. 그러나 Controller단까지 오는 코드에 큰 차이가 있다. 포스팅순서 DispatcherServlet : web.xml에 기등록되어있는 서블릿 클래스로 스프링에서는 해당 서블릿이 모든 서블릿의 역할을 대신하게 된다. Controller 매핑값 설정 : 스프링에서 직접 서블릿을 만들지 않는다면 url의 매핑값과 컨트롤러를 어떻게 연결할수 있을까? 전달값 받아내기 : Controller에서 요청과 함께 전달된 값을 받는 여러가지 방법을 알아본다. Service 객체 만들기 : Controller에서는 Service의 메소드를 호출하며 데이터를 넘긴다. 이때 Service객체를 singleton pattern.. 2023. 2. 22.
[01] 프로젝트 환경구축 환경구축 이전 장에서 STS에서 작업환경을 만들어놓는 일까지 마쳤다. 이번장에서는 프로젝트를 만들고 환경을 구축하는 일을 해본다. 진행순서 STS 스프링 프로젝트 만들기 메이븐을 통한 라이브러리 수정 및 추가 config와 mapper파일 만들기 JDBC관련 Bean 등록하기 프로젝트 만들기 스프링 프레임워크를 하기 위한 프로젝트를 만들어보자 프로젝트 생성하기 오른클릭-[New]-[Spring Lagacy Project] Project name을 입력해주고 Template에서 Spring MVC Project선택 - [Next] 팝업뜨는것은 yes 선택 top-level package를 입력하는 텍스트 상자가 나오는데, 세번째 레벨까지 작성해야 한다. 관례적으로는 두번째 레벨까지는 도메인의 역순이고 세번.. 2023. 2. 20.
[00] 스프링프레임워크란? / Maven, STS 설치 스프링 프레임워크스프링 프레임워크에 대해 알아보고 환경구축을 해보자Spring Framework란?자바플랫폼을 위한 오픈소스 애플리케이션 프레임워크로 간단하게 스프링(Spring)이라고도 불린다동적인 웹 사이트를 개발하기 위한 여러 가지 서비스를 제공하고 있다대한민국 공공기관의 웹 서비스 개발시 사용을 권장하고 있는 전자정부 표준프레임워크의 기반 기술로서 쓰이고 있다공식문서https://docs.spring.io/spring-framework/reference/https://spring.io/ Spring Framework 특징IOC (Inversion of Control) 제어반전- 컨트롤의 제어권이 개발자가 아니라 프레임워크에 있다는 뜻으로 객체의 생성부터 모든 생명주기의 관리까지 프레임워크가 주도하.. 2023. 2. 17.