Spring/게시판 만들기 4

검색 기능 만들기(동적쿼리) - Querydsl 사용

현재 Spring Security를 사용하여 로그인, 로그아웃을 구현한 상태이고 인증(로그인)하지 않은 사용자는 게시판에 접속할 수 없도록 구현해놓았다. Controller 파라미터로 page(페이징 변수), category(카테고리별 조회), myPost(내 게시물 보기), searchDto(검색창)를 받는다. 1. page page는 defaultValue를 0으로 설정하였기 때문에 값을 설정하지 않으면 0페이지부터 보여준다. 만약 다음 페이지 버튼을 누르게 되면 현재 페이지에서+1을 한 값이 page 변수에 담기고, 이전 페이지 버튼을 누르면 현재 페이지에서 -1을 한 값이 담긴다. 2. category required 속성을 false로 지정해놓았기 때문에 category 값을 주지 않으면 nul..

로그인한 사용자 정보 받아오기

Spring Security를 사용하여 로그인, 로그아웃을 구현해놓았다. 또한 회원 가입시에 Spring Security를 통해서 비밀번호를 암호화하여 저장하도록 하였다. 초기버전에서의 새로운 게시물 작성은 Member 엔티티를 추가하기 이전이였기 때문에 작성자를 직접 입력하는 식으로 구현되었다. 하지만 현재 Member 엔티티를 추가하여 로그인, 로그아웃을 구현해놓은 상태이기 때문에 Authentication 객체를 사용하여 세션 정보를 가져와 작성자를 고정시키는 방식으로 변경하였다. 게시물을 작성하면 세션 정보를 가져와 작성자는 disabled Authentication를 파라미터로 받아 위와 같이 사용하였다. 스프링 시큐리티를 처음 사용해보았는데 굉장히 성숙도가 높은 부분인 것 같아 추후에 따로 공..

조회수 기능, 페이징, 정렬

현재 게시물 CRUD 기능은 구현이 되어있는 상태이다. 스프링 데이터 JPA를 사용하여 굉장히 편리하게 구현하였다. 조회수 기능 조회수 기능의 구현 로직은 굉장히 간단하다. 그냥 해당 게시물을 조회할 때 조회수 필드를 +1 시켜주면 된다. 프로젝트를 진행할 때에는 Setter를 사용하여 값을 변경하는 습관은 매우 좋지 않은 습관이다. 그 외에 따로 조회수 필드를 변경할 수 있는 메서드를 만들어서 진행하였다. 이는 서비스 계층에서 호출되어 사용된다. JPA의 Dirty Checking 기능을 사용하여 조회수를 1씩 올려주는 식으로 구현하였다. 서비스 계층의 클래스 레벨에서 @Transation(readOnly=true)로 설정해놓고 생성, 수정이 일어나는 메서드 레벨에서 위와 같이 @Transaction을..

프로젝트 시작과 설계

사용 기술 - Spring MVC - Spring Boot - Spring Data JPA - Querydsl IDE - IntelliJ DB - MySQL Template Engine - Thymeleaf UI - BootStrap 점진적으로 기능을 추가시켜나갈 예정 먼저 게시물 CRUD 기능을 완성하고 조회수 기능, 페이징과 정렬을 적용시킬 것이다. 그 다음으로는 로그인/로그아웃, 회원 가입 기능을 추가시켜 로그아웃 상태에서는 게시물을 조회할 수 없도록 설정할 것이다. 또한 게시물을 검색할 수 있는 동적쿼리를 Querydsl을 사용하여 구현해볼 예정 그 이후에 추가할 기능들은 생각중.

반응형