본문 바로가기

개발/프로젝트

(18)
[스프링부트 게시판] 17. Spring Security 이번 게시글에서는 로그인 기능을 스프링 시큐리티 라이브러리를 사용하여 수정하도록 하겠습니다. 상세한 내용은 공식 홈페이지 Docs와 아래 블로그 링크를 참고하시면 됩니다. Spring Security :: Spring Security If you are ready to start securing an application see the Getting Started sections for servlet and reactive. These sections will walk you through creating your first Spring Security applications. If you want to understand how Spring Security works, you can docs.sprin..
[스프링부트 게시판] 16. 로그인 기능 구현 이번 게시글에서는 로그인 기능 구현에 대해 설명드리겠습니다. 이전에 만들었던 loginForm.html 을 사용하도록 하겠습니다. [loginForm.html] Username: Password: Remember me Login joinForm.html처럼 form의 action 속성을 지우고 button의 type 속성을 button으로 변경, id 속성으로 'loginBtn'을 추가합니다. 이전 join.js처럼 이번엔 login.js를 생성하도록 하겠습니다. login.js를 불러오기 위해 UserController에서 addScript에 login을 집어넣어 작동하는지 확인합니다. 정상적으로 login.js를 불러오는 것을 확인할 수 있습니다. [login.js] window.addEventLis..
[스프링부트 게시판] 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..