JSP&Servlet/기초정리

JSP&Servlet 기초 - Servlet

줘니(•̀ᴗ•́)و 2023. 1. 26. 17:01
728x90

1. JSP&Servlet

 - JSP

  • Java Server Page
  • 확장자가 .jsp인 파일
  • html 문서 안에 자바 언어를 삽입해 사용할 수 있도록 해줌

 

- Servlet

  • 확장자가 .java인 파일
  • 자바의 일반적인 클래스와 동일한 개념
  • 웹을 다룰 수 있도록 해주는 "HttpServlet" 클래스를 상속받은 클래스를 의미함

 

 

2. 노드(node)

: 네트워크에 연결된 컴퓨터와 그 안에 속한 장비(허브, 공유기, 라우터..)

  노드는 host와 중간노드로 나뉜다.

 

 1) Host

: 노드 중에서 애플리케이션을 실행할 수 있는 컴퓨팅 시스템을 갖춘 기기

  또 Host는 client와 server로 나뉜다.

 

     - client

     : 서비스를 요청하고 사용하는 호스트

 

     - server

     : 서비스를 제공하는 호스트

 

- 임의의 호스트가 클라이언트나 서버로 고정되지 않고

이용하는 서비스의 종류에 따라 클라이언트가 될 수 있고 서버가 될 수도 있음

 

2) 중간노드

: 다리역할

 

 

 

client가 server에 요청(request)을 하면 server는 HTML문서로 응답(response)을 한다.

 

 

3. 웹 페이지 종류

1) 정적페이지(Static Web Page)

 

2) 동적페이지(Dynamic Web Page)

 

 

HTML, CSS, JS로만은 동적페이지를 구현하기 힘들기 때문에

동적페이지 구현을 위해선 JSP&Servlet을 배워야 한다!

 

 

JSP&Servlet은 Java언어 기반 Web Application Programming 기술이며,

client 요청에 동적으로 작동, 응답은 HTML형식으로 제공해준다.

아파치 톰캣 9.0ver을 다운받아 이클립스(java기반이니까)에서 하게 될 것이다!

 

 

4. Servlet 기초

 

 

이클립스에서 새로 만들건데

동적인 웹 페이지를 만들기 위해 Dynamic Web Project를 선택한다.

 

 

펼치면 이 상태가 되는데 여기서 

Java Resources 안 src/main/java 안에 Servlet을 만들어 사용한다.

 

 

Servlet 네임을 지정한 뒤

next를 2번 하면 밑과 같이 뜬다.

 

 

Servlet은 기본적으로 상속받는 클래스가 있는데,

위에 체크해놓은 클래스와 메소드에 대해서 간단하게 설명하고 넘어가겠다.

finish를 눌러 실행해보자.

 

 

1) URL Mapping 주석

 

 

: 먼저 @WebServlet 에서 @는 annotation으로 기능을 제공해주는 주석이다.

  그리고 괄호 안의 내용이 URL Mapping 설정을 하는 것이다.

지금 열린대로 ctrl + F11을 눌러 실행하면 아무것도 없는 흰 웹 페이지가 뜨는데 그 페이지 링크를 보면 밑과 같이 생겼다.

 

 

실제 Servlet 클래스의 문자열 경로와 url pattern이 일치한다.

다른 url pattern 명으로 변경하는 게 좋다. -> 보안상의 이유와 가독성 때문에

위에서 '/Create'라고 되어있는 이유는 원래 'Ex00CreateServlet'인 걸 내가 바꾼 것이다.

 

 

 

다시 웹 페이지를 열어서 보면 url pattern이 'Create'로 바뀐 걸 알 수 있다.

 

 

 

다음부터는 굳이 만들고 나서 바꾸기 보단

서블릿 만들 때 next 한번만 누르면 이 창이 나오는데 여기서 URL mappings에서 이름을 바꾸면 더 쉽다.

 

 

2) HttpServlet을 상속받는 클래스

 

 

: tomcat WAS를 설정했기 때문에 사용가능

(tomcat이 다운로드 되어 있지 않으면 오류 발생)

이 상속클래스 안에 여러 메소드가 담기게 된다!

 

 

3) 생성자 메소드

 

 

: 객체를 생성, 초기화하는 메소드

 

 

4) init 메소드(initiate)

 

 

: 서블릿 역할을 할 거야! 를 알려주는 초기값을 설정하는 메소드

- 객체 생성 후 자동으로 호출, 딱 한번만 호출되는 메소드

 

왜 한번만 호출?

: 서블릿을 생성하고, 초기화하는 작업은 많은 자원을 필요로 한다.

→ 똑같은 요청이 들어올 때마다 새로 초기화시키는 건 좋지 않음!!!

→ 새로 초기화시키는 게 아닌 메모리에 올려둠

 

 

5) destroy 메소드

 

 

: 서블릿 종료 시 실행되는 메소드

- 딱 한번만 호출됨

 

 

6) service 메소드

 

 

: Client 요청을 처리해주는 메소드 (java에서 main method 역할)

- 요청방식에 get, post, put, delete 이 있는데, service 메소드는 요청방식 구분 없이 모든 요청을 처리하는 메소드다.

 

 

 

이렇게 요청방식에 따라 다른 기능을 수행하고 싶을 때 사용할 수 있다.(doGet, doPost, doPut, doDelete)

 

 

-----------------------------------------------------------------------------------------------------------------------

위에 있는 모든 메소드를 실행해보면 메소드 안에 출력문을 써두었기 때문에 콘솔에는 이렇게 출력된다.

 

 

그리고, F5 누를 때마다 service는 계속 호출되지만 생성자와 초기화는 호출되지 않는다.

생성자와 초기화는 한 번씩만 호출되니까(자원 절약)

 

 

 

 

 

 

728x90