Servlet
Server의 구성
- Web Server
http server라고도 한다.
client(Web Browser)의 접속 처리를 해준다.
- Application Server
실제로 로직(Business Logic, Persistence Logic)을 처리해주는 부분
화면에 보여주어 사용자에게 응답하는 역할을 한다.(Presentation)
- DataBase
RDBMS와 같은 데이터베이스 사용
- 예시
- 톰캣? Application server + Web Server 모두 관리 가능한
Web Application Server (WAS)
이다.
Servlet
자바 서블릿은 자바를 사용하여 웹페이지를 동적으로 생성하는 서버측 프로그램 혹은 그 사양을 말한다. 웹 서버의 성능을 향상하기 위해 사용되는 자바 클래스의 일종이다.
JSP와 비슷한 점이 있지만, JSP가 HTML 문서 안에 Java 코드를 포함하고 있는 반면, 서블릿은 자바 코드 안에 HTML을 포함하고 있다.
JSP는 내부적으로 WAS에 의해 Servlet으로 바뀌므로, 기본적인 문법이 같다고 할 수 있다.
- 원래는 web.xml을 만들어 배치 설명서를 만들었지만, Servlet 3.0 이상부터는 Annotation으로 매핑 가능하다.
- 인터페이스이다.
- 클라이언트의 요청을 받아 일처리(로직)을 하고 응답해주는 역할을 한다.
- init(), destroy(), service()
사용자 정의 서블릿의 기본 상속 구조
→ 일반적으로 서블릿을 사용할 때, HttpServlet을 상속받아서 정의한다.(Http Server에서 필요한 대부분의 것들이 구현되어 있기 때문)
Servlet이 하는 일
- data get : 데이터 얻어내기
- Logic - business Logic, Database Logic (일 처리를 한다.)
- 2번에 해당되는 결과를 가지고 응답 page (html)
Servlet의 LifeCycle
class와는 다르게 main method가 없다.
→ 객체의 생성부터 사용의 주체가 사용자가 아닌 Servlet Container에게 있다.
Client가 요청을 하게 되면 Servlet Conainer는 Servlet 객체를 맨 처음에 한번만 생성하고 초기화 하며, 요청에 대한 처리를 요청시마다 한다. Servlet 객체가 필요 없어지면 제거까지 Container에서 담당한다.
⭐Servlet LifeCycle의 주요 method
- init() : 서블릿이 메모리에 로드될 때 한번 호출
- doGet() : GET 방식으로 data 전송 시 호출
- doPost() : POST 방식으로 data 전송 시 호출
- service() : 모든 request는 service()를 거쳐서 doXXX()로 이동
- destroy() : 서블릿이 메모리에서 해제되면 호출
Parameter 전송 방식
✔️GET
- URL의 QueryString으로 전달
- 간단한 데이터를 빠르게 전송 → 데이터 양에 제한이 있다.
✔️POST
- HTTP header 뒤 body에 입력 스트림 데이터로 전달
- 데이터의 제한이 없다.
- 최소한의 보안 효과
- GET 방식보다 느리다(패킷을 이용하므로)
JSP
Java Server Page의 약자
HTML 내에 자바 코드를 삽입하여 웹 서버에 동적으로 웹 페이지를 생성하여 웹 브라우저에 돌려주는 언어
실행시에 자바 서블릿으로 변환된 후 실행된다.
최초 jsp 요청 시, jsp file 변경 시 jsp가 sevlet으로 변경된다.
→ 최초에 한번만 느리고 그 다음에는 똑같다.
JSP 스크립팅 요소 (Scripting Element)
- 선언
<%! 멤버변수와 method 작성 %>
<%!
String name;
public void init() {
name = "yes";
}
%>
- 스크립트릿 (Scriptlet)
Client 요청 시 매번 호출되는 영역
Servlet의 service() 메서드에 해당
request, response에 관련된 코드
<% java code %>
- 표현식
데이터를 브라우저에 출력할 때
<%= 문자열 %>
- 주석
부가 설명을 작성
<%-- 주석 코드 --%>
→ HTML의 주석인 <!— —>
와의 차이는, <!-- -->
는 코드에 남아있지만, JSP의 주석은 코드에 남아있지 않다.
'dev log' 카테고리의 다른 글
홈동 개발을 마치면서 (0) | 2021.08.30 |
---|---|
JPA Fetch 전략 (0) | 2021.08.03 |
Spring Boot, Spring Security, jwt를 이용한 회원가입과 로그인 (0) | 2021.07.26 |
MariaDB의 장점(MySQL과의 비교) (0) | 2021.07.21 |
[AWS] AWS EC2 서버 환경 만들기 (0) | 2021.04.07 |