목록Java/Spring (24)
오늘은 몰랐으면 내일은 알면 된다
build.gradle 에서 확인해보면, 다음과 같이 라이브러리들이 등록되어있다. 그런데 실제로 라이브러리들을 살펴보면 3가지가 아니라 뭔가 많이 들어있는 것을 확인할 수 있다. Gradle은 의존성이 있는 라이브러리를 함께 다운로드하기 때문이다. alt를 두번 누르면 좌우로 메뉴들이 뜨는데, 거기서 gradle을 클릭해서 라이브러리를 더 살펴보도록 하자. gradle 은 창의 가장 오른쪽에 있다. 그러면 이렇게 의존관계를 확인할 수 있다. (*) 표시는 위에서 이미 불러온 라이브러리이며 중복을 제거했다는 표시라고 한다. 쭉 살펴보다보면 tomcat 이 내장되어있는 것도 확인할 수 있다. 과거에는 WAS를 직접 설정을 해줬어야 했지만, 이제는 라이브러리를 가져오기만 하면 간단히 쓸 수 있다고 한다. lo..
먼저 Java 11과 IntelliJ를 준비한다. (생략) 아래의 사이트로 이동해서 프로젝트를 생성한다. https://start.spring.io/ 레거시 프로젝트에서는 Maven을 썼는데, Gradle로 변경되었다는 모양이다. Ant->Maven->Gradle 순으로 시대가 변해온 것 같다. ant 와 maven은 써봤는데 gradle은 좀 생소하니 이번참에 알아두는 게 좋겠다. 각각의 tool에 관해서는 차후에 자세히 포스팅해보도록 하자. 심플하게 정리만 해놓자면 gradle은 버전을 설정하고, 라이브러리를 관리해주는 프로그램이다. 이제 본격적으로 프로젝트를 만들어 보자. 홈페이지상에서 아래와 같이 세팅한다. dependency는 다음의 두가지를 추가한다. Spring Web Thymeleaf 그리..
여러 사이트를 사용하다가 다음과 같은 기능을 보았을 것이다. 최근에 다국어 지원 관련하여 수정할 일이 생겨서, 알게된 것을 정리할 겸 구현하는 방법 자체도 포스팅 해놓고자 한다. 마땅한 예시를 들 것이 없어서.. 인터파크 홈페이지를 캡처했다. 한국 인터파크 홈페이지에서 language를 English로 변경하면 다음과 같은 글로벌 사이트로 들어간다. 여기를 예시로 들어보자. 여기에서 Language 설정을 바꾸면, 다음과 같이 언어설정이 바뀌는 것을 볼 수 있다. 이런 몇가지의 변수를 넘겨서 Language 처리를 해주는 모양이다. 이러한 내용을 직접 구현해보도록 하자. Spring은 MessageSource 인터페이스를 통해 국제화를 지원한다. 메시지 설정파일(properties)를 작성하여 국가별 로..
간단한 로그인 정도는 구현해봤지만 활용할 수 있는 수준은 아닌 것 같아서 좀 더 살펴보고자 한다. 그림은 출처 유튜브를 참고해서 만들었다. [ Spring Security 개요 ] 보안에는 여러 형태가 있는데, 그 가운데 Spring Security는 애플리케이션 레벨의 보안 프레임워크이다. 간단히 개념적으로만 생각해보면 사용자의 모든 요청이 애플리케이션에 전달되기 전에 중간에 가로채서, 이 사람이 이 작업을 수행해도 되는 사람인지에 대해서 확인하고, 권한이 없는 사용자에 대해서는 접근을 제한한다고 생각하면 된다. 그래서 주로 도식화를 할 때 경찰의 이미지로 표현된다고 한다. [ Spring Security를 사용하는 이유 ] 1. 애플리케이션 보안 프레임워크 - 유연하고, 커스터마이징이 용이하다. : ..
HttpServletRequest 의 getRemoteAddr() 메서드를 통해서 IP 주소를 가져올 수 있다. 하지만 단순히 위와같은 방법으로 가져오게 되면 방화벽, 클라우드를 거쳐오는 경우에는 원하는 값이 나오지 않을 수 있다. Web Server에서 프록시나 로드밸런서를 통해 WAS에 요청을 보내기 때문에 프록시 또는 로드밸런서의 IP를 가져오게 된다고 한다. 그래서 헤더별 분기처리를 해주어야 한다. package com.basic.basic.util; import javax.servlet.http.HttpServletRequest; import org.springframework.web.context.request.RequestContextHolder; import org.springframewo..
페이징을 정말 수도없이 많이 했는데 사실은 원래 만들어져있던 pager를 활용해서 수정하는 정도였기 때문에 실질적으로 내가 했다고는 볼 수 없었다. 처음 교육기관에서 페이징에 대한 걸 알았을 때도 선생님이 이해하려고 하지말고 외워~ 라고만 하셔서 혼자 끙끙대면서 코드 해석을 했던 기억이 난다... 문득 이거 처음부터 한다고하면 또 헷갈리는거아냐? 싶어서 종류별로 정리하려고 한다. 목표는 이것만 봐도 페이징 처리를 할 수 있게 되는것이다.(또 까먹을 나를 위해) 첫번째는 PageMaker 클래스를 통해서 페이징 처리를 하는 방식이다. 뷰에서는 jstl을 사용한다. [ Paging 규칙 ] 1. 필요한 값들 : 한페이지에 몇개의 글을 보여줄 것인지, 현재 페이지 번호, 총 게시글 개수 1-1. 총 페이지 개..
아래의 블로그를 참고해서 조금씩 변형했다. offbyone.tistory.com/93 스프링프레임웍 - Spring Security(3) : 사용자/권한 정보 DB사용하기 앞서 "스프링프레임웍 - Spring Security(2) : 커스텀 로그인 화면 및 권한에 따른 접근 제어"에서 로그인 화면을 원하는 형태로 만드는 방법에 대해서 알아 보았습니다. 지금까지의 기본설정과 화면 offbyone.tistory.com 여기서는 MySQL(MariaDB 10.5) 과 MyBatis를 사용할 것이다. 1. 먼저 테이블을 만들어준다.(위의 예제를 참고하였다) Spring security DB 지원 기본구조를 조금 바꾼 것이라고 한다. CREATE TABLE `USERS` ( `USERNAME` VARCHAR(20..
여기에서 이어진다. pieth.tistory.com/48 [Spring] MySQL, Mybatis 연동하기 문득 쌩 프로젝트가 주어져서 처음부터 해보라는 요청을 받으면 어떻게 해야할지가 바로 떠오르지 않았다. 얼추 윤곽은 잡고서 작업을 하는 줄 알았는데 그런 것도 아니었나보다. 그래서 아예 pieth.tistory.com MyBatis까지는 연결했는데, 그 이후에 DAO(Data Access Object)는 어떻게 구현을 해야할까? 아래의 블로그를 참고하였다. kookyungmin.github.io/server/2018/08/13/spring_07/ [Spring] 7.DAO 구현 kookyungmin.github.io 1. root-context.xml의 sqlSessionFactory에 다음의 속성..
예제 및 내용은 아래의 블로그를 주로 참고하였다. offbyone.tistory.com/91 스프링프레임웍 - Spring Security(2) : 커스텀 로그인 화면 및 권한에 따른 접근 제어 앞의 글 "스프링프레임웍 - Spring Security(1) : 기본 설정"에 이어 이번에는 커스텀 로그인 화면을 만드는 방법을 알아보겠습니다. 전체소스는 하단에 추가되어 있습니다. 1. 스프링 시큐리티 태그라 offbyone.tistory.com 1. 스프링 시큐리티 태그 라이브러리 사용을 위한 의존성을 추가한다. org.springframework.security spring-security-taglibs ${spring.security.version} jar compile 2. 커스텀 로그인 화면을 위한 ..
이미 구현된 spring security 관련 소스들을 유지보수하는 것은 해봤지만 직접 구현해본 것이 아니기 때문에 이해가 제대로 된 것 같지는 않았다. 그래서 처음부터 하나씩 구현해보면서 동작과정을 이해해보려고 한다. 간단한 로그인 기능을 구현한 다음 개념들을 잡아가는 식으로 포스팅을 하도록 해보자. 예제는 아래의 블로그를 참고하였다. offbyone.tistory.com/88 스프링프레임웍 - Spring Security(1) : 기본 설정 스프링 시큐리티는 지금까지 직접 구현해왔던 아이디/비밀번호를 입력하고 로그인하여 사용자를 인증(Authentication)하고, 로그인후 프로그램의 각각의 기능에 대한 권한을 체크(Authorization)하는 offbyone.tistory.com 1. 먼저 po..