2024.06.11

김무영·2024년 6월 11일

WebUtils를 사용한 세션 값 설정, 값얻기

  • session과 cookie를 쉽게 사용하기위해서 제공하는 interface
  • org.springframework.web.util 패키지에서 제공하는 abstract 클래스.
  • 사용법 )
    1. HttpServletRequest를 매개변수로 선언
      @GetMapping(...)
      public String method(HttpServletRequest request){
    2. WebUtils의 method 호출
      • 세션에 값 설정
        WebUtils.setSessionAttribute(request,"이름",);
      • 세션에 값 얻기
        WebUtils.getSessionAttribute(request,"이름");
  • 접속자의 정보를 접속자 HDD에 File로 저장하는 기술.(문자열만 저장가능)
  • @CookieValue annotation을 사용, WebUtils.getCookie()
  • 쿠키심기
    • 기존의 코드를 그대로 사용.
      1. HttpServletResponse를 매개변수로 선언
        public String mehtod( HttpServletResponse response ){
      2. 쿠키 생성
        Cookie cookie = new Cookie("이름","값");
      3. 생존시간 설정
        cookie.setMaxAge();
      4. 쿠키 심기
        response.addCookie( cookie )
  • 쿠키 값 얻기
    • annotation사용 (method의 매개변수 앞에 선언)

    • 사용법)

      @CookieValue(value="쿠키의이름", defaultValue="쿠키가 없을 때 설정될 값")
      
      @GetMapping(...)
      public String method(@CookieValue(value="이름",defaultValue="기본값") String name)
  • WebUtils사용
    1. HttpServletResponse를 매개변수로 선언
      public String method( HttpServletResponse request){
    2. WebUtils를 사용하여 쿠키 값 얻기
      String value=WebUtils.getCookie(request,"이름").getValue();

AJAX(Asynchronous JavaScript & XML)

  • 화면 일부분을 갱신하여 보여줄 때

@ResponseBody

  • 응답 JSP없이 Controller에서 발생한 데이터를 접속자에게 그대로 응답할 때 사용하는 annotation -> JSP를 만들 필요가 없다.!
  • 사용법 )
    • method 위에 @ResponseBody 정의
  • 응답되는 한글이 깨진다면 @RequestMapping에 produces="application/json;charset=UTF-8" 선언
    @RequestMapping(value="요청URL",method=GET,produces="application/json;charset=UTF-8")

@ExceptionHandler

  • Controller method에서 예외가 발생되고, throws로 예외가 던져지면 DispatcherServlet이 예외를 잡아서 처리한다.

    • 개발자는 예외가 발생한 이후에 페이지를 지정할 수 없다.(개발자가 호출한 것이 아니기 때문에)
    • 문제 : 예외 메시지가 그대로 노출된다. : DD의 <error-page>설정으로 처리할 수도 있다.
  • Controller안에서 다른 method의 예외를 처리할 수 있는 method를 정의할 때 사용

  • 사용법 )

    1. 예외를 throws 하는 요청 method를 정의한다.
      • 예외 처리 method
        1. @ExceptionHandler(예외처리클래스.class)를 method위에 선언
        2. method의 매개변수로 예외처리클래스를 선언.
        3. method안에서 예외가 발생했을 때 처리할 코드를 기술.
        4. ModelAndView를 생성하여 예외처리객체와 view페이지명을 설정하여 반환.
  • 같은 종류의 예외를 여러 method에서 발생하더라도 하나의 @ExceptionHandler를 정의 method로 통합되어 처리된다.

    @Controller
    public class TestController(){
    		//요청 method가 달라도 하나의 처리 method로 통합되어 예외가 처리된다.
        @GetMapping(...)
        public String methodA() throws SQLException{
            예외발생예상코드
        }//methodA
    
        @GetMapping(...)
        public String methodB() throws SQLException{
            예외발생예상코드
        }//methodB
    
        @ExceptionHandler(SQLException.class)
        //@ExceptionHandler에 정의된 예외만 잡고 다른예외는 잡지않는다.
        //ExceptionHandler에 정의된 예외는 DispatcherServlet에서 잡지 않는다.
        public ModelAndView exceptionMethod(SQLException se){
            예외처리코드
            ModelAndView mav = new ModelAndView();
            //ModelAndView는 예외처리할때 아니면 잘 사용하지 않는다.
            mav.setViewName("view명");
            mav.addObject("이름",view페이지 전달할 예외의 정보);
    
            return mav;
        }
    }

0개의 댓글