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

+ Recent posts