본문 바로가기

DEVELOP/BackEnd

서블릿(Servlet) 프로그래밍 2

1. 웹 어플리케이션 디렉토리 구조와 URL 매핑

- 새로운 웹 어플리케이션을 작성할 때 Tomcat 서버의 경우 %Tomcat_HOME%\webapps 폴더 아래에 새로운 폴더를 생성해야 한다.

- 새로운 웹 어플리케이션 생성 = 새로운 Context(ServletContext) 생성

- 서로 다른 두개의 웹 어플리케이션은 독립적인 ServletContext 객체와 매핑되어 각자 독립적인 공간에 자신만의 정보 관리한다.

- 하나의 웹 어플리케이션 내에 여러 JSP 페이지와 Servlet들이 공동으로 활용할 수 있는 저장소로 활용한다.

- 웹 어플리케이션을 Tomcat 서버에서 동작시키는 경우 workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps 디렉토리에 배포된다.

 

- WEB-INF : 웹 어플리케이션의 환경 설정을 하기 위한 곳

  => XML과 class 만 배치해야 한다.

  => html이나 JSP 등을 배치하면 서비스되지 않는다.

- web.xml : 웹 어플리케이션의 배치 정의자(deployment descriptor) 역할을 하는 XML 파일

  => Servlet과 JSP에 대하여 web.xml에 기술된 내용들은 웹 컨테이너가 참조한다.

 

서블릿 등록과 URL 매핑

- 서블릿을 작성하여 실행하려면 웹 컨테이너에 등록시키고 관련 URL을 매핑하는 작업이 필요하다.

- 이를 위해서 web.xml에 기록한다.

- annotation을 이용한 서블릿 설정도 가능하다.

  : 서블릿 클래스 위에 @WebServlet("URL") annotation으로 서블릿 설정을 한다.

 

 

2. HTML 입력 태그 데이터 처리

 

1. form 태그

- form 태그는 사용자가 값을 입력할 수 있도록 하기 위해서 제공되는 HTML 태그이다.

- 사용자 입력을 위한 태그 : input, select, textarea

action

: form의 내용이 웹 서버에 전달되어 처리될 서블릿 url이나 jsp파일명을 기술

  즉, submit 버튼을 누르면 사용자가 입력한 데이터를 전송받을 서버쪽에서 실행 가능한 프로그램의 url 

 

method 

: HTTP 전송 방식을 기술, 보통 GET과 POST 중 하나

 

enctype

: 전송할 데이터의 인코딩 방식을 기술

  설정하지 않으면 기본값 text

 

target 

: 서블릿이나 JSP가 데이터를 처리한 후 결과를 보여줄 프레임이나 창 이름을 기술

 

2. GET 방식과 POST 방식

 

GET 방식

- HTTP 메소드 중 가장 많이 사용되는 메소드. 웹 브라우저에서 서버로 간단한 데이터를 전송할 때 사용한다.

- 값을 전달할 때 URL의 끝 부분에 쿼리스트링으로 전달하고자하는 변수의 이름과 값을 추가한다.

   => http://<host>/servlet/webapp/name="이름"&addr="seoul"

   => 쿼리스트링은 ? 문자로 시작하는 문자열 (name - value 쌍으로 구성되어있음)

- 따로 전송 방식을 설정하지 않으면 기본적으로 GET 방식으로 전송된다.

 

<기본적으로 GET방식으로 요청되는 경우>

* 브라우저 주소창에서 url 입력을 통해 요청한 경우

* 브라우저에서 link(<a> 태그)를 통해 요청한 경우

* form 태그의 method 속성을 생략한 경우

* Javascript의 location.href="URL" 을 통해 이동하는 경우

* Window.open(URL) 으로 특정 페이지를 open 하는 경우

* 이 외에도 특별히 전송 방식을 설정하지 않는 모든 경우

 

POST 방식

- HTTP 요청 헤더 뒤인 요청 바디에 입력 스트림을 통해서 정보를 전달하는 방식

- 입력 스트림은 운영 체제 상에서 일종의 표준 입력(stdin)과 같은 방식으로 서블릿 또는 JSP에게 전달된다.

- 전달되는 데이터의 양에 제한이 없고, 데이터의 모습을 사용자가 볼 수 없으므로 중요한 정보를 전달할 때 사용한다.

 

 

'DEVELOP > BackEnd' 카테고리의 다른 글

URI와 URL의 차이점  (0) 2019.10.14
서블릿(Servlet) 프로그래밍 4  (0) 2019.09.29
서블릿(Servlet) 프로그래밍 3  (0) 2019.09.29
서블릿(Servlet) 프로그래밍  (0) 2019.09.26
웹 어플리케이션의 개념  (0) 2019.09.25