티스토리 뷰

1. 객체 생성 및 삭제


- HttpServletRequest는 클라이언트가 서버에 보내는 요청정보를 처리하는 객체

- HttpServletResponse는 서버가 클라이언트로 보내는 응답 정보를 처리하는 객체

 

서블릿 처리 순서

  1. 클라이언트가 웹 브라우저에서 서비스를 요청한다. 이때 HTTP 프로토콜 기반으로 요청정보가 만들어져 웹서버에 전달된다.
  2. 웹서버는 클라이언트로부터 전달받은 요청정보의 URI를 살펴보고, 서블릿이라면 서블릿 컨테이너에 처리를 넘긴다.
  3. 서블릿 컨테이너는 요청받은 서블릿 클래스 파일을 찾아 실행한다.
  4. 실행할 때 첫 순서는 최초의 요청인지 파악한다. 최초의 요청이라면 메모리에 로딩 후 객체를 생성하고 init() 메서드를 호출한다.
  5. init()  메소드 실행이 끝난 뒤 최초의 요청이든지 그렇지 않든지 서블릿 실행 요청이 들어올 때마다 실행되는 작업으로, 서블릿 컨테이너는 HttpServletRequest와 HttpServletResponse 객체를 생성한다.
  6. service() 메소드를 호출한다. 이때 앞에서 생성한 HttpServletRequest와 HttpServletResponse 객체의 주소를 인자로 넘긴다. service() 메서드에서는 인자로 받은 두 객체를 사용하여 프로그램을 구현한다.
  7. service() 메소드가 완료되면 클라이언트에게 응답을 보내고 서버에서 실행되는 프로그램은 완료된다. 이때 HttpServletRequest와 HttpServletResponse 객체는 소멸한다.
꼭 기억해야 할점!
HttpServletRequestHttpServletResponse 객체는 service()메서드가 실행되기 전에 생성되었다가 끝나면 소멸한다. 따라서 service() 메소드가 실행되는 동안에만 메모리에 상주하고 있어 그동안에만 사용할 수 있다.

 

 

 

 

2. 응답 정보 처리 - HttpServletResponse


- 서비스를 요청한 클라이언트에게 응답하기 위한 기능을 처리할 때 javax.servlet 패키지의 ServletResponse 인터페이스를 사용한다.

- 이 인터페이스를 이용하여 클라이언트의 요청에 응답하기 위한 출력 스트림을 추출하거나 버퍼의 크기를 설정하고, 응답할 내용의 타입과 문자셋을 설정하는 등의 작업을 수행할 수 있다.

 

ServletResponse 인터페이스의 주요 메소드

 

HttpServletResponse 인터페이스 주요 메소드

 

 

 

3. 요청정보 처리 - HttpServletRequest


- 브라우저에 적절한 URL 문자열을 이용하여 웹서버에 서블릿 수행을 요청할 때 일정한 형식의 다양한 정보를 서버로 전달한다.

- HttpServletRequest의 상위 객체인 ServletRequest는 클라이언트로부터 서비스 요청이 들어올 때 호출되는 HttpServlet의 service(ServletRequest, ServletResponse) 메서드의 첫 번째 인자로 전달되며, 이 메서드는 다시 service(HttpServletRequest, HttpServletResponse) 메서드를 호출한다. 만일 개발한 서블릿이 service() 메소드를 재정의하지 않았다면 다음과 같은 순서로 처리된다.

 클라이언트 -> service(ServletRequest, ServletResponse) -> service(HttpServletRequest, HttpServletResponse)

 

 

 

Collection이란?


- 배열처럼 처음에 크기를 지정하면 고정되어서 변경할 수 없는 것이 아니고, 얼마든지 유동적으로 크기를 바꿀 수 있다. 또한, 하나의 그룹에 서로 다른 타입의 데이터를 저장할 수도 있다.

 

Enumeration과 Iterator

- 이 두 객체의 공통점은 커서(cursor) 개념으로 접근한다는 점이다. Collection 안에 있는 모든 요소를 차례로 접근할 때 사용하면 편리하며, 속도 면에서도 빠르다.

 

자바의 다형성(Polymorphism)

- 서로 다른 타입의 데이터를 한 곳에 저장할 때는 Collection 객체에, 추출할 때는 Object 타입으로 변환한다.

- 실제 메모리에 만들어져 있는 객체는 하위 객체인데, 이 객체의 메모리 시작 주솟값을 가지는 참조 변수의 타입을 상위 객체 타입으로 선언하는 것을 자바의 다형성(Polymorphism)이라 한다.

- 정리하자면, 자바에서 다형성이란? 나 자신뿐만 아니라 상속받고 있는 상위 객체 타입으로 지정할 수 있는 것을 의미한다.

 

제네릭(Generics)

- Collection에서 추출한 후 사용할 때는 매번 타입 캐스팅이라는 불필요한 작업을 해야 했다. 제네릭은 Collection 객체를 선언할 때 이 Collection에 어떤 타입의 데이터가 저장될 것인지 미리 설정한다. 그러면 저장할 때도 추출할 때도 설정된 타입으로 자동으로 처리한다.

 

 

 

4. 정리


- HttpServletRequest는 서비스를 요청한 클라이언트의 요청정보를 처리하는 객체이다.

 

- HttpServletResponse는 웹서버가 클라이언트에 보내는 응답 정보를 처리하는 객체이다.

 

- HttpServletRequest와 HttpServletResponse는 클라이언트로부터 서비스 요청이 있을 때마다 생성되며 웹서버가 응답한 후에 삭제된다.

 

- HttpServletRequest는 ServletRequest를 상속하고, HttpServletResponse는 ServletResponse를 상속한다.

 

- HttpServletResponse의 getWriter( )는 클라이언트와 연결된 출력 스트림을 생성하여 반환한다.

 

- HttpServletResponse의 setContentType( )은 응답 데이터의 문서 타입과 문자셋을 설정한다.

 

- 한글 지원이 가능한 문자는 EUC-KR, UTF-8 등이 있다.

 

- HttpServletRequest의 getRemoteAddr( )은 클라이언트의 IP 주소를 반환한다.

 

- HttpServletRequest의 getRequestURI( )은 클라이언트가 요청한 문서의 URI를 반환한다.

 

- HttpServletRequest의 getMethod( )는 클라이언트의 요청 방식을 반환한다. 

 

'JSP' 카테고리의 다른 글

Servlet ) 1. Servlet 구현 및 실행  (0) 2021.04.10
JSP ) 1. 웹과 HTTP 프로토콜의 이해  (0) 2021.04.04
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
글 보관함