HTTP 요청과 응답
1. HttpServletRequest
브라우저를 통해서 URL로 요청을 하면 서버에 있는 톰캣이 객체에 저장한다.
메서드의 매개변수로 저장한다.
HttpServletRequest를 통해서 request로 받아들인다.
원하는 정보를 매개변수(HttpServletRequest)를 통해서 얻을 수 있다.
2. HttpServletRequest의 메소드
메소드 | 설명 |
---|---|
getCharacterEncoding() | 요청 내용의 인코딩 |
getContentLength() | 요청 내용의 길이. 알수 없을 때는 -1 |
getContentType() | 요청 내용의 타입. 알 수 없을 때는 null |
getMethod() | 요청 방법 |
getProtocol() | 프로토콜의 종류와 버젼 HTTP/1.1 |
getScheme() | 프로토콜 |
getServerName() | 서버 이름 또는 ip주소 |
getServerPort() | 서버 포트 |
getRequestURL() | 요청 URL |
getRequestURI() | 요청 URI |
getContextPath() | context path |
getServletPath() | servlet path |
getQueryString() | 쿼리 스트링 |
getLocalName() | 로컬 이름 |
getLocalPort() | 로컬 포트 |
getRemoteAddr() | 원격 ip주소 |
getRemoteHost() | 원격 호스트 또는 ip주소 |
getRemotePort() | 원격 포트 |
[YoilTeller.java]
package com.fastcampus.ch2;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Calendar;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
// 날짜 연월일을 입력하면, 날짜를 말해주는 프로그램
@Controller // Controller 를 통해서, 로컬프로그램을 원격프로그램으로 변경
public class YoilTeller {
// public static void main(String[] args) {
@RequestMapping("/getYoil")
public void main(HttpServletRequest request, HttpServletResponse response) throws IOException{
// 1. 입력
String year = request.getParameter("year");
String month = request.getParameter("month");
String day = request.getParameter("day");
// 2. 작업
int yyyy = Integer.parseInt(year);
int mm = Integer.parseInt(month);
int dd = Integer.parseInt(day);
Calendar cal = Calendar.getInstance();
cal.set(yyyy, mm - 1, dd);
int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK); // 1 = 일, 2 = 월 ...
char yoil = "일월화수목금토".charAt(dayOfWeek);
// 3. 출력
response.setContentType("text/html"); // response 객체 형식을 적어야한다. 즉, 출력할 내용의 타입을 적어야한다.
response.setCharacterEncoding("UTF-8"); // 텍스트도 인코딩을 해야지 한글이 깨지지 않는다.
PrintWriter out = response.getWriter(); // response객체에서 브라우져로의 출력 스트림을 얻는다.
out.println(year + "년" + month + "월" + day + "일은 ");
// 원래 제대로 하려면 HTML 형식을 갖춰서 해야한다.
out.println(yoil + "요일입니다.");
}
}
getQueryString()
문자열은 전부 스트링이다.
값을 전달할 때 사용한다.
쿼리스트링의 값을 읽으려면, getParameter() 메소드를 써야한다.
?year=2021&month=10&day=1 // 이 값을 기준
// getParameter - 제일 많이 쓰인다.
String year = request.getParameter("year"); // 2021
String month = request.getParameter("month"); // 10
String day = request.getParameter("day"); // 1
Enumeration enum = request.getParameterNames(); // 이름만 갖고 오는 것 (year, month, day)
// Enumeration(Old Version)은 Iterator(New Version)와 같은 것이다.
Map paramMap = request.getParameterMap(); // Map 형태로 가져오는 것 (표 형태랑 비슷하다고 생각하면 된다.)
[위의 것을 Map 형태로 받았을 때]
key | value |
---|---|
"year" | "2021" |
"month" | "10" |
"day" | "1" |
getQueryString() 메소드를 사용할 때, name들이 같을 때
getParameterValues를 사용한다.
String[] yearArr = request.getParameterValues("year")
[getParameterValues 사용 시]
yearArr 참조변수로 Str[]을 다룰 수 있다.
Str[] |
---|
"2021" |
"2022" |
"2023" |
'etc' 카테고리의 다른 글
PowerMockup (0) | 2023.06.05 |
---|---|
디자인 패턴과 프레임워크 (0) | 2023.02.02 |
JSON (0) | 2022.12.26 |
HTTP (0) | 2022.08.21 |
클라이언트와 서버 (0) | 2022.08.18 |