저번장에는 Security의 기본세팅에 대해 정리해보았는데 이번에는 Security에서 제공해주는 Remember-me이 무엇인지 알아보자. Spring으로 웹개발을 하면서 자동로그인 기능을 구현할 때가 있다. 그때 Security에서 제공해주는 Remember-me가 있다. 이 기능을 활용하면 쉽고 간단하게 자동로그인을 구현할 수 있는데 이번장에서 예제코드와 구현시 주의사항에 대해 알아보자. 로그인 폼에 자동로그인 checkbox 생성 다음과 같이 로그인 폼에 name='remember-me' 라는 checkbox를 추가하였다. 자동로그인 기능을 활용하기위해 checkbox에는 정해진 value값을 세팅해줘야한다. 위와 같은 파라미터값이 존재하지않으면 자동로그인을 체크한 뒤 로그인을 해도 유지가 되지않..
이번장에는 Spring Security에 대해 정리해보고자 한다. Spring Security란 스프링에서 제공하는 인증, 권한, 보안 등을 제공해주는 강력한 프레임워크이다. 기존에 필자가 Spring으로 인증 및 권한체크를 구현했을땐 HttpSession과 Interceptor를 이용하여 구현한적 있었는데 이렇게 구 현해놓으니까 중복코드가 너무많이 발생하기도하고 유지보수도 힘든적이 있었다. 그래서 어떻게하면 이보다 편리하게 구현할 수 있을까 생각하다 Spring Security를 적용했었다. Spring Security를 어느정도 알고있는 상태에서 사용하면 편하지만 필자처럼 무작정 모르고 도입했다가 멘탈이 나갈(?) 수 있으 니 이번장에서 자세히 알아보자. Security 의존성 추가 org.sprin..
2장에서는 JAVA에서 JSON 데이터로 HTTP 통신을 해보는 시간을 가졌는데 이번에는 직접 JSON 데이터를 다뤄보는 시간을 가져보자 JSON 데이터를 다루기 위한 라이브러리와 HTTP통신하는 예제는 아래링크에 첨부해두었다. https://kim-jong-hyun.tistory.com/29 JSONObject 생성 8 Line에 있는 코드가 외부에서 응답받은 JSON 데이터라 가정해보자. String타입의 JSON포맷데이터이다. 이 값을 JSONObject 생성자 호출시 인자로 전달해주면 JSONObject 객체가 생성되며 get(String key) 메서드로 해당 key에 맞는 value를 꺼내온다. 이때 value엔 어떤타입이 담겨있는지 모르니 해당 값에 맞게 casting을 해주면 된다. JSO..
JAVA에서 List를 만들때 ArrayList나 LinkedList와 같은 List 인터페이스를 구현한 구현체의 객체를 생성할 수 있는데 이번글에는 Arrays.asList()와 List.of() 메소드로도 생성할 수 있습니다. 오늘은 이 2개의 차이에 대해 한번 알아보겠습니다. List 생성하기 Arrays.asList()와 List.of()로 각각 List를 생성하였습니다. Arrays.asList() Arrays.asList()의 리턴값은 java.util.ArrayList이 아닌 Arrays 클래스의 내부클래스 ArrayList입니다. asList() 메서드 시그니처를 확인해보면 가변인자를 받게끔 되있고 4323 Line을 확인해보면 ArraysList(Arrays 내부) 클래스의 구조는 배열로..
Spring Boot로 개발하다보면 application.properties나 application.yml 파일에 개발자 정의 프로퍼티를 추가하는일이 많다. 하지만 개발자 정의 프로퍼티를 작성할 경우 왼쪽에 노란색 전구모양의 경고가 뜨게되는데 정상작동은 프로퍼티가 많아지면 왠지 소스가 깔끔하지 못하고 지저분(??)해 보일수 있다. 그래서 이번엔 저 경고창을 없애는 방법과 개발자가 정의한 프로퍼티 값들을 관리할 수 있는 방법을 예제코드와 함께 알아보자. application.propeties(.yml) 파일에 개발자 정의 프로퍼티 추가 사용자에게 이미지파일을 응답하기 위한 요청url과 요청을 서버쪽 이미지가 있는 경로에 전달하기 위한 url 2개를 추가했다. metadata.json 파일생성하기 커서를 경..
이번장에는 JAVA에서 HTTP 통신으로 외부 API를 호출하여 JSON 데이터를 주고받는법을 알아보자. Spring을 이용한 API 개발을 할때 Jackson 라이브러리가 있어서 JSON 요청데이터 파싱 및 응답을 Spring이 컨버팅 해줘서 편하지만 Spring 환경이 아닌 순수 JAVA에선 어떻게 해야하는지 예제코드와 함께 알아보자. JSON 라이브러리 등록 JSON 데이터를 JAVA에서 다루기위해선 JSON 관련 라이브러리를 등록해야한다. 아래링크에 들어가서 jar파일을 다운받고 Build Path에 추가하자. Spring이라면 maven이나 gradle에 해당 의존성을 추가해주면 된다. https://mvnrepository.com/artifact/org.json/json/20201115 jar..
웹개발을 하다보면 이미지를 화면에 보여주는 일이 엄청나게 많다. 그때 이미지파일이 프로젝트 내부가 아닌 외부경로에 있는 파일을 보여줄 때가 있다. 예를들어 Spring에서 파일업로드를 구현할때 File 객체를 생성해서 최상위 경로를 C드라이브로 잡게되는데 로컬에 있는 파일은 브라우저 보안상 접근이 되지않는다. 다행히 Spring에선 외부경로에 있는 리소스를 접근할 수 있는 방법을 제공해주는데 예제코드와 함께 알아보자. 외부경로 생성 및 이미지추가 사진과같이 C:\resource 디렉토리 하위에 test.JPG 라는 이미지를 추가해두었다. JAVA 설정코드 추가 WebMvcConfigurer 인터페이스를 구현한 뒤 addResourceHandlers() 메서드를 오버라이딩 하고 아래소스를 추가하자. 해당소..
Maven을 이용한 개발환경에서 mvn에 없는 외부 jar파일 (ex.개발자가 직접 만든 jar파일)을 Maven 레파지토리에 추가해줘야 하 는일이 생길 수 있다. 여러가지 구현방법이 있는데 그중 한가지방법과 주의사항에 대해 예제코드와 함께 알아보자. JAVA 프로젝트 생성 + jar파일만들기 TestUtil이라는 클래스를 만들고 true와 false를 리턴하는 메소드를 생성후 빈 폴더를 만든뒤 해당폴더에다가 Jar파일을 생성하 였다. jar파일명은 java-1.0.0.jar로 생성하였는데 이 jar파일명에 대한 설명은 아래에서 설명하고자한다. 외부 jar파일을 저장할 경로 생성 프로젝트 바로 하위경로에 lib라는 폴더를 생성후 com/java/1.0.0 이름의 폴더로 3댑스형식으로 생성후 위에서 생성해..
이번장에는 Spring에서 제공해주는 MessageSource에 대해 알아보자. 웹개발을 하면서 화면단에 alert함수를 이용해 클라이언트에게 특정메세지를 보여줘야 할때가 많다. 이때 java에서 메세지값을 하드코딩으로 넣고 리턴해주는 경우도 있는데 그렇게 하게되면 하나의 메세지내용을 수정할 때 그 메세지가 입력된 모든파일을 다 찾아가면서 바꿔줘야 한다. 이때 이러한 문제를 해결해주기 위해 MessageSource라는걸 제공해주는데 이 MessageSoure의 기능중 하나인 다국어 지원도 해준다. 예제코드를 통해 알아보자. MessageSourceAccessor 설정 MessageSource 인터페이스의 구현체인 ReloadableResourceBundleMessageSource를 사용해 Message ..
저번장에는 jxls로 엑셀다운로드에 대해 다뤄보았는데 이번에는 엑셀업로드에 대해 예제와 함께 알아보자. 내용이 복잡하지 않고 약간의 설정만 추가해주면 된다. jxls 의존성 등록 저번장에 등록해두었던 의존성을 추가하자 (이미 추가되있으면 하지않아도 된다.) org.jxls jxls 2.6.0 org.jxls jxls-poi 1.2.0 org.jxls jxls-reader 2.0.5 엑셀파일 생성 사용자에게 데이터를 입력받을 샘플 엑셀파일을 생성하자. 그리고 만들어둔 샘플 엑셀파일을 아래사진처럼 src/main/resources/template/excel 하위경로에 옮겨두자 xml 파일생성 해당양식에 맞는 xml파일을 생성하고 샘플엑셀파일과 동일한 경로에 옮겨두자. 그리고 각 태그들의 속성이 무엇을 의미하..