josolha
Servlet, JSP, Tomcat, Apache - 웹 개발 기초 이해하기 본문
Apache
웹 서버중 하나이며, 아파치 소프트웨어 재단에서 관리하는 HTTP 웹 서버이다.
Apache는 Apache재단에서 만든 HTTP서버로 워낙 다양한 추가기능에,
구축이 쉽다는 이유 때문에 많이 쓰고 있다. 대부분의 중소기업들은 무료이기 때문에 많이 쓰인다.
웹 서버란(WEB)
클라이언트가 GET, POST 등의 메소드를 이용해 전송한 요청을 받아 HTML이나 오브젝트를 HTTP 프로토콜을 이용해 전송하는 프로그램입니다. 웹 서버는 웹 페이지, 이미지 등의 정적인 컨텐츠만 제공할 수 있다.
웹 서버가 필요한 이유
웹 프로그램은 클라이언트 – 서버 컴퓨터 사이의 데이터 교환을 목적으로 하기 때문에 네트워크 통신이 반드시 필요하다.
그러나 웹 프로그램마다 네트워크 통신 기능을 매번 직접 구현하는 것은 힘든 일이다. 그래서 네트워크 통신을 구현하기 위해 미리 만들어진 프로그램을 사용하는데 웹 서버와 웹 브라우저가 이에 해당된다.
Tomcat
Tomcat이란 아파치 재단에서 만든 오픈 소스 WAS(Web Application Server)이다.
Tomcat은 Java Servlet과 JSP가 실행할 수 있는 환경을 제공하여 동적인 페이지를 생성한다.
그리고 DB 연결 및 데이터 조작, 다른 응용프로그램들과 상호 작용이 가능하다.
WAS(Web Application Server)란
WAS란 웹 서버와 웹 컨테이너의 결합으로 이루어진 소프트웨어이다. 웹 서버를 포함하고 있기 때문에 웹 서버처럼 사용할 수도 있다. DB 와 연결되어 트랜잭션 처리를 하거나 다른 시스템과의 연동 기능 또한 포함하고 있다. 그리고 웹 서버와 달리 요청에 대해 동적인 페이지를 만들 어 유연하게 응답할 수 있다.
WAS가 필요한 이유
웹 서버는 정적인 컨텐츠만 제공하기 때문에 클라이언트의 요구에 유연하게 대처할 수 없다. 다양한 클라이언트의 요구에 유연하게 대처하기 위해 DB와 연결해 데이터를 주고받거나 데이터 조작을 하여 동적인 페이지를 생성해 응답하기 위해 WAS를 사용하고 있다.
Servlet
웹 기반의 요청에 대한 _동적인 처리가 가능한 Server Side에서 돌아가는 Java Program,java 코드 안에 HTML 코드하나의 클래스)
웹 개발을 위해 만든 표준이다.
JSP
Java 언어를 기반으로 하는 SeverSide 스크립트언어, HTML 코드 안에 Java 코드,Servlet를 보완하고 기술을 확장한 스크립트 방식 표준 Servlet의 모든 기능 + 추가적인 기능을 한다.
*요즘은 Thymeleaf, FreeMarker 등을 더 많이 사용함.
정리
서블릿을 통하여 HTTP 통신을 간단하게 구현할 수 있다.
하지만 클라이언트에게 text/html 데이터를 전송해줘야 할때 (웹 페이지 뷰를 전송할 때)는 그렇게 간단하지 않다.
html 파일을 직접 생성하지 않고 자바 코드만으로 예) text/html 포맷을 전송할 수는 있지만 이는 매우 불편하고 구문 작성중 문제가 생겼을때 디버그가 매우 어렵다
JSP는 기존 Servlet에서 html 구문 작성 부분의 단점을 없애고 html 코드 내부에서 자바 문법을 사용할 수 있도록 하는 웹페이지 스크립트 언어이다.
JSP문법은 <% %>처럼 블록을 지정하여 블록 안에서 자바 코드를 구현할 수 있고 문법에 대한 자료는 인터넷에서 쉽게 찾아볼 수 있다.
JSP를 통해 기존 서블릿의 단점을 보완하여 View(html)와 HttpServlet 클래스를 나누어 표현하며 동적으로 변경이 필요한 html 부분에
자바 코드를 추가할 수 있게 되었다.
하지만 이렇게 Hello-World 와 같은 간단한 예제가 아닌 실제 프로젝트를 진행하게 되면 JSP파일 안에 자바 코드, 비즈니스 로직, html의 view와 같은 부분들이 모두 들어가게 되는데 수백, 수천줄이 넘어간다면 유지보수가 매우 힘들것이다.
MVC 패턴 등장.
위와 같은 문제를 해결하기 위해서는 Model, View, Controller와 같이 각각의 역할을 기준으로 나누는 MVC패턴을 사용해야 한다.
컨트롤러와 뷰는 각각 모델에 데이터를 전달, 참조한다. 서블릿을 컨트롤러로, JSP를 뷰로 사용한다면 아래와 같이 구현할 수 있다.
JSP와 Servlet 의 역할의 마무리
위 내용만 보면 서블릿이나 JSP나 방법의 차이만 있을뿐 같은 역할을 한다는 것을 알 수 있다
초기 자바를 통한 웹개발은 서블릿을 이용한 개발이었다고 한다. 추후에 서블릿의 단점을 보완하고자
JSP가 나오고 JSP만을 이용한 개발(Model1 방식)이 유행하게 되고 지금에 와서 JSP와 서블릿의 역할을 나누어
서블릿 + JSP 형태의 개발(Model2 방식)을 이루고 있는데 그게 바로 스프링의 핵심이라 할 수 있는 MVC 패턴이다!
위 설명에서 처럼 JSP는 HTML 사용이 용이하고 자바코드 사용이 불편하기 때문에 View(Client) 담당을,
서블릿은 자바코드 작성이 편리하기 때문에 자료를 받아 모델에 저장하고 그 모델을 다시 화면에 전달하는 Controller를 담당하고 있다.
이렇게 하면 좋은 점이 분리가 되어 유지보수에 용이하여 좋은 설계를 할 수 있다는 이점이 있다!
3줄 요약
- 서블릿 (HTML in JAVA) - Controller 역할
- JSP (Java in HTML) - View 역할
- 스프링 : 서블릿 + JSP
'JAVA' 카테고리의 다른 글
예외처리 (0) | 2024.04.27 |
---|---|
람다, 스트림API (0) | 2023.12.27 |
StringBuilder , System.out.println (1) | 2023.12.06 |
빌드도구 (0) | 2023.07.28 |