본문 바로가기
Spring

1-3. 콘솔이 아닌 브라우저에 출력하기

by 지지 2022. 1. 30.

이번엔 내가 출력하고자 하는 값을 이클립스 콘솔이 아닌 웹 브라우저에 출력해보자.

아직 jsp와 연동해서 출력하는 것이 아닌 PrintWriter객체를 활용하여 출력해볼거다.


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
public class YoilTeller {
	
	@RequestMapping("/getYoil")
	public void main(HttpServletRequest request, HttpServletResponse response) throws IOException {
		//HttpServletRequest : 서버에서 파라미터를 받겠다.
		//HttpServletResponse : 브라우저에 출력 할 때!
		
		//1. 입력
		String year = request.getParameter("year"); //파라미터는 웹(서버)에서 넘겨준다
		String month = request.getParameter("month"); //ex) http://localhost:9000/ch2/getYoil?year=1995&month=11&day=6
		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=월, 3=화 ...
		char yoil = "일월화수목금토".charAt(dayOfWeek); //숫자를 다시 문자로 바꿔준다.
		
		//3-1. 콘솔에 출력
//		System.out.println(year + "년 " + month + "월 " + day + "일은 ");
//		System.out.println(yoil + "요일 입니다.");
		
		//3-2. 브라우저에 출력
		response.setContentType("text/html"); //출력할 내용의 타입을 써주어야 한다. why?브라우저는 내가 보내는 내용이 텍스트인지 바이너리인지 모르기 때문에 알려줘야한다.
		response.setCharacterEncoding("utf-8"); //인코딩도 알려줘야 함
		PrintWriter out = response.getWriter(); //response객체에서 브라우저로의 출력 스트림을 얻는다.
																						//response.getWriter()는 예외 처리를 해주어야 하는데 지금은 일단 던지겠다.
		
		out.println(year + "년 " + month + "월 " + day + "일은 ");
		out.println(yoil + "요일 입니다.");
	}

}

1. 전 게시글과 같이 URL을 이용하여 요청을 하면 톰캣은 전달 받은 정보를 HttpServletRequest객체를 생성하여 요청한 정보를 저장한다.

2. HttpServletResponse객체는 1번에서 저장된 정보를 웹브라우저에게 응답을 돌려주는 역할을 한다.

3. getWriter메서드를 사용해서 브라우저로의 출력 스트림을 얻는다.

4. 그 외 출력할 내용의 타입과 인코딩 설정을 해주면 브라우저에 출력이 된다.

<브라우저의 결과 이미지>

5. 브라우저에 잘 출력이 되는 것을 확인할 수 있고, System.out.println 메서드로 출력을 한 것이 아니기 때문에 콘솔에는 아무것도 찍히지 않는다!


[참고 : HttpServletRequest의 메서드

1. getParameterNames()

  • 매개변수의 이름(name)을 받을 수 있다.
  • 만약 주소가 ?year=2021&month=10&day=1 이라면
  • Enumeration enum = request.getParameterName();
  • enum변수에는 year, month, day가 배열로 저장되는 것을 확인할 수 있다.

2. getParameterMap()

  • key와 value형태로 값을 받아올 수 있다.
  • 만약 주소가 ?year=2021&month=10&day=1 이라면
  • Map paramMap = request.getParameterMap();
  • for문을 돌려서 값을 찍어보면 year와 2021, month와 10, day와 1이 key, value로 값이 나오는 것을 확인할 수 있다.

3. Map paramMap = request.getParameterMap()

  • 받고자 하는 매개변수의 name이 같을 때 배열로 받을 수 있다.
  • 만약 주소가 ?year=2021&year=2022&year=2023 이라면
  • String[ ] yearArr = requst.getParameterValues(”year”);
반응형

댓글