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을 지정 ( 주로 파일을 넘길 때 사용

댓글
댓글 쓰기