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 |