반응형
HTTP 요청과 응답
1. 프로토콜이란
서로간의 통신을 위한 약속규칙
주고받을 데이터에 대한 형식을 정의
2. HTTP ( Hyper Text Transfer Protocol )
단순하고 읽기 쉽다. - 텍스트 기반의 프로토콜
상태를 유지하지 않는다. - 클라이언트 정보를 저장하지 않음
3. HTTP 응답 메세지
HTTP/1.1 200 OK // 상태라인 1xx : Informational, 2xx : Success, 3xx : Redirect 4xx : Client Error, 5xx : Server Error
Content-Length : 44
Content-Type : text/html
Data : Sat, 20 Oct 2021 19:03:38 GMT
<html>
<head></head>
<body>
Hello
</body>
</html>
GET | POST |
서버의 리소스를 가져오기 위해 설계 Query String을 통해 데이터를 전달 ( 소용량 ) URL에 대이터가 노출되므로 보안에 취약 데이터 공유에 유리 ex) 검색엔진에서 검색단어 전송에 이용 |
서버에 데이터를 올리기 위해 설계 전송 데이터 크기의 제한이 없음 데이터를 요청 메세지의 body에 담아 전송 보안에 유리, 데이터 공유에는 불리 |
Postman 설치
값을 적어주면 알아서 query string 을 생성해준다
Post headers
body에 query string이 찍힌 모습
텍스트 파일 vs 바이너리 파일
바이너리 파일
- 데이터를 있는 그대로 읽고 쓴다
텍스트 파일
- 숫자를 문자로 변환 후 사용
파일종류 | 쓰기 | 읽기 |
바이너리 | 문자 >> 문자 숫자 >> 숫자 |
문자 >> 문자 숫자 >> 숫자 |
텍스트 | 문자 >> 문자 숫자 >> 문자 |
문자 >> 문자 문자 >> 숫자 |
MIME ( Multipurpose Internet Mail Extensions )
텍스트 기반 프로토콜에 바이너리 데이터를 전종하기 위해 고안됨
Http의 Content-Type 헤더에 사용. 데이터 타입을 명시함
타입 | 설명 | MIME 타입 ( 타입 / 서브타입 ) |
text | 텍스트를 포함하는 모든문서 | text/plain, tetx/html, text/css, text/javascript |
image | 모든 종류의 이미지 | image/bmp, image/webp |
audio | 모든 종류의 오디오 파일 | audio/midi, audio/mpeg, audio/webm, audio/ogg, audio/wav |
video | 모든 종류의 비디오 파일 | video/webm, video/ogg |
application | 모든 종류의 이진 데이터 | application/pdf ..... |
관심사의 분리, MVC 패턴
컨트롤러 메서드의 반환 타입
[String] 뷰 이름을 반환
@RequestMapping("/getYoil")
public String main(int year, int month, int day) {
.
.
.
return "yoil" // WEB-INF/views/yoil.jsp
}
[void] 맵핑된 url의 끝 단어가 뷰 이름
@RequestMapping("/yoil") // WEB-INF/views/yoil.jsp
public void main(int year, int month, int day, Model model) {
.
.
.
}
[ModelAndView] Model과 뷰 이름을 반환
@RequestMapping("/getYoilMVC")
public ModelAndView main(int year, int month, int day) throws IOException {
//1.ModelAndView를 생성하고, 기본 뷰를 지정
ModelAndView mv = new ModelAndView();
//2. 작업
char yoil = getYoil(year, month, day);
//3. 결과 ModelAndView에 저
mv.addObject("year", year);
mv.addObject("month", month);
mv.addObject("day", day);
mv.addObject("yoil", yoil);
//4. 작업 결과 보여줄 뷰의 이름 지정
mv.setViewName("yoil");
//5. ModelAndVie 반환
return mv;
}
private boolean isValid(int year, int month, int day) {
return true;
}
private char getYoil(int year, int month, int day) {
Calendar cal = Calendar.getInstance();
cal.set(year, month - 1, day);
int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
return " 일월화수목금토".charAt(dayOfWeek);
}
반응형
'Spring' 카테고리의 다른 글
[스프링의 정석] Transaction, Commit, Rollback (0) | 2023.04.21 |
---|---|
[스프링의 정석] Spring DI 활용하기 / @annotation (0) | 2023.04.19 |
[스프링의 정석] Spring DI 흉내내기 (0) | 2023.04.18 |
[스프링의 정석] 예외 (0) | 2023.04.17 |
Spring MVC Project / 개발환경 설정 (0) | 2023.04.06 |