인터셉터
홈페이지를 이동하기 전에 조건을 검색을 해서 일치하면 홈페이지로 보내주고 아니면 로그인 페이지로 보낸다
프로젝트에서 써보고 싶었는데 재밌겠넹
홈페이지를 누르면 WebConfig 파일이 실행이 되고
그 안에서 인터셉터 메서드를 불러와서 해당 인터셉터 메서드로 넘어가서
해당 인터셉터 메서드의 결과를 가져와서 해당 인터셉터가 실행이 되면 로그인 페이지로 넘어간다
@Configuration : 설정 정보를 스프링 실행시 등록 해줌
implements WebMvcConfigurer을 해줘야함!
@Override이기 때문에 똑같이 해야함
InterceptorRegistry : 인터셉터를 저장해주는 저장소?
.addInterceptor(new 체크인터셉트 메서드) : 만든 인터셉트 메서드를 가져온다
.order(숫자) : 해당 인터셉터가 실행되는 순서
.addPathPatterns(“/**”) : 해당 프로젝트의 모든 주소에 대한 인터셉트 적용
.excludePathPatterns(“주소1”,”주소2”) : 적은 주소는 예외
implements HandlerInterceptor를 해줘야 한다
HttpServletRequest : 요청을 보낸 페이지
HttpServletResponse : 내가 요청을 할 페이지
HttpSession에 request로 받아온 세션을 넣어 준다
if (session.getAttribute(“이메일 세션 이름”)==null)을 이용해서 값이 없다면
요청을 보낸 페이지(전 페이지)의 주소를 response로 보내고 결과를 false로 보낸다
로그인이 되어 있는 상태면 true를 보내서 요청한 페이지로 보낸다
여기서 부터는 내가 만든 내용
전페이지 주소를 @RequestParam으로 받아서 모델로 다시 보내고
로그인 페이지에서 form태그 안에 input을 히든으로 만들고 (DTO에 URL용 필드 하나 생성) 로그인 DTO에서 받아서 같이 가져와서 리턴을 redirect:+로그인DTO.getURL으로 해서 다시 해당 페이지로 돌아가는 것이다
해당 메서드처럼 줄줄이 이어져있는 메서드를 체인메서드라고 한다
alias설정을 하면 mapper에서 parameterType과 resultType에서 앞부분을 지우고 DTO이름만 써서 사용이 가능하다
implementation 'org.springframework.boot:spring-boot-starter-data-jdbc'
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.2.0'
@Mapper 를 해줘야함, 인터페이스로 만들어야함
mapper에 있는 id와 메서드 이름을 같게 해야한다
2가지 방법이 있다
mapper의 내용을 불러오는 것과
어노테이션을 이용해서 직접 하는 내용 두가지가 있다
mapper 태그 namespace는 맵퍼리포지토리를 지정해 주면 된다