2014-03-05 1 views
1

기본 페이지에 iframe과 텍스트 상자 (필수 URL을 입력)가 있으므로 사용자가 필수 URL을 입력하면 요청한 페이지를 iframe에로드합니다. doGet을 통해 get 요청을 처리하는 데 HttpServlet을 사용하고 있습니다. 요청한 내용 유형을 구별 할 필요가 있습니다. 파일 (img 또는 script) 인 경우 방금 읽고 읽었으므로, html 페이지 인 경우 약간 수정합니다. doGet 안에 request.getContentType()을 사용하려고 시도했지만 null을 반환합니다. 이렇게 할 방법이 있습니까? 고마워요doGet에서 요청한 콘텐츠의 유형을 결정하십시오.

답변

3

HttpServletRequest#getContentType()Content-Type 헤더의 값을 반환합니다.

요청을 보낼 때 지정해야합니다. Javascript를 사용하면이 작업을 수행 할 수 있습니다.

이상적으로 콘텐츠 문자열을 힌트로 표시하기 위해 쿼리 문자열 매개 변수를 사용할 수도 있지만 이상적이지는 않습니다.

요청 본문의 콘텐츠 유형을 가져 오는 것입니다. 당신이 응답이을해야하는지 콘텐츠를 지정하려면


, 당신은 적절한 미디어 타입으로 Accept 헤더를 지정해야합니다.

URL 확장명을 매칭 할 수도 있습니다. 예를 들어 www.host.com/some/path.xml은 XML을 반환합니다.

+0

첫 번째 요청이 전송되면 (www.example.com) 모든 URL (href, src, ..)이 수정되므로 GET을 통해 리소스를 다운로드 할 때 내 서블릿이 트리거됩니다. doGet에서 요청한 리소스의 유형을 알아야합니다. 이렇게하는 가장 좋은 방법은 doGet 내부의 URL을 파싱하는 것입니다. – akmal

+0

@akmal 요청 본문의 내용을 가져 오시겠습니까? 가장 좋은 방법은'Content-Type' 헤더를 보내는 것입니다. –

+0

@akmal GET 요청 본문에 콘텐츠를 보내지 마십시오. –

0

요청 내용 유형을 알고 싶습니까, 당신은 당신의 요청에 대한 귀하의 URL을 확인하지 않습니다. 요청에 데이터가 없으면 request.getContentType은 null 값을 반환해야합니다. 요청하지 않고 응답 할 수 있습니다. Mabye 매개 변수를 전달하면 원하는 응답을 정의 할 수 있습니다. 응용 프로그램의 동작을 결정하기 위해 응답 유형을 확인해야 할 필요가없는 응답 유형에 따라 달라집니다. 간단한 GET 요청은 응답을 대기합니다. 그리고 그 반응을 토대로 몇 가지 행동을하십시오.

1

본문에 데이터가 포함 된 경우에만 request.getContentType() 메서드가 값을 반환합니다. 그것은 GET이므로 어떤 몸도 포함하지 않습니다. 데이터가있는 경우 URL의 일부이거나 URL에 첨부 된 쿼리 문자열입니다. GET 요청에 Content-type을 선언하면 무의미하므로 읽을 헤더가 없습니다.

요청 URL에서 필요한 데이터를 찾아야합니다.

링크 또는 이미지에서 생성 된 URL 인 경우 URL에서 이름과 확장자를 가져옵니다.

스크립트로 생성되었으므로 쿼리 문자열 (예 : ?file-name=xyz&file-type=png)의 변수 나 추가 경로 정보 (예 : /servlet/xyz/jpeg)와 같은 다른 위치에 정보가있을 수 있습니다. 클라이언트가 데이터를 요청하는 방법에 따라 다릅니다.

관련 문제