다른 사람의 컴퓨터에 있는 프로그램을 실행하기 위해서는 브라우저와 WAS가 필요하다. 브라우저에서 URL 주소로 요청을 보내면 톰캣(웹서버)에서 원격으로 프로그램(메서드)을 실행하게 된다.
1. 원격 호출이 가능한 프로그램 등록(@Controller)
2.URL과 메서드를 연결(@RequestMapping)
@Controller //1. 프로그램 등록
public class Test {
@RequestMapping("/test") //2. URL과 main()을 연결
private void main(){
System.out.println("test")
}
}
URL 호출 시 test와 연결된 메서드가 호출.
URL과 연결한 메서드가 private임에도 호출이 가능한 이유 :
RequestMapping 은 외부에서 스프링 프레임워크가 자바의 Reflection API를 이용해 객체를 생성하여 메서드를 호출하기 때문이다.
HTTP 요청과 응답
HttpServletRequest
@Controller
public class RequestInfo {
@RequestMapping("/requestInfo")
public void main(HttpServletRequest request) {
System.out.println();
}
1. http://localhost/requestInfo URL 입력 후 호출 시
2. 톰캣이 HttpServletRequest 객체를 생성
3. 객체에 요청한 정보를 담은 뒤 톰캣이 main 메서드의 매개변수로 알아서 넘긴다
요청에 대한 정보가 필요하다면 메서드의 매개변수로 HttpServletRequest를 사용하면 스프링이 알아서 매개변수에 해당하는 객체나 값을 넘겨준다. request 참조변수를 이용하여 우리가 원하는 정보를 얻을 수 있다.
HTTP 요청과 응답을 이용한 예제 (날짜 및 요일 얻기)
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 { //http://localhost:8080/ch2/getYoil?year=2023&month=5&day=15
@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);
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+"요일입니다.");
}
}
클라이언트와 서버
클라이언트 : 서비스를 요청하는 애플리케이션
서버: 서비스를 제공하는 애플리케이션
서버의 종류
서버의 종류는 어떤 서비를 하느냐에 따라 달라지는데
1. 이메일 서버: 이메일 서비스 제공
2. 파일 서버 : 파일 제공
3. 웹 서버: 웹 제공 X , 브라우저를 통해서 받을 수 있는 모든 서비스를 제공한다.(문서, 이미지, 동영상 등 모두 웹서버가 제공하는 서비스)
서버의 포트
1대의 PC에는 서버 프로그램이 여러 개 존재할 수 있다.
클라이언트가 IP로 요청 시 한 대의 PC에 여러 개의 서버가 존재하기 때문에 어떤 서버에 대한 요청인지 IP만으로는 구분할 수 없기에 필요한 것이 포트 번호다. 포트 번호를 적어서 클라이언트가 요청을 하면 한 대의 PC 중 어떤 서버에 요청을 보내는 건지 알 수 있다.
WAS(Web Application Server)
Web Server: Web을 서비스
Web Application Server: Web Application을 서비스 -> Application 서비스 -> 애플리케이션=프로그램.
즉, 서버에 프로그램을 설치해놓고 클라이언트가 이 프로그램을 사용할 수 있게 해주는 것.
우리가 만든 프로그램은 클라이언트가 원결 호출을 한다.
WAS를 이용한다면 각 PC마다 다른 프로그램을 설치할 필요 없이 Server에만 설치하면 한 곳에서 관리가 가능하게 된다.
'PROGRAMMING > SPRING' 카테고리의 다른 글
[06] Exception Handling (0) | 2023.05.24 |
---|---|
[05] Session (0) | 2023.05.22 |
[04] Cookie (1) | 2023.05.20 |
[03] MVC 패턴 (0) | 2023.05.17 |
[02] HTTP & protocol (0) | 2023.05.16 |