프롤로그
Servlet 개념에 대해 정리해보도록 하겠습니다.
HTTP
- 텍스트 기반의 통신 규약으로 인터넷에서 데이터를 주고받을 수 있는 프로토콜
- TCP/IP를 이용하는 응용 프로토콜
- HTTP는 연결상태를 유지하지 않는 비연결성 프로토콜
(이러한 단점을 해결하기 위해 Cookie와 Session 등장)
- HTTP는 연결을 유지하지 않는 프로토콜이기 때문에 요청/응답 방식으로 동작
- Header와 Body로 구성
- 정적 웹페이지: HTML
- 서버에 미리 작성해 놓은 문서를 그대로 브라우저에 전달하는 웹페이지
- 동적 웹페이지: JSP, Servlet
- 서버에 저장되어 있는 데이터들을 가공, 변경하여 브라우저에 전달하는 웹페이지
Servlet
- 동적 웹어플리케이션 컴포넌트로 .java 확장자
- JAVA언어 안에 HTML문서가 있음
<기본구조>
- Servlet클래스는 HttpServlet 클래스를 상속 받음
- GET 방식
-
URL값으로 정보가 전송되어 보안에 약함
-
Form태그 method 속성값 = get
-
URL로 직접 접속하는 경우 호출
- POST 방식
- header를 이용해 정보가 전송되어 보안에 강함
- Form태그 method 속성값 = post
- Servlet안에서 html 작성
- HttpServletResponse 객체의 setContentType() 메소드 호출하여 응답방식 결정
response.setContentType("text/html; charset=euc-kr");
- HttpServletResponse 객체의 getWriter() 메소드를 이용하여 출력 스트림을 얻음
PrintWriter writer = response.getWriter();
< HTML form 태그>
- 서버쪽으로 정보를 전달할 때 사용하는 태그
- input
- 입력 태그의 종류를 지정
- 속성(type, name, value)
1) type: 태그 종류 지정(ex. text, password, submit, checkbox, radio, reset)
- < input type="submit" value="전송">
- type = checkbox
- 데이터값을 여러 개 전송해야 할 때 사용
- name값을 동일하게 해야 선택된 값이 넘어감
- 따라서 배열 형태로 서버로 값이 넘어감
2) name: input태그 이름 - 서버로 값을 전달하기 위해 담아서 갈 변수명
3) value: name에 해당하는 값 (ex. name = value)
< Servlet Parameter >
- submit버튼을 클릭하여 데이터를 서버로 전송하면, Servlet에서는 HTTPServlet객체를 이용하여 Parameter값을 얻을 수 있다
<웹 데이터 유지 기술>
-
웹은 http 프로토콜을 사용하여 통신하고, http프로토콜은 무연결성 프로토콜
-
비연결성이기 때문에 새로운 페이지로 넘어갈 때 값이 유지되지 않는다
-
이러한 특징을 보안하기 위해 웹 데이터를 유지하는 기술이 있다
-
ServletContext: Server에 저장되어 웹 어플리케이션이 종료될 때까지 유지되는 기술
-
Cookie: Client에 저장되어 요청할 때 저장된 값을 가지고 유지되는 기술
-
Session: Server에 저장되어 Client가 요청할 때 Server에 저장된 값을 제공하여 유지되는 기술
-
ServletRequest: 페이지에서만 유지되지만 요청재지정이라는 기술을 통해 다른 페이지로 값을 넘겨 유지되는 기술
< RequestDispatcher 클래스 >
- Servlet 또는 JSP에서 요청을 받은 후 다른 페이지로 요청을 위임할 수 있다
- 위임 방법에는 RequestDispatcher 클래스와 HTTPServletResponse클래스가 있다
- RequestDispatcher는 요청 객체(request)를 위이하는 페이지에 동일하게 전달 가능
- Client가 처음에 요청한 URL을 그대로 가지고 위임받은 페이지로 넘어가게 됩니다.
- 사용방법
- forward 메소드를 사용하여 지정된 위치로 요청과 응답을 실어서 페이지 이동
- include 메소드를 사용하여 지정된 위치로 요청과 응답을 실어서 현재 페이지를 포함하여 이동
< HTTPServletResponse 클래스 >
- RequestDispatcher와 동일하게 요청을 위임하는 클래스
- 요청객체를 위임받은 페이지에 전달하는 것이 아닌, 새로운 요청객체를 생성
- 사용방법