romworld

Servlet 본문

JAVA/개념정리

Servlet

inderrom 2022. 12. 6. 02:34

1.서블릿(Servlet)?

- 자바 플랫폼에서 컴포넌트를 기반으로 한 웹 애플리케이션을 개발할 때 사용하는 핵심기술이다. 동적인 웹 컨텐츠 생성을 가능하게 하는 기술이다. , JSP + 자바기술을 사용 가능하게 해 주는 기술

- 클라이언트 요청을 처리하고 그 결과를 다시 클라이언트에게 전송하는 Servlet 클래스의 구현 규칙을 지킨 자바 프로그램을 말한다.

서블릿의 장점
* 스레드를 기반으로 하므로 웹 애플리케이션 운영에 효율적이다.
*
자바를 기반으로 하므로 자바 API를 모두 사용할 수 있다.
*
운영체제나 하드웨어에 영향을 받지 않으므로, 한번 개발된 애플리케이션은 다양한 서버 환경에서도 실행이 가능하다. * 웹 애플리케이션에서 효율적인 자료 공유 방법을 제공한다.

 

웹 애플리케이션 개발할 때 MVC패턴에서 서블릿(Servlet)을 사용하면 좋은 점 * 컨텐츠와 비즈니스 로직을 분리할 수 있다.
*
컨트롤러와 뷰의 역할 분담으로 인해 웹 디자이너와 개발자 간의 원활한 작업이 가능하다. * 유지보수가 수월하다.

* 기능 확장이 용이하다.
*
현재와 같이 프로그래머가 HTML, 자바스크립트, 스타일시트와 같은 복잡한 기술을 모두 알아야 할 필요는 없다. * JSP 페이지에 HTML,CSS, 자바스크립트 와 자바 소스 코드가 뒤섞이는 스파게티 소스를 막을 수 있다.

 

5.JSP도 서블릿 컨테이너에서 서블릿 코드로 자동으로 변환되어 생성되고 컴파일 되어 실행된다.

6.GET방식과 POST방식

GET 방식

•서버에 있는 정보를 가져오기 위해 설계된 방법이다(예를 들어 HTML, 이미지 등을 웹 브라우저에서 가져오기) •서버로 전달할 수 있는 데이터 크기는 최대 1024바이트까지 가능하다.(사실 웹브라우저의 영향을 받는다.) QUERY_STRING 환경변수를 통해서 서버로 전달되는데, 다음 형식을 따른다.

http://www.xxx.co.kr/servlet/login?id=hj&name=hong

*URL이 노출되기 때문에 보안 문제가 생길 수 있다.

POST 방식

•서버로 정보를 올리기 위해 설계된 방법이다.(예를들어, HTML form에 입력한 내용을 서버로 전달하기(submit)) •서버에 전달할 수 있는 데이터 크기는 제한이 없다.
URL에는 파라미터가 표시되지 않는다.

 

8.서블릿은 WEB-INF/classes와 같이 클래스 경로에 존재해야 하며 /servlet과 같은 URL의 접두어가 붙는 다. 이와 관련된 설정은 web.xml에서 개발자 임의로 변경할 수도 있다.

※참고
비즈니스 로직이란
?

- 업무에 필요한 데이터 처리를 수행하는 응용 프로그램의 일부를 말한다. 이것은 데이터 입력, 수정, 조회 및 보고서 처리 등을 수행하는 루틴, 좀 더 엄밀히 말하면 보이는 것의 그 뒤에서 일어나는 각종 처리를 의미한다.

대개 클라이언트 프로그램은 사용자 인터페이스와 최소한의 비즈니스 로직으로 구성되며, 서버 프로그램은 대부분 비즈니스 로직만으로 되어 있다.

 


* servlet 흐름도

 

Servlet Program의 기본적인 동작 과정

 

1. Web ServerHTTP requestWeb Container(Servlet Container)에게 위임한다. 1) web.xml 설정에서 어떤 URL과 매핑되어 있는지 확인
2) 클라이언트(browser)의 요청 URL을 보고 적절한 Servlet을 실행

2. Web Containerservice() 메서드를 호출하기 전에 Servlet 객체를 메모리에 올린다. 1) Web Container는 적절한 Servlet 파일을 컴파일(.class 파일 생성)한다.
2) .class
파일을 메모리에 올려 Servlet 객체를 만든다.
3)
메모리에 로드될 때 Servlet 객체를 초기화하는 init() 메서드가 실행된다.

3. Web ContainerRequest가 올 때마다 thread를 생성하여 처리한다.
threadServlet의 단일 객체에 대한 service() 메서드를 실행한다.

 

 

웹 프로젝트 개발 환경의 폴더 구조

(Web.xml에서 servlet매핑 예제)

<servlet>
<
servlet-name> 서블릿 이름 </servlet-name> <servlet-class> 클래스 전체 이름 </servlet-class>

</servlet>

<servlet-mapping>
<
servlet-name> 서블릿 이름 </servlet-name> <url-pattern> /호출url </url-pattern>

</servlet-mapping>

 

 

Web Service의 기본적인 동작 과정

HTML Form -> Servlet -> HTML Page

1. 사용자가 웹 페이지 form(HTML Form)을 통해 자신의 정보를 입력한다. (Input)
2. ServletdoGet() 또는 doPost() 메서드는 입력한 form data에 맞게 DB 또는 다른 소스에서 관련된 정보를 검색한다.
3.
이 정보를 이용하여 사용자의 요청에 맞는 적절한 동적 컨텐츠(HTML Page)를 만들 어서 제공한다. (Output)

 

1. HTML Form
) LoginForm.html

 

Form Tag 속성
- Form Tag 속성을 이용하여 어디로, 어떤 방식으로 전송할지 정한다.
- action : form을 전송할 서버 쪽 스크립트 파일 지정
- name : form을 식별하기 위한 이름 지정
- accept-charset : form 전송에 사용할 문자 인코딩을 지정
- target : action에서 지정한 스크립트 파일을 현재 창이 아닌 다른 위치에서 열리도록 지정 - method : form을 서버에 전송하는 방식으로, HTTP 메서드 지정 (GET 또는 POST)
- enctype : 넘기는 ContentType 지정 (주로 파일을 넘길 때 사용)

typemultipart/form-data 로 지정해서 사용

 

Form Methods

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

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

1) 크기 제한: 1024 characters
2) data?를 기준으로 action URL과 분리된다.

) http://www.test.com/hello?key1=value1&key2=value2
-
브라우저에서 웹 서버로 정보를 전달하는 기본 메서드(Default Method)

1) HTTP 메서드를 지정하지 않으면 GET Method를 호출한다.
-
암호와 같은 민감한 정보를 서버에 전달하는 경우에는 GET을 사용하지 않는다.

1) URL은 모두에게 노출되는 정보이기 때문에 보안상 적절하지 않다. - GET 메서드의 사용

1) DB에 영향을 주지 않는 단순히 읽기 위주(read operation)의 작업 2) 몇 번이고 반복해서 처리해도 같은 결과가 나오는 작업

Form Methods

2. POST Method
-
사용자가 입력한 내용(form data)을 별도의 메시지로 보낸다. - Request Bodydata를 추가한다.

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

- POST 메서드의 사용
1) DB에 영향을 주는 작업

'JAVA > 개념정리' 카테고리의 다른 글

Servlet 3 ( request, response, forward,redirect)  (1) 2022.12.06
Servlet 2  (0) 2022.12.06
Log4j  (0) 2022.12.06
Ibatis(2)  (1) 2022.12.06
Ibatis  (0) 2022.12.06
Comments