본문 바로가기
반응형

🌈 백엔드/스프링 MVC16

바인딩 = 파라미터 수집 [1] 바인딩 (1) 바인딩 Binding 파라미터 수집 파라미터를 변환해서 처리해야하는 경우 파라미터 수집이 필요하다 (2) @InitBinder http://localhost/sample/student?name=aaa&age=10&title=h1&dueDate=2020-12-24 조회시 2020-12-24 를 Fri Jan 24 ...으로 변환하였다. (3) @DateTimeFormat [2] MVC의 모델 객체 (1) Model 컨트롤러에서 생성된 데이터를 JSP(view)에 담아서 전달하는 역할을 한다 mvc는 모델을 이용하여 데이터를 전달한다 컨트롤러에 전달된 데이터를 이용해서 추가적인 데이터를 가져와야할때 모델을 사용한다. 메서드의 파라미터를 모델 타입으로 선언하게 되면 자동으로 모델타입의 객.. 2023. 11. 27.
스프링_ WebDataBinder & 데이터검증 수정필요 / 데이터 검증 에러가 발생하였을때 에러의 상세 정보를 콘솔에 조회한다 day 값에 aa를 잘못 입력해보았다. 콘솔에 에러 정보가 조회된다 [1] Validator 검증기 (1) Validator 개요 객체를 검증하기 위한 인터페이스 객체 검증기 Validator 구현에 사용한다 컨트롤러 클래스 내에 검증하는 메서드를 구현했으나 검증을 하는 클래스를 별도로 만들어서 적용한다 (2) Validator 구성 인터페이스 메서드 1 : 검증이 가능한 객체인지 true 검증 메서드 2 : 객체를 검증하는 메서드 UserValidator 인터페이스 생성 supports 메서드 : 검증이 가능한 객체인지 참/거짓 확인 validate 메서드 : 검증하려는 객체 clazz가 User 타입인지 , 자손인지 찾는.. 2023. 8. 30.
스프링_ WebDataBinder & 데이터변환 [1] PropertyEditor 타입변환 (1) PropertyEditor 양방향 타입 변환에 관여한다 특정 타입이나 이름의 필드에 적용가능하다 인스턴스 변수를 사용한다 변환 : String -> 타입 , 타입 -> String (2) PropertyEditor 종류 디폴트 PropertyEditor : 스프링이 기본적으로 제공한다 커스텀 PropertyEditor : 사용자가 직접 구현한다. PropertyEditoerSupport를 상속하면 편리하다 PropertyEditoerSupport 가이드 org.springframework.beans.propertyeditors (Spring Framework 6.0.11 API) Property editor for any Number subclass su.. 2023. 8. 29.
스프링_DispatcherServlet [1] DispatcherServlet (1) DispatcherServlet 의 기능 파란색 박스는 DispatcherServlet을 왔다 갔다하며 정보를 전달해주는 것으로 요청-응답 사이에 필요한 절차를 수행한다 (2) DispatcherServlet 기본전략 전략패턴으로 사전에 정의된 메서드들이다. 필요하다면 변경도 가능하다 DispatcherServlet.class 내에 일련의 과정을 처리할수 있는 코드가 기재되어있다. 위의 요청-응답의 일련의 흐름을 코드로 파악할수 있다 (3) DispatcherServlet 주요 메서드 ↓ initStrategies(ApplicationContext context) 기본 전략 초기화 ↓ doService(HttpServletRequest request, Htt.. 2023. 8. 29.
스프링_예외처리 [1] 예외 처리 구조 (1) 예외 처리 절차 (2) 예외 처리시 필요한 도구 : jsp, controller , catcher 예외 원인 별 처리방법을 설정한 catcher 에러 발생시 보일수 있는 view 화면 (error.jsp) Model m에 ex 예외사항을 담을수 있을때 모델을 사용하지 않고 예외를 가지고 올때 예외를 발생시킨 동작을 실행한 컨트롤러 (3) 예외 처리하는 종류 try-catch 방법 @ExceptionHandler 공통 메서드 @ControllerAdvice 전역 예외 클래스 > @ExceptionHandler 공통 메서드 예외 종류별 뷰 설정 방법 SimpleMappingExceptionResolver 응답 상태 코드 별 뷰 설정 방법 error-page (4) 예외 발생시키.. 2023. 8. 28.
스프링_세션과 서버 부담 [1] 세션 서버 부담 (1)세션과 서버 부담 줄이기 방법 1. 세션이 필요없는 페이지를 구분한다 2. session= false라고 세션이 종료되는것이 아니라 새로운 session을 생성하지 않도록 하는것뿐이다 (2) session = false sessionScope와 pageContext.session은 사용이 불가하다 sessionScope.id를 pageContext.request.getSession(false).getAttribute(id)로 변경해야한다 (3) 세션을 시작해야하는 페이지 세션은 시작하면 계속 켜져있기 때문에 session = true, false 여부는 세션을 시작을 해야하는 처음이 중요하다 index.jsp 와 loginForm.jsp 에 추가한다 홈, 로그인 페이지에서는 .. 2023. 8. 28.
스프링_Session 세션 [1] Session 세션 (1) Session 세션 서로 관련된 요청을 쿠키를 이용하여 하나로 묶는 것 브라우저마다 개별저장소(session객체)를 가지고 있으며 개별저장소는 서버에 저장된다 로그인부터 로그아웃까지의 일련의 요청과 응답 과정 서버에 저장된다 서버에 저장되기 때문에 서버에 부담이 된다 서버에 저장되기 때문에 보안에 유리하다 서버간의 동기화가 필요하여 서버 다중화에는 불리하다 (2) 세션 생성과정 (3) 브라우저 별 세션 같은 id라도 브라우저가 다르면 쿠키가 다르기 때문에 브라우저별 세션도 다르다 (4) 세션 메서드 String getId() 세션 id를 반환한다 long getLastAccessedTime() 세션 내에서 최근 요청받은 시간을 반환한다 boolean isNew() 새로 .. 2023. 8. 25.
스프링_Redirect VS Forward 요청 응답 과정 [1] 응답과정 (1) redirect 첫번째 응답으로 상태코드 300이 뜨면서 다른 URL로 재요청을 해야한다는 응답을 하고 다른 URL : /ch2/login.jsp를 알려준다. 클라이언트의 브라우저는 자동으로 2번째 요청을 하게되고 알맞는 응답을 받게된다 (2) forward 다른 URL 요청을 응답하지 않고 Forward를 이용하여 login.jsp에 자동으로 요청메세지를 전달하여 최종 응답하게 한다 [2] 응답 view 과정 (1) 스프링 : RedirectView 회원가입화면에서 정보를 입력하여 다음화면인 register/save 을 요청했을때 DispatcherServlet이 받아서 응답을 처리하는 Controller에서 유효성검사를 했을때 실패했다면 그 전 화면인 register/add를 .. 2023. 8. 24.
스프링_URL매핑 + URL패턴 + URL 인코딩 [1] URL매핑 (1) RequestMapping 정의 /register/add 로 경로가 똑같은데 메서드가 다르기 때문에 충돌이 일어나지 않는다 (2) GetMapping / PostMapping 정의 (3) 혼합 @RequestMapping 에는 공통 주소 경로 @PostMapping 또는 @GetMapping 에는 마지막 경로를 넣는다 [2] URL 맵핑 패턴 우선순위 종류 설명 URL 패턴 매칭되는 URL 1순위 exact mapping 정확하게 매칭 /login/hello.do http://localhost/ch2/login/hello.do 2순위 path mapping 경로가 비슷할때 매칭 /login/* http://localhost/ch2/login/ http://localhost/ch2.. 2023. 8. 24.
스프링_ WebDataBinder [1] WebDataBinder (1) WebDataBinder 역할 1. 타입변환 2. 데이터 검증 (2) 역할 진행 구조 브라우저에 요청값으로 입력된 year, month, day는 Model에 String 타입으로 저장되고 year,month,day 는 MyDate 클래스의 매개변수로 date로 통합 적용되어 int 타입으로 개별 저장되었다. Model과 MyDate의 값이 WebDataBinder를 거쳐 타입 변환 작업을 거치고 각각의 값이 문제가 없는지 데이터 검증이 끝난뒤 BindingResult에 저장된다 2023. 8. 23.
반응형