목록스프링부트 (21)
-
스프링부트는 시큐리티 기능을 제공하고 있습니다. 사용자가 로그인을 하고 사이트를 들어가려고 할 때 허가 없이 사이트의 정보를 얻으면 안되겠죠? 스프링부트에서는 이 기능을 제공함으로써 허가된 사용자에게 권한을 줄 수 있습니다. 일단 시큐리티 세팅을 해보도록 하겠습니다. 저는 css, html파일은 인스타그램 클론 코딩의 프론트단을 받아서 사용하고 있어서 따로 프론트 쪽 설명은 하지 않습니다. 이렇게 생겼습니다. 근데 중요한건 localhost:8080만 입력해도 8080/login으로 변경이 됩니다. 왜냐하면 pom.xml보면 시큐리티 라이브러리가 이렇게 등록이 되어 있습니다. 이 라이브러리가 어떤 역할을 하냐면, 클라이언트가 우리 서버에 들어오려고 하면 인증되지 않은 모든 사용자를 로그인창으로 Redir..
자 컨트롤러가 있다고 가정해봅시다. @RestController말고 @Controller라고 해보겠습니다. static void lol(@PathVariable int id ... ) { User entity = model.attribute(user.getName()); /** 10000줄 **/ } main이라는 함수에 id를 주소 변수 매핑을 이용하여 파라미터로 가져오고 10000줄에 달하는 코드가 있다고 해봅시다. 그리고 그 밑에 static void lol(@PathVariable int id ... ) { User entity = model.attribute(user.getName()); rawPassword = entity.getPassword(); String password = encode..
Http에서 데이터를 요청할 때 2가지 방식으로 나눌 수 있습니다. 첫 번째로 쿼리스트링(querystring), 두 번째로 주소변수매핑(path variable)이 있습니다. 스프링부트에서는 주로 주소변수 매핑을 사용하고 있는데 서로 어떤 차이가 있는지 한 번 알아보겠습니다. 제가 떡볶이를 좋아하니까 떡볶이 집에 제가 배민으로 주문을 한다고 가정해봅시다. 뭐 먹을지 고민하다가 로제 떡볶이, 치즈 떡볶이 중에서 전 치즈 떡볶이를 시키려고 결정했다고 해봅시다. 이 때 제가 배민에서 떡볶이집 가게를 클릭해서 들어갈 때부터 한 번 살펴봅시다. 이런식으로 제가 떡볶이집 가게를 들어가서 이 가게에 대한 메뉴를 고르려고 할 때 저흰 가게에 대한 정보가 필요합니다. 이때 GET동작방식이 실행되어 가게의 정보를 확인할..
스프링부트 내부에는 yml파일이라는 것이 존재합니다. 이 yml파일을 어떻게 쓰는지 하나하나 구체적인 설명보다는 추상적으로 한 번 이해해봅시다. 직접 살펴보겠습니다. yml파일은 이렇게 프로젝트 파일 내부의 resources폴더 내부에 위치하고 있습니다. 이 파일의 세부 설정을 통해 프로젝트의 기본적인 설정을 할 수 있습니다. 예를들어 '자신이 타이어를 만드는 기술자' 라고 해봅시다. 그럼 이 타이어를 만들 때 고려할 것이 정말 많을 것입니다. 공장의 직원들의 일 분배나, 타이어 제조하는 기계의 위치나, 어떻게 건조할건지, 어디에 납품할 것인지 등등 세부적으로 모두 설계가 완료된 시점에서부터 공장을 가동하기 시작하듯이 프로젝트 또한 기초적인 설정을 마친 뒤 프로젝트 개발이 시작됩니다. yml파일은 바로 ..
지난 포스팅에서 했던건 입력한 데이터를 메모리에 저장했다가 서버가 재가동되면 회원 데이터가 모두 사라지게 되므로 실무에선 이를 막기위해 DB에 데이터를 저장하고 관리합니다. 그래서 아주 간단한 DB인 H2를 한 번 사용해보도록 하겠습니다. 수십년전에는 직접 JDBC에 데이터를 넣고 관리했어야 했는데 그땐 중복이 될 때도 많고 코드를 하나하나 입력하기 상당히 어려웠습니다. 그러나 이후 SQL이 등장하여 중복에 대한 것들을 비교적 쉽게 막을 수 있었고 요즘은 더 나아가서 JPA가 등장하여 삭제, 조회, 등록 등의 쿼리를 직접 다루는 기술이 등장하게 됩니다. JPA라는 기술을 쓰면 객체를 쿼리 없이 DB에 저장하고 관리할 수 있습니다. JPA도 스프링만큼 상당히 오래된 기술이지만 스프링에서 JPA를 굉장히 편..
지난번 회원 가입 포스팅에 이어서 회원 조회도 바로 만들어 보겠습니다. 회원 조회를 어떻게 구현하면 좋을까요? 일단 회원 목록을 홈페이지에서 눌렀을 때 회원들이 모두 다 뜨게 만들면 좋지 않을까요? 이전에 home.html에서 회원가입과 더불어서 회원 목록을 클릭했을 경우 /members로 이동하게끔 세팅했었습니다. 따라서 이번에도 MemberController에 회원 목록 로직을 한 번 짜보도록 하겠습니다. 그리고 나서 Ctrl + Alt + V를 눌러 변수를 뽑아옵니다. 이게 예전에 만든 findMembers()메서드인데요. return할 때 memberRepository.findAll()이라고 했으니 이 메서드를 실행하면 결과적으로 모든 회원들을 불러옵니다. 이때 불러온 members들을 List타..