Spring

    프론트 컨트롤러(공통 로직 처리)

    기존 서블릿은 URL이 맵핑된 메서드를 타고 로직을 처리공통으로 써야될 코드가 있다면 맵핑된 모든 URL의 메서드들이 그 코드를 써야함이 공통 로직을 서블릿이 받기전 FrontController 라는 객체가 받아서 먼저 처리이때 FrontController 는 서블릿 컨테이너가 맵핑시킨 서블릿의 URL과 Method 타입(GET, POST)을 처리해야함인증, 보안, 다국어 처리 등이 대표적addMapping 메서드의 URL 패턴을 모든 경로로 바꿈요청 객체에서 URI와 Method를 가져옴상황에 맞는 서비스 로직을 처리하고 결과를 return맵핑 : 어떠한 URL과 Method로 구분을 하여 어떤 컨트롤러가 수행될 건지 결정하는 역할바인딩 : 웹 요청이 들어올시에 웹 기술 대신 자바코드만 이용하여 로직을..

    응답 클래스 분리 (서비스의 정책)

    클라이언트에서 title을 10글자씩만 달라고 했을시 엔티티에서 getter 메서드를 통해 10글자만 return 할수 있다. @Entity @NoArgsConstructor(access = AccessLevel.PUBLIC) @Getter public class Post { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String title; @Lob private String content; @Builder public Post(String title, String content) { this.title = title; this.content = content; } public String getTit..

    [Spring/스프링] @RequestBody

    @RequestBody 를 사용하면 Http 메시지 바디 정보를 편리하게 조회. (헤더 정보가 필요하면 @RequestHeader를 사용) 메시지 바디를 직접 조회하는 기능은 요청 파리미터를 조회 하는 @RqeustParam, @ModelAttribute와는 전혀 관계 없음 @RequestBody는 생략 불가능 String, int, Integer 같은 단순 타입 = @ReqeustParam 나머지는 @ModelAttribute @RequestBody 생략시 @ModelAttribute가 적용되어서 Test test -> @ModelAttribute Test test 따라서 생략하면 HTTP 메세지 바디가 아니라 요청 파리미터를 처리

    [Spring/스프링] HTTP 메시지 - 요청 메시지

    HTTP 요청 메시지 - GET (요청 메서드) 서버에게 리소스를 요청해서 얻어옴 바디는 없고 쿼리스트링으로 데이터를 보낼수 있음 쿼리스트링 - year=2021&month=10&day=1 Read (리소스 얻어오기) Header GET/ch2/getYoil?year=2021&month=10&day=1 HTTP/1.1 (요청라인, request line) Host: 111.22.33.44:8080 User-Agent: Mozilla/5.0 (Windows NT 10.0) Accept : text/html Connection: keep-alive —-빈줄 - 헤더, 바디 구분—- body 없음 HTTP 요청 메시지 - POST (요청 메서드) 서버에 전송할 data - year=2021&month=10&d..

    [Spring/스프링] HTTP 메시지 - 응답 메시지

    Header (상태라인)HTTP/1.1 200 OK —> 상태코드 : 200 , 설명: OK Content-Length : 44 (헤더) Content-Type : text/html (헤더) Date : Wen, 04 May 2022 12:34:01 GMT (헤더) —-빈줄 - 헤더 바디 구분줄— Body Hello 상태코드 1xx (정보): 요청을 받았으며 프로세스를 계속한다 (정보 교환이 목적) 2xx (성공): 요청을 성공적으로 받았으며 인식했고 수용하였다 3xx (리다이렉션): 요청 완료를 위해 추가 작업 조치가 필요하다 (다른 URL 요청) 4xx (클라이언트 오류): 요청의 문법이 잘못되었거나 요청을 처리할 수 없다 (Client Error) 5xx (서버 오류): 서버가 명백히 유효한 요청에..

    [Spring/스프링] Cookie

    이름과 값의 쌍으로 구성된 작은 정보. 아스키 문자만 가능. id = test 아이디와 아이디의 값 이름과 값으로 저장. (name = id, value = test) 도메인 정보나 ( Domain : test.co.kr ) path ( path: /test/login ) 그리고 유효기간 ( Max-Age : 60 * 60 24 ) 등이 저장 되어 있다. 서버에서 생성 후 전송, 브라우저에 저장. 유효기간 이후 자동 삭제. 서버에 요청시 domain, path가 일치하는 경우에만 자동 전송. ( 하위 경로 포함 ) 클라이언트가 서버에 요청 ( test.co.kr 로 요청시 ) 서버가 밑의 코드를 수행, Cookie cookie = new Cookie("id", "testId"); response.addC..

    [Spring/스프링] redirect , forward

    redirect /test/writeTest.jsp 를 요청 writeTest.jsp 가 응답하면서 상태코드 300번대를 전송.(바디가 없고 헤더만 있음) 헤더에 Location 정보 (Location: /test/loginTest.jsp) 를 주면 브라우저가 자동으로 새로운 요청을 보냄. writeTest.jsp 의 request 객체와 loginTest.jsp 의 request 객체는 같지 않음. (요청과 응답이 2번) forward /test/writeTest.jsp 를 요청. writeTest.jsp 가 자기가 처리해야할게 아니라면, writeTest.jsp 에게 본인이 받은 request 객체를 loginTest.jsp에게 그대로 전달. (response 또한 전달) loginTest.jsp 가..

    [Spring/스프링] servlet-context.xml - <view-controller/>

    servlet-context.xml 은 웹 관련 설정. servlet-context.xml 안에 (GET 요청만 허용) 태그에 밑에와 같이 적어주면 밑에 코드와 같이 GetMapping 메서드 에서 하는 일을 똑같이 실행한다. @GetMapping("/register/add") public String register() { return "registerForm"; } jsp 파일 (화면)을 보여주기만 하는 메서드이기 때문에 servlet-context에 적어준다면 메서드가 사라질뿐만 아니라 유지보수도 편리하다.