2013-07-31 3 views
0

저는 servelts 프로그래밍을 처음 접했습니다. 그리고 오늘 나는 그것을 배우기 시작했다. 나는 조금 혼란 스럽다.서블릿과의 혼동

HttpServletRequest. 클래스 doGET()에는 형식 "쿼리"데이터, HTTP 요청 헤더 및 클라이언트의 호스트 이름과 같은 일부 메서드가있는 자습서로 작성되었습니다.

내가 이해하는 한, HttpServletRequest는 프로토콜과 비슷한 것으로, 서버 측에서 의 요청을 클라이언트 측에 전달할 수 있습니다. 내 질문은, 왜 클라이언트 측이 클라이언트의 호스트 이름이나 HTTP 요청 헤더와 같은 것을 알고있는
에서 흥미 롭다는 것입니다.

만약 내가 스택 오버 플로우로이 계정을 잃고 싶지 않기 때문에 질문이 바보 인 경우 제 질문에 투표하지 마십시오.

+0

질문이 downvoted 때 다만 FYI, 당신은 당신의 계정을 잃지 않을 것이다 – Uooo

+0

나는 그 때문에 2 전에 분실했다 –

+0

당신은 [HTTP 프로토콜] (http://de.wikipedia.org)의 기초를 알고 있는가?/wiki/Http)? 문제는 서블릿 대신 HTTP 프로토콜에 대한 지식이 부족한 것처럼 보입니다. – Uooo

답변

0

우선 HttpServletRequest은 서블릿 컨테이너에 의해 구현 된 인터페이스입니다. HttpServlet은 서블릿이 확장되어 모든 HTTP 특정 메소드를 가져올 수있는 편리한 클래스입니다. doGet()GET 요청을 처리하는 방법 중 하나입니다.

HttpServletRequest의 프로토콜은 같은 서버가 클라이언트 측

HTTPrequest-response 프로토콜이기로부터 요청을 수신 할 수있다. 컨테이너는 웹 서버가 수신 한 실제 요청에서 HttpServletRequest 개체를 만들고 서블릿의 service() 메서드로 전달합니다.

에서 클라이언트의 호스트 이름 또는 HTTP 요청 헤더와 같은 것을 알면 CLIENT면에서 흥미로운 이유는 무엇입니까?

서블릿에 관해서는 서버 측에서 항상 실행됩니다. 따라서 request.getHeader()과 같은 메소드는 서블릿에서 클라이언트가 보낸 요청에서 헤더를 읽는 데 사용됩니다. 이 헤더는 요청 (또는 응답)에 대한 추가 정보를 제공합니다. 요청과 관련된 많은 헤더는 서버 자체에서 처리됩니다. 예를 들어, 서버가 문서에 대한 액세스를 제한하는 방법을 예로 들어 보겠습니다. 서버는 HTTP 헤더를 사용하며 서블릿은 세부 사항을 알 필요가 없습니다. 서버가 제한된 페이지에 대한 요청을 받으면 요청에 유효한 사용자 이름과 암호가 들어있는 적절한 Authorization 헤더가 있는지 확인합니다. 그렇지 않으면 서버 자체가 WWW-Authenticate 헤더가 포함 된 응답을 보내 브라우저에 자원에 대한 액세스가 거부되었음을 알립니다. 클라이언트가 적절한 Authorization 헤더를 포함하는 요청을 전송하면 서버는 액세스 권한을 부여하고 getRemoteUser() 호출을 통해 서블릿에 사용자 이름에 대한 호출 된 액세스 권한을 부여합니다.

HTTP Made Really Easy, An Overview of Request Headers을 읽으십시오.