프로그래밍
-
스프링 시큐리티 레퍼런스프로그래밍 2022. 10. 24. 20:07
spring security reference 5.7.4 Servlet Applications - Sprint Security는 표준 서블릿 Filter를 이용하여 서블릿 컨테이너와 결합되있는 것으로 Servlet-based application에서는 사용하지 않아도 된다. 자동 설정 - springSecurityFilterChain 이라는 빈을 생성함으로써 서블릿 Filter를 자동 생성한다. - UserDetailsService 빈을 자동 생성한다. - 서블릿 컨테이너에 springSecurityFilterChain 빈을 자동으로 등록한다. 아키텍쳐 표준 서블릿 필터 리뷰 - 클라이언트가 request를 보내면, 컨테이너가 FilterChain을 생성한다. FilterChain 사용 예제 public..
-
8. 블로그 프로젝트프로그래밍 2022. 7. 28. 17:08
세션을 이용한 로그인 API를 구현하였다. @RequiredArgsConstructor @RestController public class AccountApiController { private final AccountService accountService; @PostMapping("/api/login") public Boolean login(HttpServletRequest request, @RequestBody AccountRequestDto requestDto) { if (accountService.login(requestDto)) { HttpSession session = request.getSession(); session.setAttribute("success", requestDto); re..
-
7. 블로그 프로젝트프로그래밍 2022. 7. 27. 16:55
검색 기능을 구현하고, 로그인을 위한 서비스 코드를 작성하였다. public interface PostRepository extends JpaRepository { List findAllByTitleContains(String title); List findAllByContentContains(String content); } Spring Data JPA는 쿼리를 굳이 작성하지 않고 함수명을 이용하여 쿼리를 만들어낼 수 있다. 처음에는 findAllByTitle 이라는 함수명으로 만들었지만, 이는 정확하게 일치해야만 그 값을 리턴하였다. 보통 검색을 할 때는 포함된 결과를 원하기 때문에, Contains를 추가해주어야 한다. @GetMapping("/") public String getMain(Model..
-
6. 블로그 프로젝트프로그래밍 2022. 7. 19. 15:55
댓글 수정과 삭제 프론트 부분을 구현하였다. detail.html 작성자 : 수정 삭제 댓글 하나마다 수정, 삭제 버튼이 존재하는데 이를 구별하는 것이 매우 어려웠다. 댓글 목록 을 이용하여 replies에 addEventListener를 사용하고 이벤트 핸들러에 매개변수를 받아 target을 이용하려고 했으나, 댓글이 여러개 있을 때 첫번째 댓글을 제외하고는 작동하지 않았다. 그래서 티스토리의 댓글 작동 방식을 개발자 도구를 이용하여 확인한 결과 onclick을 사용하고 있었다. onclick에 replyID를 매개변수로 주면 되겠다 싶어 th:onclick을 이용하여 구현하였다. main.js function replyUpdateClicked(replyID) { window.open("/update/..
-
5. 블로그 프로젝트프로그래밍 2022. 7. 17. 17:27
댓글 프론트 부분을 구현하였다. 댓글의 추가만을 구현하였고, 수정과 삭제는 다음에 구현할 것이다. detail.html 재원블로그 수정 삭제 작성자 : 작성자 : 작성 detail.html의 body 부분이다. 간단한 부분인데 자바스크립트가 계속 새로운 createReply 부분을 인식하지 못하는 문제가 발생했다. 원인은 ul 에서 th:each 부분 때문이었다. ul 부분을 div로 감싸주지 않으면 그 밑의 태그들은 전부 인식하지 못하였다. 그래서 ul 부분을 div로 감싸니 그제서야 createReply 부분들을 인식할 수 있었다.
-
3. 블로그 프로젝트프로그래밍 2022. 7. 6. 15:52
화면단을 부트스트랩을 이용해 꾸미고 DTO를 추가하고, thymeleaf를 이용하여 메인 화면에 게시글 목록을 렌더링한다. main.js let createButtonClicked = document.getElementById("createButtonClicked"); let createPost = document.getElementById("createPost"); if (createButtonClicked !== null) { createButtonClicked.addEventListener('click', function() { window.location.href = "/create" }); } if (createPost !== null) { createPost.addEventListener('c..
-
2. 블로그 프로젝트프로그래밍 2022. 7. 5. 15:49
updatePost, deletePost 를 만들고 댓글 엔티티인 Reply, reply의 CRUD 코드를 작성하였다. PostService @AllArgsConstructor @Service public class PostService { private PostRepository postRepository; @Transactional public void createPost(String title, String content) { Post newPost = new Post(title, content); postRepository.save(newPost); } @Transactional public void updatePost(String title, String content, Long id) { Po..