1. 원리
(1) [Local Console에서 실행] main method에 값을 받아 처리하는 경우
ㄱ. 소스코드
import java.util.Calendar;
public class main {
public static void main(string[] args) {
// 1. 입력
String year = args[0];
String month = args[1];
String day = args[2];
// 2. 처리
// (1) String 값을 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);
// DAY_OF_WEEK 매소드는 날짜의 요일을 숫자로 반환한다.
// 일요일:1, 월요일:2, ...
int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
// "~~".charAt()은 ()안의 값에 따라 ""문자열 중 문자 순서대로 반환 한다.
// 1 이면 일 반환, 2면 월 반환, ...
char yoil = " 일월화수목금토".charAt(dayOfWeek);
//3. 출력
System.out.println(year + "년 " + month + "월 " + day + "일은 ");
System.out.println(yoil + "요일입니다.");
}
}
ㄴ. 터미널에서 실행
target > show in > terminal 선택

java는 인터프리터 실행 명령어
com.fastcampus~는 실행할 java 클래스까지의 경로
2021 10 1은 main method String 배열로 들어갈 값들
ㄷ. 결과

ㄹ. 원리

(2) [브라우저에서 요청 받아 실행]
ㄱ. 브라우저에서의 요청

? 이전은 내가 들어갈 Http 주소
? 이후부터는 queryString(요청 내용에 대한 상세한 기술)
&는 구분자
year = 2021은 코드 내 변수 year에 2021이란 값을 넣겠다는 뜻
ㄴ. 소스코드
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Calendar;
//년월일을 입력하면 요일을 알려주는 프로그램
@Controller
public class YoilTeller {
// http://localhost:8080/ch2/getYoil?year=2021&month=10&day=21
@RequestMapping("/getYoil")
// 매개 변수를 적기만 하면 톰캣이 너가 이거 필요하구나 하면서 자동으로 객체를 만들어준다.
// 여기서는 요청 객체 + 응답 객체를 필요로 했고 톰캣이 만들어줌.
//main method에 인수로 request도 넣어준 이유
// 요청할 때 입력한 값들을 쓸려고
public void main(HttpServletRequest request, HttpServletResponse response) throws IOException {
// 1. 입력
// getParameter 다음에 쓴 year, month, day는 쿼리문에 적힌 애들이다.
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, dd);
int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
char yoil = " 일월화수목금토".charAt(dayOfWeek);
// 3. 출력
// 출력할 내용의 타입을 써줘야함. 브라우저는 내가 보내는 내용이 텍스트인지 바이너리인지 모르기 때문에
response.setContentType("text/html");
// 내가 보내는 게 텍스트임을 알려주고, 텍스트의 인코딩이 뭔지 알려줘야 브라우저가 제대로 보여줌.
// 어떻게 해독 해야하는지 안 알려주면 한글 다 깨져서 나온다.
response.setCharacterEncoding("utf-8");
// response 객체에서 브라우저 출력 스트림을 얻는다.
// 스트림이란 데이터가 이동하는 통로, 출력 스트림이란 데이터가 출력되는 통로
PrintWriter out = response.getWriter();
// System 내부에서 출력하지 않으니까 앞에 System이란 말은 빼준다.
out.println(year + "년 " + month + "월 " + day + "일은 ");
out.println(yoil + "요일입니다.");
}
ㄷ. 결과

ㄹ. 원리


3. 스스로 해보기 (저번 강의 내용 + 해서 원격 컴퓨터에서 올려서 로컬로 요청 보내자.)

내용물은 아직 어려워서 모르는 부분은 베끼면서 다시 침.
2023-3-28
2회차는 출력부분이랑 캘린더 부분 말고는 직접 쳤다.
해당 내용들도 완성 코드를 직접 보지 말고, 찾아서 해보자.
0