웹의 동작 방식 : Servlet과 JSP

Studying/Web|2022. 7. 13. 16:17

웹의 동작 방식

사용자의 요청이 브라우저를 통해 웹 서버로 들어간다.

서버에 요청이 도착하면 서버는 요청에 맞는 처리를 하고 클라이언트에게 처리 결과를 응답으로 보낸다.

→ 웹의 동작은 요청(Request)과 응답(Response)으로 이루어진다.

이 때, 요청과 응답은 HTTP 라는 통신규약(프로토콜)을 지키면서 통신하게 된다.

 

요청 : 클라이언트에서 서버로 정보를 요구하는 메시지

응답 : 요구된 메시지에 대한 응답. HTML, 이미지, 파일 등을 보내 준다.

언제나 데이터를 보내지는 않는다. 데이터 없이 화면만 전환되는 경우도 있음.

 

클라이언트가 서버에 요청을 하는 방식에는 두 가지가 있다.

GET : URL의 parameter를 통해 데이터를 전송한다.

(ex) http://website.com?id=1

POST : 내부 네트워크를 통해 전송한다. 데이터의 양이 많거나 보안이 필요한 경우 사용한다.

 

동적/정적 웹페이지

정적 웹 페이지 : 미리 저장된 파일이 그대로 전달된다.

동적 웹 페이지 : 서버가 사용자의 요청에 따라 가공한 파일이 전달된다.

사용자마다 다를 수도 있고, 시점마다 다를 수도 있다.

 

 

JSP와 Servlet

CGI(Common Gateway Interface)

: 웹 서버와 동적 콘텐츠 생성을 맡은 프로그램 사이에서 정보를 주고받는 인터페이스를 뜻한다.

요청이 들어올 때마다 매번 프로세스를 생성하고 처리하고 종료하기 때문에 시스템에 부하가 크다.

↳ 이러한 단점을 보완하여 확장 CGI로 발전!

↳ 매번 프로세스를 생성하지 않고 하나의 프로세스를 생성한 후 여러 개의 스레드 방식으로 요청을 처리

→ 그 중 자바에서 많이 사용되는 것이 JSP와 Servlet이다.

 

Servlet 과 JSP(Java Server Pages)는 자바 언어를 기반으로 한다.

Servlet은 Java코드 안에 HTML태그가 포함되어 있는 것으로, 서로 섞여 있어 효율성이 떨어진다.

JSP는 HTML 태그 사이에 Java 코드가 섞여 있는 것이다. 

스크립트 언어 형식으로 프로그램을 작성할 수 있고, 사용자 정의 태그를 지정할 수 있어 보다 효율적이다.

 

 

 

 

클라이언트가 웹 서버에 요청을 보내면...

→ 웹 서버가 요청을 받아 응답을 처리한다. 이 때, XML/HTML/Json등은 자바 내에서 처리가 가능하다.

단, JSP나 Servlet 요청의 경우 WAS(Web Application Server)*에서 처리하는데, *톰캣

JSP와 Servlet을 번역해서 HTML로 변환하고 별도의 메모리에 출력해 준다.

→ 브라우저는 이 메모리를 읽어 결과를 출력하는 것이다.

 

JSP는 메서드도 클래스도 아니다.

메서드 영역에 들어갈 소스를 코딩하는 것이다.

 

main.jsp 라는 파일을 만들면 아래 위치에 main_jsp.java가 저장된다. → 톰캣이 Servlet 파일로 만들어줌

C:\FolderName\.metadata\.plugins\org.eclipse.wst.server.core...

C:\...\tmp0\work\Catalina\localhost\ProjectName\org\apache\jsp\jsp

 

 

 

JSP의 생명주기

jsp 페이지는 Servlet로 변환이 되고 클래스 파일로 컴파일되면서

초기화 - 요청 처리 - 소멸의 단계를 거치게 되는데, 이 단계를 JSP의 생명 주기라고 한다.

 

초기화 단계에서 필요한 초기화 작업을 한 후, 요청 처리 단계에서 실제로 넘겨져 온 요청에 대해 처리한다.

그리고 그 결과를 응답으로 생성하고, 마지막으로 소멸단계를 거치면서 필요한 모든 자원을 해제한 뒤 종료된다.

 

이 과정에서(jsp에서 servlet으로 변환할 때),

변환파일에는 jspInit(), jspDestory(), jspService()라는 메서드가 만들어진다.

jspService()가 main함수라고 보면 된다. 그 main 안에 들어갈 코드를 우리가 작성해 주는 것. 

 

 

web.xml을 코딩하면 jsp 파일 내에 public void jspInit(){} 에서 인식하고 jsp는 jspService()에서 인식한다.

이 때 클래스 영역에 들어가는 코드는 <%! ... %> 로 감싸주고,

메서드 영역에 들어가는 코드는 <% ... %> 로 감싸준다. → 이후 JSP에 대한 글에서 더 자세히

 

브라우저에서 JSP 자체는 그냥 일반 텍스트로 인식된다.

그렇기 때문에.. 톰캣(WAS 서비스 중 하나)이 컴파일해서 HTML만 넘겨 주는 것이다.

https://mvnrepository.com/artifact/javax.servlet/jstl/1.2

'Studying > Web' 카테고리의 다른 글

JSP : 지시자(Directive)  (0) 2022.07.15
CSS : 구조적 선택자  (0) 2022.07.08
CSS : 속성, 선택자  (0) 2022.07.07