Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 이클립스
- 빈
- 인터페이스
- 상속
- 자동주입
- pom.xml
- react
- java
- 스프링
- Spring legacy Project
- merge
- @Bean
- 트랜잭션
- DI
- @transactional
- github
- spring
- 객체
- 스프링 컨테이너
- Spring 개발환경 설정
- JVM
- 어노테이션
- 영속성 컨텍스트
- 리액트
- springboot
- list
- 의존성주입
- mysql
- 깃허브
- 자바
Archives
- Today
- Total
DEVLOG
리다이렉트, 인터셉터 본문
리다이렉트
컨트롤러에서 뷰를 분기하는 방법
지금의 페이지에서 특정 페이지로 전환하는 기능
MemberController.java
// Modify
@RequestMapping(value = "/modifyForm")
public String modifyForm(Model model, HttpServletRequest request) {
HttpSession session = request.getSession(); // 현재 로그인된 세션 가져오기
Member member = (Member) session.getAttribute("member");
// 분기
if(null == member) { // 로그인 안 되어있다면
return "redirect:/"; // 메인페이지로 유도
} else {
model.addAttribute("member", service.memberSearch(member));
}
return "/member/modifyForm";
}
// Remove
@RequestMapping("/removeForm")
public ModelAndView removeForm(HttpServletRequest request) { // ModelAndView 반환
ModelAndView mav = new ModelAndView();
HttpSession session = request.getSession();
Member member = (Member) session.getAttribute("member");
if(null == member) { // 로그인 안 되어있다면
mav.setViewName("redirect:/");
} else {
mav.addObject("member", member);
mav.setViewName("/member/removeForm");
}
return mav;
}
인터셉터
컨트롤러 실행 전/후에 특정 작업을 가능하게 하는 방법
리다이렉트를 사용해야 하는 경우가 많은 경우 HandlerInterceptor(Interface)를 이용할 수 있다.
preHandle
컨트롤러 시작 전에 작동
postHandle
컨트롤러 시작 후에 작동
afterCompletion
컨트롤러, 뷰 모두 작업 마치고나서 작동
MemberLoginInterceptor.java
HandlerInterceptorAdapter 클래스 : HandlerInterceptor 구현하는 클래스이며, 상속받아 사용한다.
public class MemberLoginInterceptor extends HandlerInterceptorAdapter {
// preHandle : 컨트롤러 시작 전에 작동
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {
HttpSession session = request.getSession(false);
if(session != null) {
Object obj = session.getAttribute("member");
if(obj != null)
return true; // 아래 코드 실행X
}
// null이라면
response.sendRedirect(request.getContextPath() + "/");
return false;
}
// postHandle : 컨트롤러 시작 후에 작동
@Override
public void postHandle(HttpServletRequest request,
HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
super.postHandle(request, response, handler, modelAndView);
}
// afterCompletion : 컨트롤러, 뷰 모두 작업 마치고나서 작동
@Override
public void afterCompletion(HttpServletRequest request,
HttpServletResponse response, Object handler, Exception ex)
throws Exception {
super.afterCompletion(request, response, handler, ex);
}
}
servlet-context.xml
<!-- 인터셉터 -->
<interceptors>
<interceptor>
<!-- 범위 -->
<mapping path="/member/modifyForm"/>
<mapping path="/member/removeForm"/>
<!--
<mapping path="/member/**"/> member의 하위경로 모두 인터셉터 적용하지만,
<exclude-mapping path="/member/joinForm"/> exclude-mapping path는 제외하겠다는 의미
<exclude-mapping path="/member/join"/>
<exclude-mapping path="/member/loginForm"/>
<exclude-mapping path="/member/login"/>
<exclude-mapping path="/member/logout"/>
<exclude-mapping path="/member/modify"/>
<exclude-mapping path="/member/remove"/>
-->
<beans:bean class="com.bs.lec21.member.MemberLoginInterceptor"/>
</interceptor>
</interceptors>
🙆♂️출처🙇♂️
자바 스프링 프레임워크(renew ver.) - 신입 프로그래머를 위한 강좌 - 인프런 | 강의
스프링 프레임워크 기본부터 실전 사용법까지! 충실하고 폭넓은 설명과 예제를 통해 현장에 바로 투입되어 활약하는 개발자로 거듭나세요., - 강의 소개 | 인프런...
www.inflearn.com
'Spring' 카테고리의 다른 글
[Spring] 빈 등록을 위한 어노테이션 @Bean, @Configuration, @Component 차이 및 비교 (0) | 2022.07.07 |
---|---|
@RequestParam("name")어노테이션과 @ModelAttribute 어노테이션 생략 (0) | 2022.06.15 |
세션, 쿠키 (0) | 2022.06.13 |
Controller 객체 구현 - 2 (0) | 2022.06.11 |
Controller 객체 구현 - 1 (0) | 2022.06.11 |
Comments