프로젝트를 만든지 얼마 되지 않았고, Web 소스를 만든적도 없는데 아래와 같은 로그인 페이지가 떠서 당황스러울 수 있습니다. 내가 이런 페이지를 만들었었나? 생각 할 수 있지만, 이는 스프링 부트에서 만들어낸 자체적인 기능으로, 보안설정 때문에 아이디, 패스워드를 입력받는 페이지입니다. 이렇게 아이디 패스워드가 나오는 것이 보기 싫을 경우, 해제하는 방법이 있지만 우선 이번에는 아이디 패스워드를 입력하는 방법부터 알아보도록 하겠습니다. Using generated security password: 라고 콘솔창에 띄워져 있는 것을 볼 수 있는데요. 해당 부분의 값이 Password입니다. 그리고 id는 user가 됩니다. 위와 같이 입력을 하면, 정상적으로 넘어가는 것을 확인할 수 있습니다. 그리고..
Spring Boot에서 application.properties와 application.yml은 모두 어플리케이션의 구성 설정을 위한 파일이며, 둘간의 주요 차이점은 파일 형식과 구문에 있습니다. 둘간의 차이점을 알아보고, 각각에서 mysql과 mongodb 세팅의 차이점을 알아보도록 하겠습니다. 파일 형식 application.properties - 전통적인 프로퍼티 형식을 사용하며, 설정은 키 밸류 형태로, key=value 형식으로 표현됩니다. application.yml - YAML(Yet Another Markup Language 혹은 YAML Ain't Markup Language) 형식을 사용하며, 계층적이고 가독성이 높은 방식입니다. 구문 application.properties에서는 동..
여태까지 Spring-boot를 사용했던 케이스는 STS(Spring Tools Suite)을 사용하여 개발을 했었는데요. Java 어플리케이션은 IntelliJ로 개발을 하다보니, 어느덧 IntelliJ로 Spring-boot를 개발을 해봐야 겠다라는 생각을 가지게 되었습니다. 15년 가까이 Eclipse를 사용했지만, 이제는 놔줘야 될때가 온 것도 같습니다. 아직도 많은 SI 사이트들은 전자정부프레임워크를 사용할테지만, IntelliJ와 성능 차이가 너무 심하게 나서 저는 도저히 못쓸 것 같네요. 그럼 IntelliJ로 Spring 설정하는 법을 설명하도록 하겠습니다. Spring Boot 프로젝트 생성 IntelliJ를 실행한 후, New Project를 선택합니다. New Project 탭이 뜨면..
스프링 백엔드에서 데이터를 처리하거나 가지고 왔다면, 이 데이터를 View의 영역으로 전달을 해야 한다. 이때 View를 어떤 것을 사용할지 자유롭게 설정을 할 수 있는데 이 설정 역할을 하는 것이 View Resolver라고 생각하면 된다. 예를 들어 데이터를 API 형태로 제공하길 원한다면 View Resolver를 통해서 프론트엔드 프레임워크로 보내지 않고, JSON 형태(Json View 라고 함)로 전달해줄수도 있고, 한국에서 가장 많이 사용하는 Java 프론트엔드 언어인 JSP 페이지로도 보낼수도 있다. 이렇게 원하는 뷰 타입의 Dependency를 추가하게 되면 다양한 방식으로 보여줄 수 있는데 아래와 같은 View를 제공해주고 있다. View Type Thymeleaf - Dependenc..
의존 주입이라는 용어는 스프링(Spring)에서만 쓰이는 개념은 아니지만, 오늘날 스프링이 이렇게까지 자바(Java) 진영에서 성공할 수 있는 이유 중 하나인 의존 주입에 대해서 알아보도록 하겠습니다. 단어만 볼 때 너무 어려운거 아니야? 라고 생각할 수 있지만 스프링의 기초적인 부분이고 전혀 어려운 것이 아니니 꼭 이해하셨으면 좋겠습니다. 객체에 의존한다 의존 주입을 이해하기에 앞서, 객체에 의존한다라는 개념을 먼저 이해를 해야 됩니다. TestA.java package com.tistory.needneo; public class TestA { public void print() { System.out.println("test a"); } } TestB.java package com.tistory.ne..
개발을 할 때 Base URL을 매번 Controller에서 설정하는 것은 여간 귀찮은 것이 아니다. 그리고 Base URL이 바뀔 경우 모든 클래스를 다 수정하는 것도 문제가 될 수 있다. Spring boot에서는 매우 간단하게 Base URL을 설정하는 방법을 제공한다. 예제 import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; @Controller public class RestController { @RequestMapping("/rest/v..
최근 Log4J 버전에 해킹 이슈들이 터지면서 KISA에서는 기업들에게 경고 메세지를 주고 있고, 우리 회사의 경우 ISMS를 인증하였기 때문에 Log4J 대응으로 업무가 터져버릴 지경이다. 전자정부 프레임워크에서의 취약점 긴급 사항 □ 주요 내용 o Apache Log4j 2에서 발생하는 원격코드 실행 취약점(CVE-2021-44228)[2] o Apache Log4j 2에서 발생하는 서비스 거부 취약점(CVE-2021-45046)[6] o Apache Log4j 2에서 발생하는 서비스 거부 취약점(CVE-2021-45105)[8] o Apache Log4j 1.2에서 발생하는 원격코드 실행 취약점(CVE-2021-4104)[7] ※ Log4j : 프로그램 작성 중 로그를 남기기 위해 사용되는 자바 기..
폼(Form) 생성 폼이란 데이터를 담아놓은 집합 같은 걸로 폼을 전송하게 되면 태그 안에 있는 데이터를 전송할 수 있게 된다. 물론 다른 폼에 있는 데이터를 가져올 수도 있지만 submit을 할 때 폼 자체를 전송하거나 폼 내부의 값들을 serialize하여 전송하는 경우가 대부분이다. 로그인폼(login.jsp) 아이디 패스워드 폼 파라미터 전송을 실습하기에는 로그인 만큼 좋은 것이 없을 것이다. 심플하게 테이블 코딩을 하였고, 값은 아이디와 패스워드가 존재하며, 실행은 login/action 경로로 값을 전달하게 된다. 파라미터 처리 및 매핑 LoginController.java 파라미터를 처리하고 페이지를 매핑하는 용도로 loginController를 생성한다. package com.tistory..
바로 이전에 Json 형태로 데이터를 출력하는 것을 만들었는데 이번에는 JSP를 연동하는 기능을 만들어보고자 한다. 스프링부트는 기존 스프링과 달리 JSP를 default로 제공하지 않기 때문에 이렇게 별도로 세팅을 해야 하는 번거러움이 있긴 하다. 의존성(Dependency) 추가 모든 view 페이지는 jsp로 진행하며, jsp는 스프링에서 별도의 디펜던시(dependency)를 추가해야 한다. 만약 maven으로 하였다면, pom.xml에 다음과 같은 dependency를 추가한다 jstl jstl 1.2 org.apache.tomcat.embed tomcat-embed-jasper provided 디펜던시를 추가 하였으면 Gradle Project를 Refresh한다. 그레이들을 리프레쉬하면, 디..
스프링부트(Spring Boot)로 매우 간단히 JSON 구조로 데이터를 출력할 수 있는데 본 포스팅은 프로젝트를 만들고 JSON 구조로 api까지 출력해보는 것을 만들어보고자 한다. 우선 web 형태로 프로젝트를 생성한다. 아래 참고 [Spring] 스프링 부트(Spring boot)로 웹 프로젝트 만들기 스프링부트(Springboot)로 프로젝트를 시작하기 위해서는 우선 프로젝트가 어떤 성격을 띄었는지를 알고, 해당 성격에 맞는 설정을 한 후 Generate를 하는 방법이 있다. 예를 들어 프로젝트가 웹개발 needneo.tistory.com 웹 starter로 프로젝트를 생성하였다면, 다음과 같이 VO(Value Object를 생성한다. Entity 클래스 package com.tistory.nee..
개발을 한지 얼마 되지도 않았고 뭐가 뭔지 잘 모르겠는 스프링 뉴비(newbie)분들은 프로젝트를 하기 전에 우선 프로젝트의 구조를 익히는 것이 좋을 것입니다. 이 포스팅은 너무 자세히는 설명하지 않고 간단히 프로젝트의 구조에 대해서 설명해보겠습니다. 스프링부트 프로젝트 구조 STS를 열고 내가 이미 만들어 놓은 프로젝트를 자세히 보면 아래와 같은 구조로 되어 있을 것입니다. 하나하나 위치별로 다시 설명을 드리자면 자바코드 최상단에 위치한 src/main/java에 있는 곳은 자바 코드가 위치해야 하며, com.tistory.needneo같은 것은 패키지 명입니다. 일반적으로 패키지명을 먼저 설계해서 만들어 놓은 후 자바코드들을 넣습니다. 가장 많이 작업할 공간이며, 패키지명을 잘 설계하는 것과 코드를 ..
스프링부트(Springboot)로 프로젝트를 시작하기 위해서는 우선 프로젝트가 어떤 성격을 띄었는지를 알고, 해당 성격에 맞는 설정을 한 후 Generate를 하는 방법이 있다. 예를 들어 프로젝트가 웹개발을 해야 하고 Rest 형태로 통신을 하는 것이 존재하며 MongoDB를 호출한다라는 설정을 넣게 되면 그에 맞게 세팅을 이미 한 프로젝트를 내려받아서 사용하는 것이다. 스프링 사이트 부트 설정화면 보통 spring의 웹사이트에서 이런 작업을 진행하지만 이클립스에서 스프링 툴을 설치했거나 STS(Spring Tool Suite)를 사용해서 웹프로젝트를 만들게 되면, 이 작업을 이클립스 내부에서 할 수 있다. STS(이클립스) 부트 설정 STS나 스프링이 애드온된 이클립스를 실행하면 File -> New..