학습하며 정리한 내용을 올리는 것이니, 참고용으로만 봐 주시길 바랍니다.
자바 스프링 프레임워크(renew ver.) - 신입 프로그래머를 위한 강좌
세션 & 쿠키
- 세션 생성
public String memLogin(Member member, HttpServletRequest request) {
...
HttpSession session = request.getSession();
session.setAttribute("member", mem);
return "/member/loginOk";
}
public String memLogin(Member member, HttpSession session) {
...
session.setAttribute("member", mem);
return "/member/loginOk";
}
1.1 세션 회원정보 수정
public ModelAndView modifyForm(HttpServletRequest request) {
HttpSession session = request.getSession();
Member member = session.getAttribute("member");
ModelAndView mav = new ModelAndView();
mav.addObject("member", service.memberSearch(member));
...
- 세션 삭제
public String memLogout(Member member, HttpSession session) {
...
session.invalidate();
return "/member/logout ";
}
세션 주요 메소드
getId()
: 세션 ID 반환setAttribute()
: 세션 객체에 속성을 저장getAttribute()
: 세션 객체에 저장된 속성을 반환removeAttribute()
: 세션 객체에 저장된 속성 제거setMaxInactiveInterval()
: 세션 객체의 유지 시간 설정- `get
~ invalidate()
: 세션 객체의 모든 정보삭제
- 쿠키 생성
public String mallMain(Mall mall, HttpServletResponse) {
Cookie genderCookie = new Cookie("gende", mall.getGender());
if (mall.isCookieDel()) {
genderCookie.setMaxAge(0);
mall.setGender(null);
} else {
genderCookie.setMaxAge(60 * 60);
}
response.addCookie(genderCookie);
return "/mall/main";
- 쿠키 사용
@public String mallIndex(Mall mall, @CookieValue(value="gende", required=false) Cookie genderCookie, HttpServletRequest request) {
if (genderCookie != null)
mall.setGender(genderCookie.getValue());
return "/mall/index";
}
}
리다이렉트 & 인터셉터
리다이렉트
: reutrn "redirect:/page";
:
public ModelAndView removeForm(HttpServletRequest request) {
ModelAndView mav = new ModelAndView();
...
if (null == member) {
mav.setViewName("redirect:/");
} else {
mav.addObject("member", member);
mav.setViewName("/member/removeForm");
}
return mav;
}
인터셉터
: 리다이렉트를 사용해야 하는 경우가 많을 때 HandlerInterceptor
를 이용할 수 있다.
--------------- ###########################
--------------- # ------ Request -------- #
--------------- ###########################
--------------------------- |
--------------- ###########################
--------------- #--- DispatcherServlet ---#
--------------- ###########################
--------------------------- |
#######################################################
#---------- HandlerInterceptor(인터페이스) ------------#
#-----------------------------------------------------#
# PreHandle()------PostHandler()-----afterCompletion()#
#######################################################
------ | -------------- ^ ----- | --------- ^
------ | -------------- | ----- | --------- |
--- ######################## -- | --------- |
--- # Handler(Controller) # -- | --------- |
--- ######################## -- | #####################
------------------------------- ㄴ># ------ View ----- #
---------------------------------- #####################
#######################################################
# ---------------------- Response ------------------- #
#######################################################
preHandle()
: Controller가 작업하기 전 작업한다. 리다이렉트를 대체 가능하다. 주로 쓰인다.postHandle()
: Controller가 작업한 후 작업한다.afterCompletion()
: Controller 와 View가 작업한 후에 작업한다.
: 주로 HandlerInterceptor
인터페이스를 구현하기 보다는, 이들이 구현되어 있는 HandlerInterceptorAdapter
클래스를 상속받아 사용한다.
public class MemberLoginInterceptor extends HandlerInterceptorAdaptor {
@Override
public bollean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
HpptSession session = request.getSession(false);
if (session != null) {
return true;
}
response.sendRedirect(request.getContextPath() + "/"); // main 페이지로 보낸다
return false;
}
}
// servlet-context.xml
// 스프링 설정파일
<interceptors>
<interceptor>
<mapping path="/member/modifyForm" /> //
<mapping path="/member/removeForm" /> // 이곳으로 요청이 들어왔을 때
<beans:bean class="com.bs.lec21.member.MemberLoginInterceptor" /> // 이 인터셉터가 동작을 해라
</interceptor>
</interceptors>
<mapping path="/member/**" /> // 멤버 하위의 모든 경로에 대해 동작을 하는데
<exclude-mapping path="/member/joinForm" /> // 여기는 제외해라
<exclude-mapping path="/member/join" />
<exclude-mapping path="/member/login" />
'Backend > Spring' 카테고리의 다른 글
Spring - 데이터베이스 (0) | 2021.02.14 |
---|---|
Spring - MVC (0) | 2021.02.04 |
Spring - 스프링 컨테이너의 생성관련 (0) | 2021.02.02 |
Spring - Bean과 의존객체 주입 (0) | 2021.02.01 |
Spring - Dependency Injection (0) | 2021.01.31 |