HttpRequest를 입력받고 HttpResponse를 출력하는 프로그램과 쿼리스트링을 GET 방식으로 얻어서 처리하여 view를 반환하는 프로그램은 서로 다른 양상을 띠고 있습니다.
HttpRequest와 HttpResponse를 이용한 MVC패턴 프로그래밍
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 {
@RequestMapping("/getYoil") // http://localhost:8080/ch2/getYoil?year=2021&month=10&day=1
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); // 일요일:1, 월요일:2, ...
// 3. 출력
response.setContentType("text/html"); // 응답의 형식을 html로 지정
response.setCharacterEncoding("utf-8"); // 응답의 인코딩을 utf-8로 지정
PrintWriter out = response.getWriter(); // 브라우저로의 출력 스트림(out)을 얻는다.
out.println("<html>");
out.println("<head>");
out.println("</head>");
out.println("<body>");
out.println(year + "년 " + month + "월 " + day + "일은 ");
out.println(yoil + "요일입니다.");
out.println("</body>");
out.println("</html>");
out.close();
}
}
GET 방식을 이용한 MVC패턴 프로그래밍
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
@Controller
public class QueryStringExampleController {
@GetMapping("/hello")
public String hello(@RequestParam("name") String name, Model model) {
String message = "Hello, " + name + "!";
model.addAttribute("message", message);
return "hello-view";
}
}
위의 예시 코드는 Spring MVC를 사용하여 쿼리스트링을 GET 방식으로 처리하고, View를 반환하는 프로그램입니다. /hello
경로로 GET 요청이 들어오면 hello()
메서드가 실행됩니다. @RequestParam
어노테이션을 사용하여 name
파라미터를 쿼리스트링에서 받아옵니다. 이를 활용하여 "Hello, {name}!" 형태의 메시지를 생성하고, 이를 모델에 추가합니다.
마지막으로 return "hello-view"
를 통해 "hello-view"라는 뷰를 반환합니다. 이 뷰는 실제로 Thymeleaf나 JSP와 같은 템플릿 엔진을 사용하여 동적으로 생성된 HTML을 표시합니다. 따라서 이 예시 코드는 쿼리스트링에 따라 다른 결과를 보여주는 동적인 웹 애플리케이션의 일부분입니다.
'웹개발' 카테고리의 다른 글
@RequestsParam, @ModelAttribute (0) | 2023.05.20 |
---|---|
서블릿과 JSP (1) | 2023.05.19 |
HTTP에서 바이너리 파일 다루기 (0) | 2023.05.15 |
HTTP에 대한 이해 (0) | 2023.05.15 |
웹 브라우저와 웹 서버 (0) | 2023.05.14 |