컨트롤러 구현(3) - @CookieValue , @RequestHeader
2019. 11. 14. 23:48ㆍ🔴 Spring
300x250
- @CookieValue : 쿠키를 파라미터로 전달받음
<CookieController.java>
package com.bitcamp.mvc.member;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.CookieValue;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
@Controller
public class CookieController {
@RequestMapping("/cookie/makeForm")
public String getMakeForm() {
return "cookie/makeForm";
}
@RequestMapping("/cookie/makeCookie")
public String makeCookie(
@RequestParam(value = "cName", defaultValue = "none") String cookieName,
@RequestParam(value = "cValue", defaultValue = "none") String cookieValue,
HttpServletResponse response //응답 생성
) {
// 쿠키 생성
Cookie c = new Cookie(cookieName, cookieValue);
// 쿠키 전송
response.addCookie(c);
return "cookie/makeCookie";
}
@RequestMapping(value = "/cookie/viewCookie", method=RequestMethod.GET)
public String selectCookie() {
return "cookie/selectForm";
}
@RequestMapping(value = "/cookie/viewCookie", method=RequestMethod.POST)
public String viewCookie(
@CookieValue(value = "nickname", defaultValue = "none") String cValue,
** Cookie는 사용자가 결정하는 것이 아니라 개발자가 저장하는 것,
따라서 보통은 @CookieValue(value = "키") String 값 -> 키를 입력해서 값을 가져온다
@RequestParam(value = "cName", required = false) String cName,
HttpServletRequest request,
Model model
) {
//model.addAttribute("cName", "nickname");
//model.addAttribute("cValue", cValue);
Cookie[] cookies = request.getCookies();
for(int i=0; i<cookies.length; i++) {
if(cookies[i].getName().equals(cName)) {
model.addAttribute("cName",cName);
model.addAttribute("cValue",cookies[i].getValue());
}
}
return "cookie/viewCookie";
}
}
- @RequestHeader : HTTP 요청 헤더 값 → 메소드 파라미터로 전달받음
F12를 눌러 Network탭을 보면 Request Headers를 확인할 수 있다.
Referer 요청 헤더는 현재 요청된 페이지의 링크 이전의 웹 페이지 주소를 포함합니다. Referer 헤더는 사람들이 어디로부터 와서 방문 중인지를 인식할 수 있도록 해주며 해당 데이터는 예를 들어, 분석, 로깅, 혹은 캐싱 최적화에 사용될 수도 있습니다.
브라우저 → 서버로 페이지 요청 → REFERER라는 헤더값 설정해서 보냄 (요청한 페이지 정보)
접근제어 : 정상적인 경로를 통해서 처리하는 것인지 체크할 때 유용함
유저의 프라이버시에 관계됨, 리퍼러 정보를 송신하지 않게 설정한 브라우저도 있음
*** Referer 를 붙여주는 경우**
-
a 태그를 통한 이동
-
img 태그의 이미지 호출, script 태그, style 태그, iframe 요청
-
AJAX 의 요청, form 태그 요청
<HeaderController.java>
package com.bitcamp.mvc.member;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class HeaderController {
@RequestMapping("/header/getHeader")
public String getHeader(
@RequestHeader("referer") String referer,
Model model
) {
System.out.println(referer);
model.addAttribute("result", referer);
return "header/header";
}
}
<header.jsp>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>
header - referer : ${result }
</h1>
</body>
</html>
<li> <a href="<c:url value="/header/getHeader" />">/header/getHeader</a> </li>
index.jsp → http://localhost:9090/mvc/
hello.jsp → http://localhost:9090/mvc/hello
300x250
'🔴 Spring' 카테고리의 다른 글
MyBatis를 이용한 DAO구현 (0) | 2019.11.20 |
---|---|
MyBatis란? Spring + MyBatis 연동 (0) | 2019.11.20 |
컨트롤러 구현(2) - 커맨드 객체, @ModelAttribute (0) | 2019.11.14 |
컨트롤러 구현(1) - 핵심 어노테이션(@Controller, @RequestMapping, @RequestParam, @ModelAttribute) (1) | 2019.11.14 |
DispatcherServlet이란? (0) | 2019.11.14 |