Http 요청과 응답 [ HttpServletRequest , HttpServletResponse ]
WAS가 웹브라우져로부터 Servlet요청을 받으면
- 요청을 받을 때 전달 받은 정보를 HttpServletRequest객체를 생성하여 저장
- 웹브라우져에게 응답을 돌려줄 HttpServletResponse객체를 생성(빈 객체)
- 생성된 HttpServletRequest(정보가 저장된)와 HttpServletResponse(비어 있는)를 Servlet에게 전달
HttpServletRequest
- Http프로토콜의 request 정보를 서블릿에게 전달하기 위한 목적으로 사용
- Header정보, Parameter, Cookie, URI, URL 등의 정보를 읽어들이는 메소드를 가진 클래스
- Body의 Stream을 읽어들이는 메소드를 가지고 있음
HttpServletResponse
- Servlet은 HttpServletResponse객체에 Content Type, 응답코드, 응답 메시지등을 담아서 전송함
1. HttpServletRequest
URL -> HttpServletRequest 객체를 만든다. 요청한 정보를 담고 main() 메서드에 넘겨준다.
main() 매개변수를 HttpServletRequest request라고 적어주면 톰켓이 HttpServletRequest에 있는 객체를 만들고 URL에 정보를 매개변수에 넘겨준다.
public void main(HttpServletRequest reqeust){
}
Java YoilTeller 2021 10 1
배열을 만들어서 값을 담는다. 그 값을 args 에 넘겨주면
String year = args[0];
String month = args[1];
String day = args[2]; 로 값을 사용할 수 있게 된다.
즉 필요한 것을 메서드 안에 매개변수를 적어주면 톰켓은 그 정보를 넘겨준다.
* 로컬프로그램
package com.fastcampus.ch2;
import java.util.Calendar;
public class YoilTeller {
//년월일을 입력하면 요일을 알려주는 프로그램
//로컬프로그램
public static void main(String[] args) {
//1. 입력
String year = args[0];
String month = args[1];
String day = args[2];
int yyyy = Integer.parseInt(year);
int mm = Integer.parseInt(month);
int dd = Integer.parseInt(day);
// 2.작업
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. 출력
System.out.println(year + "년" + month + "월" + day + "일은");
System.out.println(yoil + "요일입니다.");
}
}
QueryString()
?year=2021&month=10&day=1
? 는 값을 전달할 때 사용한다. 물음표 뒤에는 추가 데이터를 보낼 수 있다.
QueryString 에는 name과 value 한 쌍으로 붙어있다. name 과 value 구분자는 = 이 된다.
& 구분자로 사용
String year = request.getParameter("year");
String month = reqeust.getParameter("month");
String day = request.getParameter("day");
getParameter("year");
year 해당하는 value인 "2021" 을 얻을 수 있다. QueryString 의 값은 문자열이기 때문에
-- > 이 값을 숫자로 얻기 위해서는 int yy = integer.parseint 를 사용한다.
name이 같을 경우
String[] yearArr = request.getParameterValues("year");
values 를 사용하여 name이 year인 값들을 String[] 배열로 받을 수 있다.
3. 로컬 -> 원격호출하기
HttpServletResponse
앞서 했던 코드의 로컬프로그램에서 원격프로그램으로 호출한다.
@Controller
public class YoilTeller {
//년월일을 입력하면 요일을 알려주는 프로그램
// public static void main(String[] args) {
@RequestMapping("/getYoil")
public void main(HttpServletRequest request) {
// 1. 입력
String year = request.getParameter("year");
String month = request.getParameter("month");
String day = request.getParameter("day");
@Controller 로 등록을 하고 @RequestMapping URL 연결을 하여 getYoil이라고 치면
아래의 코드가 구현된다.
주소창에 http://localhost:8080/ch2/getYoil?year=2021&month=10&day=1 이라는 값을 입력해주면
아래와 같이 Console 창에 값이 나타난다.
2021년10월1일은
토요일입니다.
HttpServletResponse
브라우저에 결과가 나타나게 하기 위해서 response 객체를 매개변수로 작성한다.
public void main(HttpServletRequest request, HttpServletResponse response) throws IOException
HttpServletResponse 을 적게되면 톰켓에서 제공한다. 이 것을 사용하여 브라우저로 출력할 수 있다.
브라우저에 결과를 주기위해 out 변수에 담아 출력을 할 수 있게 한다. 출력할때 utf -8로 인해 한글 깨짐을 방지한다.
출력
// 3. 출력
response.setContentType("text/html");
response.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter(); //response 객체에서 브라우저로 출력 스트림을 얻는다.
out.println(year + "년" + month + "월" + day + "일은");
out.println(yoil + "요일입니다.");
}
로컬 -> 원격호출
@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");
int yyyy = Integer.parseInt(year);
int mm = Integer.parseInt(month);
int dd = Integer.parseInt(day);
// 2.작업
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.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter(); //response 객체에서 브라우저로 출력 스트림을 얻는다.
out.println(year + "년" + month + "월" + day + "일은");
out.println(yoil + "요일입니다.");
}
}
'스프링' 카테고리의 다른 글
[서블릿과 JSP ] 3. URL 패턴 , EL표기 (0) | 2021.12.04 |
---|---|
[서블릿과 JSP ] 2 . 유효범위와 속성 (0) | 2021.12.01 |
서블릿과 JSP (변환과정, JSP기본객체) (0) | 2021.12.01 |
[스프링] AWS에 서버 구축하기 (0) | 2021.10.15 |
[스프링정석] 01.원격프로그램 실행 (0) | 2021.10.15 |