자바 공부/[자바] 기본 공부

[JSP 2일차] OrderServlet 파라미터 입력 연습

햅2024 2024. 11. 20. 19:56

1. 기본 개념 정리

  • Server(서버) 
    • Client(사용자)의 요청(request)에 맞는 서비스를 제공하는 것
    • 요청(request) <-> 응답(response)
  • httpd
    • 클라이언트의 요청을 인식하는 프로그램
    • 요청을 웹 서버에 전달
    • 스레드 스케쥴링
  • web
    • 페이지 요청과 응답이 일어나는 장소
    • 인터넷에 연결된 컴퓨터들을 통해 정보를 공유하는 공간
  • web Server(http) : 아파치(Apache)
    • 사용자의 요청이 정적인지 동적인지 판단
    • 정적이면, 준비되어 있는 리소스(html, img, css, javascript, font).제공
    • 동적이면, 웹 컨테이너에 요청을 보냄 
  • 웹 컨테이너(Servlet Container)
    • 사용자의 동적 데이터를  servlet, jsp로 연산하거나 제어하며, DB 접속 등을 통해 정제된 데이터로 가공하여 응답
  • WAS(Web Application Server) : 톰캣(Tomcat)
    • 동적 데이터를 처리할 서블릿들을 메모리에 할당
    • 서블릿에 대한 스레드 생성
    • 요청, 응답 객체를 생성하여 서블릿에 전달

 

2. OrderServlet을 통해 파라미터 처리 연습

index html 위치

html 소스

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h1>안녕하세요 만수르입니다. </h1>
	<hr>
	<h2>라면 주문하기</h2>
	<form action="/web/Order">
	라면 개수 : <input type="text" name="ramen"><br>
	개당 가격 : <input type="text" name="price"><br>
	먹을 장소 : <input type="text" name="location"><br>
	<input type="submit" value="신청하기">
	</form>
</body>
</html>

 

실행화면

web/Order 이라는 form으로 name들의 데이터를 넘길 것이다. 

package com.korea.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

@WebServlet("/Order")
public class OrderServlet extends HttpServlet{
	private final String RED = "\033[91m";
	private final String GREEN = "\033[92m";
	private final String END = "\033[0m";
	
	protected void doGet(HttpServletRequest request, 
						HttpServletResponse response)
						throws ServletException, IOException
	{
		 System.out.println(RED + "[OrderServlet] Called" + END);
		 
		 response.setContentType("text/html; charset = UTF-8");
		 
		 //  ramen, price, location 을 입력으로 받는다면 
		 String food = request.getParameter("ramen");
		 int price = Integer.parseInt(request.getParameter("price"));
		 String loc = request.getParameter("location");

		 System.out.println(food + ": "  + loc + ": " + price);
		 
		 PrintWriter out = response.getWriter();
		 out.println("<html><body>");
		 out.println("<h1>손님께서 주문하신 내역</h1><hr>");
	 	 out.println("<h2> 라면 : " + food);
	 	 
	 	 if(loc.equals("니네집")) {
	 		 System.out.println("니네집");
	 		 out.println("<h2>니네집은 공짜</h2>");
	 	 }
	 	 else if(loc.equals("융프라우")){
	 		 out.println("<h2>가격은 " + price * 10 + "원입니다.</h2>");
	 	 }
	 	 else {
	 		 out.println("<h2>안 팝니다.</h2>");
	 	 }
		 out.println("</html></body>");
	}
}