본문 바로가기

전체글보기

(28)
[스프링부트 게시판] 15. 회원가입 기능 구현 이번 게시글에서는 회원가입 페이지를 이용한 회원가입 기능 구현에 대해 설명 드리고자 합니다. 그 전에 먼저 전에 13. 페이지 공통 부분 분리에 대해서 몇 가지 수정을 설명하고 이어 말씀하도록 하겠습니다. 이전에 페이지 공통 부분으로 Header와 Footer를 공통으로 잡아 해결했지만 Header와 Footer에 대한 공통 부분은 계속 반복적으로 코드를 작성하기 때문에 순수하게 안에 내용만을 바꾸고 싶은 레이아웃을 만들고 싶었습니다. [계속 반복해야하는 코드] html 태그에 xmlns:layout 에 대한 URL을 작성합니다. 여기에서 공통부분을 제외한 다른 부분을 바꾸는 것을 th:block 태그를 이용하여 만듭니다. 여기서 공통 CSS나 JS로 이용한 것을 모아서 할 수 있으며 다르게 제작하는 부..
[스프링부트 게시판] 14. 로그인, 회원가입 화면 만들기 이번 게시글에서는 로그인과 회원가입을 위한 화면을 구현하도록 하겠습니다. 이전에 사용하던 UserController를 이와 같이 변경시킵니다. [UserController] @Controller public class UserController { @Autowired private UserRepository userRepository; @GetMapping("/user/joinForm") public String join() { return "user/joinForm"; } @GetMapping("/user/loginForm") public String login() { return "user/loginForm"; } } @Controller 어노테이션으로 변경 후 웹 페이지를 불러 올 @GetMappi..
[스프링부트 게시판] 13. 페이지 공통 부분 분리 이번 게시글에서는 모든 페이지에서 사용할 페이지의 공통 부분을 분리하도록 하겠습니다. 먼저 Header와 Footer에 해당하는 화면을 분리하고자 합니다. 여기에서 Header는 태그로, Footer는 Footer라 작성이 된 부분으로 사용할 것입니다. [Header] 메인페이지 로그인 회원가입 [Footer] Footer 2개의 공통 부분을 따로 만들어보도록 하겠습니다. 우선 사전 작업으로 태그에 작업해야 할 것이 있습니다. [main.html] ... 제가 사용하는 Thymeleaf에서 th 태그와 layout 태그를 사용합니다. 이를 사용하기 위해 xmlns:th="http://www.thymeleaf.org"와 xmlns:layout="http://www.ultraq.net.nz/thymeleaf..
[스프링부트 게시판] 12. 메인화면 만들기 이번 게시물에서는 블로그 게시판을 위한 홈페이지를 만들 기준이 되는 메인화면을 구성하려고 합니다. HTML과 CSS를 잘 다루거나 또는 프론트엔드에서 사용하는 React, Vue.js 등으로 구성할 수 있지만 필자는 Bootstrap을 이용한 화면으로 디자인하려고 합니다. Bootstrap 4 Tutorial W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more. www.w3schools.com Bootstra..
[스프링부트 게시판] 11. JPA DELETE 이번 게시글에서는 DELETE 작업을 수행하도록 하겠습니다. 전에 INSERT, SELECT, UPDATE로 사용한 사용자(User) 데이터베이스의 현재 상태입니다. 사용자 삭제를 위한 DELETE 작업을 위해 UserController 클래스에 다음과 같은 함수를 추가하였습니다. [UserController] @DeleteMapping("/user/{id}") public String delete(@PathVariable Long id) { try { userRepository.deleteById(id); } catch (EmptyResultDataAccessException e) { return "삭제에 실패하였습니다. 해당 id는 DB에 존재하지 않습니다."; } return "삭제가 완료되었습니다..
[스프링부트 게시판] 10. JPA UPDATE 이번 게시글에서는 데이터를 전달 받아 해당 사용자의 정보를 수정하는 UPDATE 작업을 수행하도록 하겠습니다. 우선 UserController 클래스에 다음과 같이 함수를 구현하였습니다. [UserController] @PutMapping("/user/{id}") public void update(@PathVariable Long id, @RequestBody User requestUser) { User user = userRepository.findById(id).orElseThrow(() -> { // IllegalArgumentException 예외 처리 throw new IllegalArgumentException("해당하는 아이디가 없습니다 id : " + id); }); user.setPass..
[스프링부트 게시판] 9. JPA SELECT 이번 게시글에서는 데이터베이스에 들어있는 데이터에 대해 확인을 하는 SELECT 작업을 수행하도록 하겠습니다. 먼저 5개의 사용자를 추가하도록 이전 post를 통한 회원가입을 진행하도록 하겠습니다. 이후 이전 시간에 생성시켰던 UserController 클래스에서 SELECT를 확인 할 수 있는 코드를 추가하도록 하겠습니다. 여기서 '{ }'와 @PathVariable 어노테이션은 주소를 통한 파라미터를 전달받기 위해 사용하였습니다. 위와 같은 주소의 예시로 /toy/user/1 이렇게 작성을 해야하는데 실수로 {id}에 해당하는 값이 없어 널(null)값이 될 수도 있습니다. 이러한 변수가 들어가 문제가 발생하는 경우가 있습니다. 여기서 JpaRepository 클래스에서 데이터를 가져올 때, 예외를 ..
[스프링부트 게시판] 8. 회원가입을 위한 JPA INSERT 이번 게시글에서 회원가입을 위한 데이터베이스에 사용자를 추가하는 JPA Insert에 대해 알아보고자 합니다. 먼저 회원가입을 위한 테스트용 Controller 클래스 파일을 생성하겠습니다. 사용자 관련 컨트롤러인 UserController를 생성했습니다. [UserController] @RestController public class UserController { @PostMapping("/user/join") public String join(String username, String password, String email) { System.out.println("username : " + username); System.out.println("password : " + password); Sys..