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 |
Tags
- 추상메서드
- 제네릭
- 다형성
- 예외미루기
- exception
- EnhancedFor
- 생성자오버로드
- abstract
- 오라클
- 예외처리
- GRANT VIEW
- 메소드오버로딩
- 집합_SET
- 대덕인재개발원
- 정수형타입
- NestedFor
- 어윈 사용법
- 컬렉션프레임워크
- 자바
- 참조형변수
- 자동차수리시스템
- 사용자예외클래스생성
- 인터페이스
- 컬렉션 타입
- 환경설정
- 한국건설관리시스템
- Java
- oracle
- cursor문
- 객체 비교
Archives
- Today
- Total
거니의 velog
(9) 인터셉터 사용하기 본문
* 이전에 구현했던 회원 기능에 이어서 인터셉터를 구현해 보자. 브라우저의 요청명을 인터셉터가 처리한 후 타일즈로 보낼 뷰이름을 가져오는 실습이다.
(1) 인터셉터 구현하기
* 인터셉터 기능은 프로젝트를 생성할 때 라이브러리에서 기본적으로 제공하므로 build.gradle이나 application.properties에는 따로 추가할 내용이 없다.
1. common.interceptor 패키지를 만들고 이전에 실습한 ViewNameInterceptor.java를 복사해 붙여 넣는다.
2. 인터셉트 설정 클래스인 IntercrptorConfig.java를 다음과 같이 구현한다.
package com.myboot03.common.inteceptor;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
@Configuration
public class InterceptorConfig extends WebMvcConfigurerAdapter { // WebMvcConfigurerAdapter를 상속받는다.
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new ViewNameInterceptor())
.addPathPatterns("/*.do")
.addPathPatterns("/*/*.do") // 1단계, 2단계 요청에 대해 모두 인터셉터를 적용한다.
.excludePathPatterns("/users/login"); // /users/login 요청에 대해서는 인터셉터 요청을 적용하지 않는다.
}
}
3. 이제는 뷰이름을 일일이 지정할 필요 없이 request에서 getAttribute() 메서드로 뷰이름을 가져와 바로 타일즈로 전달한다.
[MemberControllerImpl.java]
package com.myboot03.member.controller;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import com.myboot03.member.service.MemberService;
import com.myboot03.member.vo.MemberVO;
@Controller("memberController")
public class MemberControllerImpl implements MemberController {
@Autowired
private MemberService memberService;
@Autowired
private MemberVO memberVO;
@Override
@RequestMapping(value = "/member/listMembers.do", method = RequestMethod.GET)
public ModelAndView listMembers(HttpServletRequest request, HttpServletResponse response) throws Exception {
// public String listMembers(HttpServletRequest request, HttpServletResponse
// response) throws Exception {
String viewName = (String)request.getAttribute("viewName"); // 인터셉터에서 전달된 뷰이름을 가져온다.
List membersList = memberService.listMembers();
ModelAndView mav = new ModelAndView(viewName);
//ModelAndView mav = new ModelAndView("/member/listMembers"); // 뷰이름을 직접 지정하지 않아도 된다.
mav.addObject("membersList", membersList);
return mav;
}
@Override
@RequestMapping(value = "/member/addMember.do", method = RequestMethod.POST)
public ModelAndView addMember(@ModelAttribute("member") MemberVO member, HttpServletRequest request,
HttpServletResponse response) throws Exception {
request.setCharacterEncoding("utf-8");
int result = 0;
result = memberService.addMember(member);
ModelAndView mav = new ModelAndView("redirect:/member/listMembers.do");
return mav;
}
@Override
@RequestMapping(value = "/member/removeMember.do", method = RequestMethod.GET)
public ModelAndView removeMember(@RequestParam("id") String id, HttpServletRequest request,
HttpServletResponse response) throws Exception {
request.setCharacterEncoding("utf-8");
memberService.removeMember(id);
ModelAndView mav = new ModelAndView("redirect:/member/listMembers.do");
return mav;
}
@Override
@RequestMapping(value = "/member/login.do", method = RequestMethod.POST)
public ModelAndView login(@ModelAttribute("member") MemberVO member, RedirectAttributes rAttr,
HttpServletRequest request, HttpServletResponse response) throws Exception {
ModelAndView mav = new ModelAndView();
memberVO = memberService.login(member);
if (memberVO != null) {
HttpSession session = request.getSession();
session.setAttribute("member", memberVO);
session.setAttribute("isLogOn", true);
String action = (String) session.getAttribute("action");
session.removeAttribute("action");
if (action != null) {
mav.setViewName("redirect:" + action);
} else {
mav.setViewName("redirect:/member/listMembers.do");
}
} else {
rAttr.addAttribute("result", "loginFailed");
mav.setViewName("redirect:/member/loginForm.do");
}
return mav;
}
@Override
@RequestMapping(value = "/member/logout.do", method = RequestMethod.GET)
public ModelAndView logout(HttpServletRequest request, HttpServletResponse response) throws Exception {
HttpSession session = request.getSession();
session.removeAttribute("member");
session.setAttribute("isLogOn", false);
ModelAndView mav = new ModelAndView();
mav.setViewName("redirect:/member/listMembers.do");
return mav;
}
@RequestMapping(value = "/member/*Form.do", method = RequestMethod.GET)
private ModelAndView form(@RequestParam(value = "result", required = false) String result,
@RequestParam(value = "action", required = false) String action, HttpServletRequest request,
HttpServletResponse response) throws Exception {
String viewName = (String) request.getAttribute("viewName");
HttpSession session = request.getSession();
session.setAttribute("action", action);
ModelAndView mav = new ModelAndView();
mav.addObject("result", result);
mav.setViewName(viewName);
return mav;
}
@RequestMapping(value = { "/", "/main.do" }, method = RequestMethod.GET)
private ModelAndView main(HttpServletRequest request, HttpServletResponse response) {
String viewName = (String) request.getAttribute("viewName");
ModelAndView mav = new ModelAndView();
mav.setViewName(viewName);
return mav;
}
}
4. 프로젝트를 실행하고 다음 주소로 요청하여 결과를 확인한다.
- http://localhost:8090/member/listMembers.do
* 앞에서 배운 기능을 이용해 이전에 만든 게시판 기능은 여러분이 직접 구현해 보기 바란다. 더 나아가 쇼핑몰 기능도 스프링 부트에서 구현해 보기 바란다.
* 지금까지 JSP부터 스프링 부트까지 살펴봤다. 워낙 내용이 방대한 분야라 세부적인 내용을 다루지 못한 면도 있다. 그것은 이 내용을 바탕으로 여러분이 직접 살을 붙여나가길 바란다.
'Java_Spring Boot' 카테고리의 다른 글
(8) 타일즈 사용하기 (0) | 2023.11.28 |
---|---|
(7) 마이바티스 사용하기 (2) | 2023.11.28 |
(6) 그레이들 이용해 스프링 부트 실습하기 (0) | 2023.11.27 |
(5) 스프링 부트 웹 페이지 만들기 (0) | 2023.11.27 |
(4) 스프링 부트 프로젝트 실행하기 (0) | 2023.11.27 |