▶ GET : Client의 추가적인 data를 'Query String'이라는 형식으로 server에 전달하는데 String 길이의 제한으로 인해 정상적인 전달이 되지 않을 수 있음
▶ POST : Client의 추가적인 data를 request 안에 포함시켜 server에 전달하기 때문에 길이 제한이 없고, url에 직접적으로 노출되지 않음
Web 상에서 동작하는 java program을 만들기 위한 규칙
1) Client가 request(.jsp 호출)
2) web server가 request를 servlet container에 전달(forwarding)
3) jsp 파일을 servlet(java)으로 translation
4) servlet 파일을 class로 compile (servlet 객체를 만들기 위한 class)
5) Thread가 이 class로 servlet instance를 만들어 servlet method인 service()를 호출
out.println()
으로 전달됨<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
이름을 입력하세요. <br />
<form action="http://localhost:8080/html/hello.jsp" method="post">
이름 : <input type="text" name="userName" /><br />
<input type="submit" value="서버로 전송" />
</form>
</body>
</html>
<%@ page language="java"
contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"
import="java.util.ArrayList"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<% request.setCharacterEncoding("UTF-8");
String name = request.getParameter("userName"); // 내장 객체가 존재하기 때문에 request 사용 가능 %>
받은 데이터는 : <%= name %>
</body>
</html>
JSP 코드 내에서 사용할 수 있는 객체
- request : HttpServletPequest class type의 객체
- response : HttpServletResponse class type의 객체
- out : PrintWriter 객체
- session : HttpSession class 객체 - web client당 1개씩 할당됨
- client의 작업을 지속적으로 tracking (Servlet에서는 직접 코드로 할당해야 했음)
- application : ServletContext 객체 - 모든 servlet에 의해 공유되는 객체
- page : this
프로그램을 역할별로 나누어 만들자!
Presentaion Layer |
Business Logic Layer |
Persistence Layer |
Database Layer |
software system 3가지 type의 component로 분할하는 소프트웨어 패턴
Model
- Domain Model : 데이터(IO, DO, DTO, Entity)
- Business Model : 조직(Service)
View
사용자 interface 담당
- JSP, HTML
Controller
시스템의 흐름 제어