자바 웹 어플리케이션(Java Web Application)
WAS에 설치(deploy)되어 동작하는 어플리케이션입니다.
자바 웹 어플리케이션에는 HTML, CSS, 이미지, 자바로 작성된 클래스(Servlet도 포함됨, package, 인터페이스 등), 각종 설정 파일 등이 포함됩니다.
자바 웹 어플리케이션은 폴더 구조를 지켜줘야 합니다.
리소스들에 html, js, css 등도 됨
서블릿이란?
자바 웹 어플리케이션의 구성요소 중 동적인 처리를 하는 프로그램의 역할입니다.
서블릿을 정의해보면 서블릿(servlet)은 WAS에 동작하는 JAVA 클래스이며 웹 기반의 요청에 대한 동적인 처리가 가능한 하나의 클래스 입니다.
서블릿은 HttpServlet 클래스를 상속받아야 합니다.
서블릿과 JSP로부터 최상의 결과를 얻으려면, 웹 페이지를 개발할 때 이 두 가지(JSP, 서블릿)를 조화롭게 사용해야 합니다.
예를 들어, 웹 페이지를 구성하는 화면(HTML)은 JSP로 표현하고, 복잡한 프로그래밍은 서블릿으로 구현합니다.
같이 이용하면 굿~
버전에 따른 Servlet 작성 방법
1. Servlet 3.0 spec 이상에서 사용하는 방법
web.xml 파일을 사용하지 않습니다.
자바 어노테이션(annotation)을 사용합니다.
2. Servlet 3.0 spec미만에서 사용하는 방법
servlet을 등록할 때 web.xml 파일에 등록합니다.
servlet의 라이프 사이클
서블릿은 서버에 서블릿 객체를 여러 개 만들지 않습니다.
요청이 올 때마다 생성하는 것이 아니라 메모리에 존재 유무를 파악하여 존재하면 생성하지 않고 service 메서드만 호출합니다.
서블릿이 destroy되는 경우는 서블릿이 수정되었을 때 존재하는 서블릿을 파괴하면서 호출 됩니다.
이렇게 파괴하면 service만 호출하는 것이 아니라 init 도 함께 호출합니다.
service()란
서비스 메소드는 servlet이 수신한 모드 request에 대해 service 메서드가 호출됩니다.
서비스 메소드를 구현하지 않았을 경우 구현한 Servlet 클래스의 부모인 HttpServlet의 service()가 호출 됩니다.
service() 메소드는 클라이언트 요청에 따라(Get이냐 Post, Put, Delete이냐 에 따라)doGet, doPost, doPut, do Delete메소드를 호출합니다
HttpServletRequest request 객체
- 사용자가 HTML Form에 입력한 내용(username과 password)을 request 객체에서 받아온다.
즉, HTTP 프로토콜의 Request 정보를 Servlet에게 전달
- 헤더 정보, 파라미터, 쿠키, URI, URL, Body의 Stream 등을 읽어 들이는 메서드가 있다.
- getHeader(“원하는 헤더 이름”) : 이 메서드를 통해 원하는 헤더 정보를 확인할 수 있다.
- getParameter() : 이 메서드를 호출하여 form parameter 값을 가져온다.
이런 parameter 값은 URL 또는 form의 input tag를 통해서 넘어올 수 있다.
- getParameterValues()
form parameter가 두 번 이상 나타나고 여러 개의 값을 반환할 때 이 메서드를 호출한다. (Ex. checkbox)
HttpServletResponse response 객체
- 인자의 내용에 맞게 동적인 HTML 코드를 생성하여 response 객체에 담아 반환한다.
- getWriter() 메서드를 호출하여 PrintWriter 객체을 가져온 후 해당 객체에서 print, println 메서드를 실행한다.
- 즉, form data를 처리한 결과를 Web Page에 생성(view 생성)하여 반환한다.
- 서블릿은 해당 객체를 이용하여 content type, 응답코드, 응답 메시지등을 전송합니다.
정리
WAS는 해당 서블릿이 메모리에 있는지 확인
없으면 생성
있으면 생성하지 않고 요청과 응답하는 service 메소드를 실행
WAS가 종료되거나 웹 어플리케이션이 새롭게 갱신될 경우 destroy
'백엔드' 카테고리의 다른 글
REST API (0) | 2021.11.28 |
---|---|
Maven , Gradle (0) | 2021.11.16 |
Redirect & Forward , Servlet과 JSP 연동 (0) | 2021.08.29 |
JSP 개념 (0) | 2021.08.21 |
Mysql 기초 명령어 (0) | 2021.08.06 |