시리즈 기사 디렉토리
Servlet의 작동 원리 - Crazy_xieyi의 블로그 - CSDN 블로그
Servlet 프로젝트(Maven)를 만드는 방법은 무엇입니까? _crazy_xieyi의 블로그 - CSDN 블로그
Tomcat 다운로드, 설치 및 use_crazy_xieyi 블로그 소개 - CSDN 블로그
기사 디렉토리
- 1. Http서블릿
- 2. HttpServlet요청
- 3. HttpServletResponse
1. Http서블릿
Servlet 코드 를 작성할 때 첫 번째 단계는 클래스를 만들고 HttpServlet에서 상속 하고 일부 메서드를 재정의하는 것입니다.
메서드 이름 | 통화 타이밍 |
열
|
HttpServlet
인스턴스화 후 한 번 호출됨
|
파괴
|
HttpServlet
인스턴스가 더 이상 사용되지 않을 때 한 번 호출됩니다.
|
서비스
|
HTTP
요청이 수신 될 때 호출됨
|
도겟
|
GET
요청이
수신 될 때 호출됨
(
서비스 메소드
에 의해 호출됨
)
|
두포스트
|
POST
요청이
수신 될 때 호출됨
(
서비스 메소드
에 의해 호출됨
)
|
doPut/doDelete/doOptions/...
|
다른 요청이 수신될 때 호출됨
(
서비스 메소드
에 의해 호출됨
)
|
실제로 개발할 때 주로 doXXX 메서드 를 다시 작성하고 init/destory/service 를 거의 다시 작성하지 않습니다 . 참고 : HttpServlet 의 인스턴스는 HTTP 요청이 수신 될 때마다 인스턴스를 다시 생성하는 대신 프로그램이 시작될 때 한 번만 생성됩니다 .
그렇다면 서블릿의 수명 주기는 무엇입니까?
서블릿은 인스턴스화 후 init 메소드를 한 번 호출하고, 서블릿은 요청을 받을 때마다 서비스를 한 번 호출하고, 서블릿은 소멸 전에 destroy를 한 번 호출합니다.
2. HttpServlet요청
Tomcat
이 Socket API
를 통해
HTTP 요청 ( 문자열 ) 을 읽고 HTTP 프로토콜 의 형식에 따라 문자열을 다음으로 파싱할 때
HttpServletRequest
객체.
방법 | 설명하다 |
문자열 getProtocol()
|
요청된 프로토콜의 이름과 버전을 반환합니다.
|
문자열 getMethod()
|
요청된 HTTP 메서드
의 이름을 반환합니다(
예:
GET
,
POST
또는
PUT ).
|
문자열 getRequestURI()
|
프로토콜 이름 에서
HTTP 요청 쿼리 문자열의 첫 번째 줄까지의 요청 URL
부분을
반환합니다.
|
문자열 getContextPath()
|
요청의 컨텍스트를 나타내는 요청
URI 의
일부 를 반환합니다.
|
문자열 getQueryString()
|
경로 뒤에 있는 요청
URL 에 포함된
쿼리 문자열을 반환합니다.
|
열거
getParameterNames()
|
이 요청에 포함된 매개변수의 이름을 포함하는
String 객체
의 열거를 반환합니다.
|
문자열 getParameter(문자열
이름)
|
요청 매개변수의 값을 문자열로 반환하거나 매개변수가 존재하지 않는 경우 null을 반환합니다.
|
끈[]
getParameterValues(문자열
이름)
|
주어진 모든 요청 매개변수의 값을 포함하는 String 객체의 배열을 반환하거나 매개변수가 존재하지 않는 경우 null을 반환합니다.
|
열거
getHeaderNames()
|
요청에 포함된 모든 헤더를 포함하는 열거형을 반환합니다.
|
문자열 getHeader(문자열
이름)
|
지정된 요청 헤더의 값을 문자열로 반환
|
끈
getCharacterEncoding()
|
요청 본문에 사용된 문자 인코딩의 이름을 반환합니다.
|
문자열 getContentType()
|
요청 본문 의
MIME
유형을 반환하거나 유형을 알 수 없는 경우
null 을 반환합니다.
|
int getContentLength()
|
제공된 입력 스트림과 함께 요청 본문의 길이를 바이트 단위로 반환하거나 길이를 알 수 없는 경우 -1을 반환합니다
.
|
입력스트림
getInputStream()
|
요청의 본문
내용
을 읽는 데 사용되며 InputStream 객체 를 반환합니다
.
|
이러한 방법을 통해 요청에 있는 정보의 다양한 측면을 얻을 수 있으며,
요청 객체는 서버에서 수신한 내용
이므로
수정해서는 안 됩니다
.
따라서 위의 방법은
" 쓰기 " 가 아닌
"
읽기
"
방법
일 뿐입니다.
방법.
3. HttpServletResponse
Servlet 에서
doXXX 메소드의 목적
은 요청
에 따라 해당 값을 계산 한 다음 응답 데이터를 다음으로 설정하는 것입니다.
HttpServletResponse
개체에서. 그런 다음 Tomcat 은
HttpServletResponse 개체 를 HTTP 프로토콜 형식 에 따라 문자열로
변환하고
Socket을 통해 브라우저에 다시 씁니다 .
방법 | 설명하다 |
무효 setStatus(int sc)
|
이 응답에 대한 상태 코드 설정
|
void setHeader(문자열 이름,
문자열 값)
|
주어진 이름과 값 으로
헤더 를 설정합니다.
이름 이 이미 존재하는
경우
이전 값을 덮어씁니다.
|
무효 addHeader(문자열
이름, 문자열 값)
|
주어진 이름과 값 으로
헤더 를 추가합니다.
name 이 이미 존재하는
경우
이전 값을 덮어쓰지 않고 새 키-값 쌍을 병렬로 추가합니다.
|
무효 setContentType(문자열
유형)
|
클라이언트에 보낸 응답의 콘텐츠 유형을 설정합니다.
|
무효의
setCharacterEncoding(문자열
문자 집합)
|
클라이언트에 전송된 응답 의 문자 인코딩(
MIME
charset) 을 설정합니다(예: UTF-8).
|
무효 sendRedirect(문자열
위치)
|
지정된 리디렉션 위치
URL 을 사용
하여 클라이언트에 임시 리디렉션 응답을 보냅니다.
|
PrintWriter getWriter()
|
본문 에
텍스트 형식 데이터 를 쓰는 데 사용
|
출력스트림
getOutputStream()
|
이진 형식 데이터 를
본문 에 쓰는
데 사용됩니다 .
|
참고
:
응답객체는 서버가 브라우저에 반환하고자 하는 내용
이며
여기서 중요한 정보는 프로그래머가 설정
하므로
위의 방법
메소드는 모두
"
write
"
메소드입니다.
상태 코드
/
응답 헤더 에 대한 설정은
getWriter/getOutputStream
앞에 위치해야 합니다
.
그렇지 않으면 설정이 유효하지 않을 수 있습니다.