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를 매개변수로 선언
    @GetMapping(...)
    public String method(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. HttpServletRequest request 매개변수 선언
    public String method ( HttpServletRequest request){

  2. WebUtils를 사용하여 쿠키 값 얻기
    String value = WebUtils.getCookie(request, "이름").getValue();
    }


AJAX( Asynchronous JavaScript & XML )

화면의 일부분을 갱신할 때

JSON을 사용하는 이유
: XML로 응답을 하면 더 많은 자원이 필요하다.

XML-많은 자원이 필요

JSON - XML보다 적은 요소로 데이터를 보낼 수 있다.
{msg : "메시지"}


@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의 설정으로 처리할 수도 있다.

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{
  
  @GetMapping(...)
  public String methodA() throws SQLException{
  	예외발생예상코드
  }
  
  @GetMapping(...)
  public String methodB() throws SQLException{
  	예외발생예상코드
  }
  
  @ExceptionHandler(SQLException.class)
  public ModelAndView exceptionMethod(SQLException se){
  	예외처리 코드 작성
  	ModelAndView mav = new ModelAndView("view명");
  	mav.setViewName("view명");
  	mav.addObject("이름","view페이지 전달할 예외의 정보);
  
  	return mav;
  }
}

0개의 댓글