package com.campus.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];
// (아래 2번 작업하기 위해서 int로 만들어줘야한다)
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); // Calendar의 month 값은 0-11까지 존재하기 때문에
//-1을 해주어야 비교가 가능한다
int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK); // 1.일요일, 2.월요일
//...(요일이 숫자로 반환된다)
char yoil = " 일월화수목금토".charAt(dayOfWeek); // charAt()는 0부터 시작이라서
//앞에 공백 한 칸을 넣어줬다
// 3. 출력
System.out.println(year +"년"+month+"월"+day+"일");
System.out.println(yoil+"요일 입니다.");
}
}
실행과정 👉 java 인터프리터가 YoilTeller 클래스의 메인을 호출한다.
이때 인터프리터가 뒤에 있는 값들을 문자열배열(String[])로 만들어서 넘겨준다. 그러면 args는 넘겨준 문자열 배열을 가르키게된다. 그래서 메인 메서드 안에서 문자열 배열을 쓸 수 있게 된다
@Controller
public class RequestInfo{
@RequestMapping("/requestInfo")
public void main(HttpServletRequest request){
System.out.println("request.getMethod()="+request.getMethod());
System.out.println("request.getProtocol()="+request.getProtocol());
System.out.println("request.getScheme()="+request.getScheme());
}
}
위에 YoilTeller 클래스의 요청과 응담을 본 것과 마찬가지로 원격프로그램의 브라우저로 url을 입력해서 호출한다면 Tomcat이 HttpServletRequest 객체를 만든다
그리고 요청한 정보를 만든 객체에 담는다
담아서 메인 메서드의 매개변수로 보내준다(위에서는 메인 메서드가 String[] args 타입으로 받았지만 이렇게 할 경우에는 HttpServletRequest로 매개변수가 넘어온다 )
❗ 우리가 필요한 것을 매개변수에 선언하면 Tomcat이 만들어준다
📝 위에 코드를 HttpServletRequest / HttpServletResponse 를 이용해서 브라우저에 출력하도록 코드 수정
package com.campus.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 {
//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);
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+"요일 입니다.");
}
}