2022.07.26 화요일
- Internet 상에서 HTTP를 사용하는 World Wide Web service
- C/S 구조
- 상대적으로 다수의 Client가 소수의 Server에 접속해서 Service를 제공받는 형태
- 정적 web(Static web)
- HTTP Request
-
request 방식(방법)
- 총 6가지가 있는데 REST라고 하는 4가지만 쓴다.
- GET
- POST
- PUT
- DELETE
GET 방식
request 전달 방법 3가지
-
browser 주소창에 직접 URL을 입력한 후 request를 전달
-
<a href=”~”>
를 click해서 request를 전달
-
<form>
의 method 속성에 “GET”을 써서 request를 전달
장단점
client의 추가적인 data를 Query String
이라는 형식으로 Server에 전달
POST 방식
request 전달 방법
-
<form>
의 method 속성에 “POST”를 써서 request를 전달
장단점
client의 추가적인 data를 Request 안에 포함해서 길이 제한이 없다.
💡 <form>
의 method 속성에 “POST”를 쓰지 않은 것은 거의 대부분 GET 방식이라고 봐도 무방하다.
<form>
을 이용할 경우 거의 예외없이 POST 방식을 사용한다.
- 동적 web(dynamic web)
- web server 측에서 web client가 요청한 program을 실행한 후 그 결과를 HTTP Response로 돌려준다.
- CGI(Common Gateway Interface)
- 처음에는 process 단위로 실행되었지만 server에 부하가 많이 가게 되었다.
- Thread 단위로 바꿔서 경량화시켜서 실행시키도록 구조가 바뀌게 되었다.
- MS: ASP
- PHP
- Java: Servlet, JSP
- 구조
- Apache Tomcat
- HTTP Server + Servlet container
- Web상에서 동작하는 Java program을 만들기 위한 규칙
- Servlet → HTTP Servlet → 상속해서 구현 → eclipse의 도움을 받아서 servlet을 생성
Servlet의 실행 순서
- servlet 객체는 여러 개가 만들어지는 것이 아니다. 하나만 존재한다.
- 다수의 client가 들어오면 여러 개의 Thread가 생기고 이 Thread들이 servlet instance(공용 객체)를 공유해서 사용한다.
- class 하나로부터 instance 하나가 나옴. → 싱글톤 형태
Servlet이 가지는 가장 큰 단점
- response에 포함될 결과 HTML을 Java program 내에서 기술 ⇒ 노동 집약적
JSP Element(JSP 요소)
- 주석
<%— 주석 내용 —%>
- directive
<%@ 지시어 %>
- 환경설정에 관련된 내용
<%@ page %>
- import 구문, 페이지 인코딩, context-type 등을 나타냄
- declaration
<%! 변수, method %>
- scriptlet
<% Java Code %>
- Expresion
<%= 식 %>
JSP의 내장객체
JSP 코드 내에서 그냥 사용할 수 있는 객체
-
request
객체
HttpServletRequset class type의 객체
-
response
객체
HttpServletResponse class type의 객체
-
out
PrintWritner 객체
-
session
HttpSession class 객체(web client 당 1개씩 할당)
client의 작업을 지속적으로 tracking
-
application
Servlet Context 객체(모든 Servlet에 의해 공유되는 객체)
-
page
this와 같음.
Layered Architecture
- Presentation Layer
- Business Logic Layer
- Persistence Layer
- Database Layer
⇒ 위의 레이어드 아키텍쳐를 적용해야 해서 JSP의 역할이 ⬇️
MVC
software system 3가지 type의 component로 분할하는 소프트웨어
프로젝트를 만들어봅시다.
BookStoreProject