전체 글

먼저 인텔리제이에서 만든 프로젝트의 폴더로 이동 dir명령어로 목록확인 후 gradlew파일을 확인한 후 gradlew build 빌드 완료 후 build 파일안의 libs파일로 이동 libs파일내에 있는 jar파일 확인 후 " java -jar jar파일이름.jar " 스프링부트 실행완료
우선 예제를 위해 아래와같이 프로젝트를 생성해준다. Controller package hello.hellospring.controller; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; @Controller public class HelloController { @GetMapping("hello") public String hello(Model model){ model.addAttribute("data","hello!!"); //hello.html에 있는 ${data}가 hello!!로 치환됨..
웹을 사용하면서 겪는 여러 불편함 중 가장 많이 겪는 어려움은 매번 비밀번호를 기억해야 한다는 점이 있다. 따라서 OAuth 서비스를 이용하여 로그인을 처리하면 사용자 관리에 대한 부담을 줄일 수 있다. [ OAuth(Open Authorization) ] : 서비스를 제공하는 업체들이 각자 다른 방식으로 로그인하지 않도록 공통의 인증 방식을 제공하는 것 웹 내에서 로그인을 구글과 연동하여 프로젝트 생성한다. 1.구글에 프로젝트(서비스)를 등록 OAuth 클라이언트 ID를 만든 후 구글에서 인증된 정보를 다시 현재 프로젝트에 보내는 '리디렉션 URI'를 지정한다. 리디렉션URI를 지정하면 클라이언트ID와 비밀번호가 생성되는데 이를 기억한다. 2.프로젝트 내 구글 설정 2-1.build.gradle 수정 ..
먼저, 예제를 위해 엔티티 클래스를 생성한다. ClubMember.class @Entity @Builder @AllArgsConstructor @NoArgsConstructor @Getter @ToString public class ClubMember extends BaseEntity{ @Id private String email; private String password; private String name; private boolean fromSocial; @ElementCollection(fetch = FetchType.LAZY) @Builder.Default private Set roleSet = new HashSet(); // ClubMember타입으로 HashSet 생성 // HashSet은..
스프링 시큐리티를 이용하는 모든 프로젝트는 이를 위한 별도의 시큐리티 설정 클래스를 사용하는 것이 일반적이다. 따라서 진행할 예제의 프로젝트에 SecurityConfig 클래스를 추가해준다. @Configuration @Log4j2 public class SecurityConfig extends WebSecurityConfigurerAdapter { // 모든 시큐리티 관련 설정을 추가하는 곳 } 시큐리티 관련 기능을 쉽게 설정하기 위해 WebSecurityConfigurerAdapter 클래스를 상속 처리한다. WebSecurityConfigurerAdapter 클래스는 주로 override를 통해서 여러 설정을 조정한다. 위의 클래스에는 모든 시큐리티 관련 설정이 추가되는 부분이 된다. 먼저, Sam..
스프링부트 프로젝트를 하면서 조회 페이지에서 리뷰를 등록할 때, 아래의 Save changes 버튼을 눌러 Review의 DB에 값을 넣으려는 순간 서버에서 Cannot add or update a child row: a foreign key constraint fails (`bootex`.`review`, CONSTRAINT `FK9gnx 8llky658xey9qg00djyg5` FOREIGN KEY (`member_mid`) REFERENCES `m_member` (`mid`)) 위와 같은 오류가 떴다. 일단 외래키와 관련된 오류 ( a foreign key constraint fails ) 인 것을 인지하고 자식테이블의 FK가 부모테이블의 PK 와 잘 연관이 되어있는지 확인했다. 문제가 없어서, 카..
[ Redirect ] 먼저, 리다이렉트(Redirect)의 정의를 알고간다. 리다이렉트란 말 그대로 re(다시) + 지시하다(direct) 다시 지시하는 것을 말한다. 예를 들어 브라우저가 "www.test.com/page1" URL을 웹 서버에 요청했다. 서버는 HTTP 응답 메시지를 통해 "www.test.com/page2 로 다시 요청하라"~ 라고 브라우저에게 다른 URL(길, 방향)을 지시할 수 있다. 순서는 밑의 그림과 같다. HTTP 리다이렉트는 HTTP 표준으로 정의 되어 있는데 최초 요청을 받은 1.웹서버는 HTTP 응답 상태코드로 302를 보내고 응답 메시지 헤더 중 2.Location 값으로 리다이렉트 되어야 할 주소를 설정해 리턴한다. 브라우저등의3.웹 클라이언트는 HTTP 응답 메..
먼저 @PostMapping은 @RequestMapping(method = RequestMethod.POST ...)와 똑같다. @RestController @RequestMapping("api") public class DemoController { @RequestMapping(method = RequestMethod.POST, path = "/postMethod") public String postMethod() { return "Hello Spring"; } @PostMapping("/postMethod2") public String postMethod2() { return "Hello Spring"; } 함께 받아야하는 데이터가 있다면 , @RequestBody를 이용한다. 예제를 위해 VO객체를..
HDev
기억이 아닌 기록과 반복