2020.11.25 고급 자바 공부 - Servlel

Servlet 이란? 

: 자바 플랫폼에서 컴포넌트를 기반으로 한 웹 애플리케이션을 개발할 때 사용하는 핵심기술이다. 즉 jsp + 자바기술 사용 가능케 해주는 기술이다. 


장점 


스레드를 기반으로 하므로 웹 애플리케이션의 운영에 효율적이다. 

자바를 기반으로 하므로 자바 api 를 모두 사용할 수 있다. 


*API(Application Programming Interface, 응용 프로그램 프로그래밍 인터페이스)는 응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다.



운영체제나 하드웨어에 영향을 받지 않으므로, 한번 개발된 애플리케이션은 다양한 서버 환경에서도 실행이 가능하다. 

웹 애플리케이션에서 효율적인 자료 공유 방법 제공한다. 

 

기술 변천 

프로그램에서 html 핸들링, 컨텐츠와 비즈니스 로직이 분리되지 않아서 개발과 관리의 어려움 

-> jsp 등장 html 에서 프로그램 핸들링 가능, jsp 스크립팅 기술 

-> html 에서 프로그램 핸들링. 컨텐츠와 비즈니스 로직이 분리되진 않음 컨텐츠 관리는 쉬워졌지만 프로그램 관리는 이전보다 더 복잡해짐 


mvc 패턴 : 애플리케이션 구성요소 단위로 역할 분담 


모델 : 자바클래스 ( DAO , VO ) 

뷰 : JSP, JSTL 

컨트롤러 : 서블릿 


* JSP  : 자바 서버 페이지는 HTML내에 자바 코드를 삽입하여 웹 서버에서 동적으로 웹 페이지를 생성하여 웹 브라우저에 돌려주는 서버 사이드 스크립트 언어이다. Java EE 스펙 중 일부로 웹 애플리케이션 서버에서 동작한다

JDBC(Java Database Connectivity)는 자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API이다. JDBC는 데이터베이스에서 자료를 쿼리하거나 업데이트하는 방법을 제공한다.



웹애플리케이션 개발시 좋은점 (서블릿 ) 

- JSP 페이지에 HTML , CSS, 자바스크립트와 자바소스 코드가 뒤섞이는 것을 막을 수 있다. 











Form Methods


- form 을 서버에 전송하는 방식으로, 두가지 HTTP 메소드 지정할 수 있다. 


1. Get method 

- 사용자가 입력한 내용( form data) 이 url 뒤에 텍스트 문자열로 추가된다. 

1) 크기 제한 : 1024 characters 

2) data 는 ? 를 기준으로 action URL 과 분리된다. 


3) 브라우저에서 웹서버로 정보를 전달하는 기본 메서드 

    1) HTTP 메서드를 지정하지 않으면 기본적으로 GET Method 를 호출한다. 

4) 암호화 같은 민감한 정보를 서버에 전달하는 경우에는 get을 사용하지 않는다. 

    1) URL은 모두에게 노출되는 정보이기 때문에 보안상 적절하지 않다. 

5) GET 메서드의 사용

    1) DB 에 영향을 주지 않는 단순히 읽이 위주( read operation) 의 작업

    2) 몇번이고 반복해서 처리해도 같은 결과가 나오는 작업 



2. POST Method 

    1) 사용자가 입력한 내용 ( form data) 을 별도의 메시지로 보낸다. 

    2) Request Body 에 data를 추가한다. 

        1) URL 에 직접적으로 data 가 노출되지 않기 때문에 GET METHOD 보다 보안상으로             조금 더 안전하다. 

    3) POST 메서드의 사용

        1) DB에 영향을 주는 작업 




Servlet Program 의 기본적인 동작 과정 




1. Web Server 는 HTTP request 를 Web Container ( Servlet Container ) 에게 위임한다. 

    1) web.xml 설정에서 어떤 URL 과 매핑되어 있는지 확인

    2) 클라이언트(browser)의 요청 URL 을 보고 적절한 Servlet 을 실행한다. 

2. Web Container 는 service() 메서드를 호출하기 전에 Servlet 객체를 메모리에 올린다. 

    1) Web Container 는 적절한 Servlet 파일을 컴파일(.class 파일 생성 ) 한다. 

    2) .class 파일을 메모리에 올려 Servlet 객체를 만든다. 

    3) 메모리에 로드될 때 Servlet 객체를 초기화하는 init() 메서드가 실행된다. 

3. Web Container 는 Request 가 올때마다 thread 를 생성하여 처리한다. 

    각 thread는 Servlet 의 단일 객체에 대한 service() 메서드를 실행한다. 




 web.xml 에서 servlet 매핑 예제 







HTML Form -> Servlet -> HTML Page 


1. 사용자가 웹 페이지 form( HTML Form) 을 통해 자신의 정보를 입력한다 (input) 

2. Servlet doGet() 또는 doPost() 메서드는 입력한 form data 에 맞게 DB 또는 다른 소스에서 관련된 정보를 검색한다. 

3. 이 정보를 이용하여 사용자의 요청에 맞는 적절한 동적 컨텐츠 ( HTML Page) 를 만들어서 제공한다 ( Output ) 



Form Tag 속성 


Form Tag 속성을 이용하여 어디로, 어떤 방식으로 전송할 지 정한다. 


action : form 을 전송할 서버 쪽 스크립트 파일 지정

name : form 을 식별하기 위한 이름 지정 

accept-charset : form 전송에 사용할 문자 인코딩을 지정 

target : action 에서 지정한 스크립트 파일을 현재 창이 아닌 다른 위치에서 열리도록 지정

method : form 을 서버에 전송하는 방식으로 , http 메서드 지정 ( get 또는 post) 

enctype : 넘기는 Content 의 Type을 지정 ( 주로 파일을 넘길 때 사용 















댓글