백 엔드(Back-End)
- 정보를 처리하고 저장하며, 요청에 따라 정보를 내려주는 역할
- 가령 쇼핑몰이라면, 상품 정보를 가지고 있고, 주문을 받아서 저장하고, 사용자가 관심있어 하는 상품을 골라주는 역할이 back-End의 역할
백 엔드 개발자가 알아야 할 것들
- 프로그래밍 언어(JAVA, Python, PHP, Javascript 등)
- 웹의 동작 원리
- 알고리즘(algorithm), 자료구조 등 프로그래밍 기반 지식
- 운영체제, 네트워크 등에 대한 이해
- 프레임워크에 대한 이해(예: Spring)
- DBMS에 대한 이해와 사용방법(예: MySQL, Oracle 등)
HTTP
browser의 동작
해석기(Parser)
WAS(Web Application Server) 톰캣
- 일종의 미들웨어로 웹 클라이언트(보통 웹 브라우저)의 요청 중 웹 애플리케이션이 동작하도록 지원하는 목적
- word 파일을 열어서 내용을 확인하기 위해서는 ms office의 word 프로그램이나 viewer가 필요합니다.
웹 어플리케이션을 실행하기 위해서도 필요한 것
JAVA언어를 작성된 프로그램을 실행하기 위해선 JRE(Java SE Runtime Environment)가 필요합니다.
JAVA언어를 사용하는 개발자가 아니라 JAVA언어로 만들어진 프로그램을 실행하는 사용자라면 JRE만 컴퓨터에 설치하면 됩니다.
보통 사용자 입장에서 JAVA를 설치한다는 것은 JRE를 설치하는 것을 말합니다.
JAVA언어를 사용하는 개발자는 JAVA언어로 작성된 소스(Source)를 컴파일하고 관리할 필요가 있습니다.
이때 사용되는 도구를 JDK(Java SE Development Kit)라고 말합니다.
JDK안에는 JRE도 포함되어 있습니다.
컴파일한 결과를 실행하기 위해서는 JRE가 필요하기 때문입니다.
자바 웹 어플리케이션(Java Web Application)
- WAS에 설치(deploy)되어 동작하는 어플리케이션
- HTML, CSS, 이미지, 자바로 작성된 클래스(Servlet도 포함됨, package, 인터페이스 등), 각종 설정 파일 등이 포함
자바 웹 어플리케이션의 폴더 구조
Servlet
- 자바 웹 어플리케이션의 구성요소 중 동적인 처리를 하는 프로그램의 역할
- WAS에 동작하는 JAVA 클래스
- HttpServlet 클래스를 상속
- 웹 페이지를 구성하는 화면(HTML)은 JSP로 표현하고, 복잡한 프로그래밍은 서블릿으로 구현
버전에 따른 Servlet 작성 방법
1. Servlet 3.0 spec 이상에서 사용하는 방법
- web.xml X
- 자바 어노테이션(annotation)을 사용
- first web에서 사용
2. Servlet 3.0 spec미만에서 사용하는 방법
- servlet을 등록할 때 web.xml 파일에 등록
라이프 사이클(Life Cycle)
-어떤 객체의 생성부터 소멸까지의 과정
Servlet 생명주기
- WAS는 서블릿 요청-> 해당 서블릿이 메모리에 있는지 확인
- if (메모리에 x) {
- 해당 서블릿 클래스를 메모리에 올림
- init() 메소드 실행
}
- service()메소드 실행 - was가 종료 or 웹 어플리케이션이 새롭게 갱신될 경우, destroy() 메소드가 실행
service(request, response) 메소드
HttpServlet의 service메소드는 템플릿 메소드 패턴으로 구현
- 클라이언트의 요청이 GET일 경우 -> doGet(request, response)
- 클라이언트의 요청이 Post일 경우 -> doPost(request, response)
요청과 응답
WAS는 웹 브라우저로부터 Servlet요청을 받으면,
- 요청할 때 가지고 있는 정보를 HttpServletRequest객체를 생성하여 저장
- 웹 브라우저에게 응답을 보낼 때 사용하기 위하여 HttpServletResponse객체를 생성
- 생성된 HttpServletRequest, HttpServletResponse 객체를 서블릿에게 전달
HttpServletRequest
- http프로토콜의 request정보를 서블릿에게 전달하기 위한 목적으로 사용합니다.
- 헤더정보, 파라미터, 쿠키, URI, URL 등의 정보를 읽어 들이는 메소드를 가지고 있습니다.
- Body의 Stream을 읽어 들이는 메소드를 가지고 있습니다.
HttpServletResponse
- WAS는 어떤 클라이언트가 요청을 보냈는지 알고 있고, 해당 클라이언트에게 응답을 보내기 위한 HttpServleResponse객체를 생성하여 서블릿에게 전달
- 서블릿은 해당 객체를 이용하여 content type, 응답코드, 응답 메시지등을 전송
JSP의 생명주기
- 브라우저가 웹서버에 JSP에 대한 요청 정보를 전달한다.
- 브라우저가 요청한 JSP가 최초로 요청했을 경우만 JSP로 작성된 코드가 서블릿으로 코드로 변환한다. (java 파일 생성)
- 서블릿 코드를 컴파일해서 실행가능한 bytecode로 변환한다. (class 파일 생성)
- 서블릿 클래스를 로딩하고 인스턴스를 생성한다.
- 서블릿이 실행되어 요청을 처리하고 응답 정보를 생성한다.
- 스크립트릿 : <% %>
- 가장 일반적으로 많이 쓰이는 스크립트 요소
- 주로 프로그래밍의 로직을 기술할 때 사용
- 스크립트릿에서 선언된 변수는 지역변수
- 스크립트릿의 문법
- <% 문장%>
- 표현식 : <%=%>
- JSP 페이지에서 웹 브라우저에 출력할 부분을 표현 (즉, 화면에 출력하기 위한 것)
- 스크립트릿내에서 출력할 부분은 내장객체인 out 객체의 print() 또는 println() 메소드를 사용해서 출력
- 표현식의 문법
- <%=문장%>
JSP 내장 객체
- JSP를 실행하면 서블릿 소스가 생성되고 실행
- JSP에 입력한 대부분의 코드는 생성되는 서블릿 소스의 _jspService() 메소드 안에 삽입되는 코드로 생성
- _jspService()에 삽입된 코드의 윗부분에 미리 선언된 객체들이 있는데, 해당 객체들은 jsp에서도 사용 가능
':: IT > 백엔드' 카테고리의 다른 글
상태정보(쿠키와 세션) (0) | 2020.04.02 |
---|---|
SQL & JDBC 프로그래밍 (0) | 2020.03.30 |
[Spring] (0) | 2020.03.29 |
scope(스코프) (0) | 2020.03.28 |