본문 바로가기

백엔드 개발/SpringMVC

쿠키란? 1. 쿠키가 하는 역할이 무엇일까? 특정 웹사이트에는 아이디 기억하기란 장치가 있다. 이는 한번 로그인 했으면 다음에 로그인 페이지를 재방문 했을 때, 해당 아이디가 미리 찍혀 있도록 하는 것이다. 개발자 도구를 통해 쿠키가 뭐 있나 확인해보면, id란 이름으로 쿠키가 들어있는 것을 알 수 있다. 앞에서 배웠다시피, HTTP는 상태 정보를 저장하지 않는다. 따라서 클라이언트는 연속적으로 온 두 요청이 같은 클라이언트에게서 온 것인지, 다른 클라이언트에게서 온 것인지 알 수 없다. 하지만 때때로 서버가 전 클라이언트의 행동을 기억해야만 처리할 수 있는 일이 있다. (ex - 로그인 후에만 할 수 있는 행동 등) 쿠키는 클라이언트를 식별하는 기술이다. 서버가 쿠키를 이용하면 클라이언트를 구별할 수 있다. 2.. 더보기
Redirect와 Forward에 대하여 1. 원리 (1) redirect a. 클라이언트가 특정 주소로 요청을 보냄. b. 근데 서버가 받아보니 해당 일은 해당 주소에서 처리할 수 없는 일임. c. 그래서 서버는 응답 메세지 Header에다가 상태코드 300(redirect 요청)과 함께 어디로 가야 이 일을 처리할 수 있는지 주소(location)를 같이 써서 다시 브라우저에게 보낸다. d. 브라우저가 자동으로 해당 주소로 재요청을 한다. (브라우저가 재요청 시 상단의 URL이 재요청된 주소로 바뀌어서 클라이언트도 재요청 하는 줄 알 수 있음.) e. 올바른 주소가 응답하여 클라이언트의 브라우저에 띄워진다. (이 때 이 자동요청은 오로지 GET 요청밖에 안된다. 따라서 클라이언트가 로그인 정보 쳐서 보냈다하더라도 redirect 되면 올바른.. 더보기
@RequestMapping More , 인코딩의 원리 1. @RequestingMapping more (1) RequestMethod가 다르면 같은 URL 주소를 가져도 된다. @RequestMapping만 하던 시절에는 매소드 간에 매핑 URL 주소가 같으면 에러가 났다. 하지만 @PostMapping과 @GetMapping은 서로 하는 작업이 다르기 때문에 URL 주소가 같아도 된다. @GET은 서버에서 정보를 얻어오는 거고, @Post는 정보를 서버의 데이터에 기록하는 것이다. (2)하나의 컨트롤 내 매소드 간에 동일한 주소는 @RequestMapping을 써 묶어줄 수 있다. @Contorller 밑, 클래스 이름 위에 @RequestMapping을 써서 중복되는 주소는 묶어줄 수 있다. 이러면 매소드 별로 매핑된 주소가 정말 적고, 무슨 일 하려는.. 더보기
@ 어노테이션 전문화, view Controller, Redirection 1. @ RequestMapping의 전문화 @RequestMapping으로 URL과 컨트롤러를 Mapping 해버리면 사용자는 GetMapping PostMapping 두 방법 다 사용하여 컨트롤러를 이용할 수 있다. 예를 들어 회원가입 시 GetMapping으로 스트링 쿼리에 회원 가입 내용을 다 적은 채 작성할 수도 있고, PostMapping으로 개인 정보는 전부 body에 넣어 기입 할 수 도 있다. 당연하지만, GetMapping으로 개인정보를 작성하면 브라우저에 노출되기 때문에 보안적으로 좋지 않다. 이와 같이 특정 상황에 대해 Getmapping 혹은 PostMapping으로만 컨트롤러와 브라우저가 Mapping 되게 하는 것이 가능하다. 이에 대해서 논해본다. (1) @ RequestMa.. 더보기
회원 가입 화면 작성하기 1. 회원 가입 화면 HTML 리뷰 Register 아이디 비밀번호 이름 이메일 생일 페이스북 카카오톡 인스타그램 회원 가입 하지만 해당 HTML에 값을 채워서 내보냈다고 해도 작동하지 않는다. 왜냐하면 해당 문서의 form 태그에 값을 보낼 목적지와 요청 API가 뭔지 하나도 안 썼기 때문이다. 이를 안 썼을 때 목적지의 default는 자기 자신이고 REST - API는 GET이 된다. 따라서 해당 내용을 써서 form 태그를 수정하다. 나는 요청 내용을 ch2의 registerinfo로 보낼 예정이다. 또한 GET 요청은 요청 내용이 스트링 쿼리로 브라우저에 적히는 게 싫다 따라서 바디가 있는 POST로 API 요청을 바꾸겠다. form 태그의 속성에는 onsumit이란 이벤트 등록 속성이 있다. .. 더보기
@ModelAttribute 와 WebDataBinder 1. @ModelAttribute (1)기능 @ModelAttribute가 붙어 있는 적용 대상을 자동으로 모델의 어트리뷰트로 넣어준다. (2) 적용 대상 a. Controller Method의 매개 변수 // 매개변수 앞에 붙는다. public String main(@ModelAttribute MyDate date, Model m) { /... } //public String main(@ModelAttribute("myDate") MyDate date, Model m) {/...} 밑의 주석도 위와 동일한 뜻이다. 어노테이션 뒤 ()에 Model 의 Key 값으로 쓰일 이름을 지정해 넣을 수 있다. 이는 생략 가능하며, 생략하면, 클래스의 첫글자를 소문자로 한 문자열이 Key 값이 된다. Model안에.. 더보기
@RequestParam과 컨트롤러 매개변수 깔끔정리하기 1. @RequestParam (1)@RequestParam 이란? 요청의 파라미터를 Mapping된 Method의 매개변수와 연결시키는 어노테이션 하지만 평소에 우리는 해당 어노테이션을 쓰지 않고 바로 매개변수를 적어도, 매소드가 작동했다. 그 이유는 @RequestParam 자체가 생략 가능하기 때문이다. 생략해도 Spring FrameWork가 자동으로 요청의 파라미터와 매소드의 매개변수를 연결시켜준다. (default: 쓰인 차례대로 1대1) (2) 구조 public String main2(@RequestParam(name="year", requried=false) String year) {...} // 연결할 매개 변수 옆에다가 쓰고, // @RequestParam(name="연결할 요청의 파라.. 더보기
JSP와 서블릿(4) 1. JSTL (1) JSTL 이란? JSP Standard Tag Library JSP에서 자바 코드 문을 태그 형태로 표현 한 것 (2) 필요한 이유? JSTL 안 쓰고 JSP에서 자바 코드 문 쓰는 기본 문법으로 쓸 경우 위와 같이 코드 문이랑, EL 문이랑, 그냥 문자열이랑 다 따로 나눠서 써야한다. 너무 복잡하다. 그래서 HTML 문 답게 자바코드든 EL이든 다 태그문법으로 쓸 수 있게 바꾼 것이다. (3) 코드 리뷰 ${i} ${status.count}. arr[${status.index}]=${elem} msg=${param.msg} msg= 메시지가 없습니다. 성인입니다. 성인이 아닙니다. 값이 유효하지 않습니다. Server time is (4) 스스로 써보기 ${i} msg=${para.. 더보기