(3) HTTP

6644 단어 Servlet
HTTP 프로필:HTTP:HyperText Transfer Protocol(하이퍼텍스트 전송 프로 토 콜)은 TCP/IP 프로 토 콜 을 바탕 으로 작 동 하 며 모든 WWW 파일 은 이 표준 을 준수 해 야 합 니 다.HTTP 를 설계 하 는 최초의 목적 은 HTML 페이지 를 발표 하고 수신 하 는 방법 을 제공 하기 위 한 것 이다.① HTTP 프로 토 콜 은 TCP/IP 프로 토 콜 에 기반 을 둔 ② HTTP 프로 토 콜 1.0 1.1 버 전 으로,현 재 는 1.1.1.0 짧 은 연결 세 션 이 끝나 면 1.1 긴 연결 세 션 이 끊 긴 후 일정 기간 유 지 됩 니 다.
HTTP 요청 부분:
기본 구조:요청 행:GET/LoginDemo/LoginServlet HTTP/1.1 메시지 헤더:Accept:text/html,application/xhtml+xml,/Accept-Language:zh-CN Accept-Encoding:gzip,deflate Host:localhost:8080 연결:Keep-Alive(빈 줄)내용 체:
요청 방법:자주 사용 하 는 GET POST
HTTP 응답 헤더 설명:
Accept:text/html,image/*    
[      ,     ,  ,  ,   ]
Accept-Charset:ISO-8859-1
[        ISO-8859-1 ]
Accept-Encoding:gzip,compress
[      gzip,compress        
                  ,     ]
Accept-Language:en-us,zh-cn
[        ,   ]
Host:www.sohu.com:80
[        www.sohu.com:80 ]
If-Modified-Since:Tue,11 Jul 2000 16:16:16
[      ,            ,       ....  .. 
            ,   。   ,      。]
Referer:http://www.sowu.com
[      ,     。            ]
User-Agent:Mozilla/4.0(compat...........)
[      ,      ]
Cookie
[    ]
Connection:close/Keep-Alive
[     ,     ,       ]
Date:Tue,11 Jul.......
[        HTTP       ]

HTTP 응답 부분:
기본 구조:상태 줄:HTTP 버 전 번호 상태 코드 원인 설명 메시지 헤더:(빈 줄)내용:
상태 줄:형식:HTTP 버 전 번호 상태 코드 원인 설명 예:HTTP/1.1 200 OK 상태 코드(status)는 서버 가 요청 한 처리 결 과 를 표시 하 는 데 사 용 됩 니 다.세 자리 의 10 진수 입 니 다.응답 상태 코드 는 5 가지 로 나 뉜 다.
상태 코드
속뜻
100~199
요청 을 성공 적 으로 받 았 음 을 나타 내 고 클 라 이언 트 에 게 계속 제출 하 라 고 요구 하 며 다음 요청 이 있어 야 전체 처리 과정 을 완성 할 수 있 습 니 다.
200~299
요청 을 성공 적 으로 받 았 고 전체 처리 과정 이 완료 되 었 음 을 나타 내 며 200 을 흔히 볼 수 있 습 니 다.
300~399
요 구 를 완성 하기 위해 서 고객 은 요 구 를 더욱 세분 화 해 야 한다.예 를 들 어 요청 한 자원 은 새로운 주 소 를 이동 하여 302,307 을 자주 사용 합 니 다.
400~499
클 라 이언 트 요청 에 오류 가 있 습 니 다.자주 404
500~599
서버 쪽 오류 발생,상용 500
주:각 범위 내의 모든 숫자 가 의미 가 있 는 것 은 아 닙 니 다.예 를 들 어 100~199 는 이 구간 의 상태 코드 가 모두 존재 하 는 것 이 아 닙 니 다.아 날로 그 302 상태 코드:
response.setStatus(302);
response.setHeader("Location","/webapp.servlet");
//           ↓
response.sendRedirect("/webapp.servlet");

응답 헤더 설명:
Location:http://www.baidu.com 
[          URL ]

Server:apache tomcat 
[      ,   Tomcat ]

Content-Encoding:gzip
[      ,      gzip      ]

Content-Length80
[               80    ]

Content-Type:text/html; charset=GB2313
[      text/html;   gb2312 ]

Content-Language:zh-cn
[      ]

Last-Modified:tue,11 jul 2001-2-2
[      ,          ,     ,       ,     ]

Refresh1;url=http://www.baidu.com
[    ,     URLURL       ,      ]

Content-Disposition:attachment;filename=aaa.zip
[      ,       ]
     :
①        web              
②                

Transfer-Encoding:chunked
[      ]

SetCookie:ss=Q0; path=/search
[    ]

Expires:-1  -1    ,response.setDateHeader("Expires",-1);
[      ,       ] IE     ↑
Cache-Control:no-cache
[      ,       ]       ↑
Pragma:no-cache
[      ,       ]       ↑

Connection:close/KeepAlive
[     ,    ]

Date:tue,11.......
[        ]

파일 다운로드 사례(도 난 방지 체인):
필요:① 도 난 방지 체인 ② 하나의 Servlet 파일 은 여러 파일 다운 로드 를 지원 합 니 다.
View 페이지://View 페이지 에서 사용 하 시 겠 습 니까?매개 변수 URL 을 전달 합 니 다:....../DownloadServlet?filename=myeclipse1.jpg
Servlet 페이지:
//    URL
String url = request.getHeader("Referer");
//    URL       
if (url == null||!=
     (url.startsWith("http://localhost:8080/DownloadDemo"))) {
     response.sendRedirect("/DownloadDemo/Error");
}
String filename = request.getParameter("filename");
response.setHeader("Content-Disposition", "attachment;filename=" + filename);
//       
String realPath = this.getServletContext().getRealPath("/" + filename);
FileInputStream fis = new FileInputStream(realPath);
OutputStream os = response.getOutputStream();
byte[] buffer = new byte[1024];
int length = -1;
while ((length = fis.read(buffer)) > 0) {
    os.write(buffer, 0, length);
}
os.close();
fis.close();

좋은 웹페이지 즐겨찾기