◎ 참고 서적 | Mastering Spring 5
[ 모델 속성 ]
모델에 오브젝트 넣는 방법 - 메소드
// 방법1
@ModelAttribute
public List<State> populateStateList(){
return stateService.findStates();
}
// 방법2
@ModelAttribute
public List<State> populateStateAndCountryList(){
model.addAttribute(반환값이 있는 메소드);
model.addAttribute(반환값이 있는 메소드);
}
여기서 return 받는 값이 모델에 넣는다.
방법 2를 사용하면 여러 개의 오브젝트를 모델에 넣을 수 있다.
[ 세션 속성 ]
- 세션 저장 방법
@Controller
@SessionAttributes("pinNo")
public class LoginController{
@RequestMapping(value="/login")
public String login(ModelMap model){
model.put("pinNo",로그인하면서 넘어온 데이터)
return "다음 뷰 url"
}
}
1.Class 에 Session에 등록할 key 이름을 pinNo으로 지정
2.Login 메소드에서 로그인하면서 넘어온 데이터를 model에 넣을 때 세션 key 명으로 지정하면 자동으로 세션 대화 상태로
저장됨
- 세션 불러오기
@Controller
public class LoginCheck{
@RequestMapping(value="/loginCheck")
public String loginCheck(ModelMap model){
String sessionValue = (String)model.get("pinNo");
return "다음 뷰 url"
}
}
- 세션 속성 제거 (★ 전체 세션 속성 과정 : 로그인 로그아웃 예제로)
// 세션 등록 컨트롤러와 메소드
@Controller
@SessionAttributes("pinNo")
public class LoginController{
@RequestMapping(value="/login")
public String login(ModelMap model){
model.put("pinNo",로그인하면서 넘어온 데이터)
return "다음 뷰 url"
}
}
// 세션 확인 컨트롤러와 메소드
@Controller
public class LoginCheck{
@RequestMapping(value="/loginCheck")
public String loginCheck(ModelMap model){
String sessionValue = (String)model.get("pinNo");
return "다음 뷰 url"
}
}
// 세션 제거 컨트롤러오 메소드
@Controller
public class LogOUT{
// 방법1
@RequestMapping(value="/logOut", method=RequestMtehod.GET)
public String logOut( 다른 인스턴스들 , WebRequest request, SessionStatus status){
status.setComplete();
request.removeAttribute("pinNo", WebRequest.SCOPE_SESSION);
return "다음 뷰 url"
}
// 방법2
@RequestMapping(value="/logOut", method=RequestMtehod.GET)
public String logOut( 다른 인스턴스들 , SessionAttributeStore store, SessionStatus status){
status.setComplete();
store.cleanupAttribute(request, "pinNo");
return "다음 뷰 url"
}
[ 예외처리 ]
(컨트롤러 전반)
- 예외 처리 컨트롤러
@ControllerAdvice
public Class ExceptionController{
private Log logger = LogFactory.getLog(ExceptionController.class);
@ExceptionHandler(value= Exception.class)
public ModelAndView handlerException
(HttpServletRequest request, Exception ex)
{
logger.error("Request" + request.getRequestURL()
+ " Threw an Exception", ex);
ModelAndView mav = new ModelAndView();
mav.addObject("Exception", ex);
mav.addObject("url", request.getRequestURL());
mav.setViewName("common/spring-mvc-error");
return mav;
}
}
- 예외 처리 뷰
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core %>
<%@page isErrorPAge="true"%>
<h1>Error Page</h1>
URL : ${url}
<BR/>
Exception: ${exception.message}
<c:forEach items="%{exception.stackTrace}"
var="exceptionStackTrace">
${exceptionStackTrace}
</c:forEach>
'spring framework' 카테고리의 다른 글
SpringMVC - #파일 업로드, 다운로드 (메이븐 이용) (0) | 2023.09.21 |
---|---|
스프링 프레임워크 #7 - 부트 스트랩 - 메이븐 설정, 단위테스트, 통합테스트 (0) | 2023.09.21 |
스프링 프레임워크 #5 Spring MVC 핵심 개념 (RequestMapping, 뷰 리졸버, 핸들러, 인터셉터) (0) | 2023.09.17 |
★스프링 프레임워크 #4 - Chapter03 : Spring MVC 실습, 유효성 검사, 예외 처리, 정규식 등 (0) | 2023.09.14 |
스프링 프레임워크 #3 - Chapter03 : Spring MVC (0) | 2023.09.13 |