JSP 에서 Servlet 의 Request 와 Response 의 용법 과 차이
소개:웹 서버 는 클 라 이언 트 의 http 요청 을 받 을 때마다 요청 을 대표 하 는 request 대상 과 응답 을 대표 하 는 response 대상 을 각각 만 듭 니 다.request 와 response 대상 은 요청 과 응답 을 대표 합 니 다.그러면 저 희 는 클 라 이언 트 가 제출 한 데 이 터 를 얻 으 려 면 request 대상 만 찾 으 면 됩 니 다.클 라 이언 트 에 데 이 터 를 출력 하려 면 response 대상 만 찾 으 면 됩 니 다.
하나,요청
Request 는 요청 대상 을 대표 합 니 다.요청 줄,요청 헤더,실체 내용 을 가 진 작업 방법 을 봉 인 했 습 니 다.이 대상 이 제공 하 는 방법 을 통 해 클 라 이언 트 가 요청 한 모든 정 보 를 얻 을 수 있 습 니 다.
1.용기 로 사용
setAttribute(String name,Object o) request request
getAttribute(String name) request name
removeAttribute(String name) request name
getAttributeNames() request
2.클 라 이언 트 정보 획득
getRequestURL() URL。
getRequestURI() 。
getRemoteAddr() IP 。
getRemoteHost() 。
getRemotePort() 。
getLocalAddr() WEB IP 。
getLocalName() WEB 。
getQueryString() 。
getPathInfo() URL 。 URL Servlet , “/” 。
3.클 라 이언 트 요청 헤더 획득
getHeader(string name)
getHeaders(String name)
getHeaderNames()
4.클 라 이언 트 요청 인자 획득(클 라 이언 트 가 제출 한 데이터)
getParameter(String) ( )
getParameterValues(String name) ( )
getParameterNames() ( )
getParameterMap() ( )
5.request 접수 폼 제출 중국어 매개 변수 난 장 문제 해결(1)get 방식 으로 양식 제출:
get 방식 으로 전 송 된 데이터 에 대해 request 는 지정 한 인 코딩 으로 데 이 터 를 받 는 것 을 설정 하 더 라 도 유효 하지 않 습 니 다(왜 무효 인지 알 수 없습니다).기본 값 은 ISO 8859-1 이라는 문자 인 코딩 으로 데 이 터 를 받 습 니 다.클 라 이언 트 는 UTF-8 의 인 코딩 전송 수 를 서버 에 표시 합 니 다.한편,서버 측의 request 대상 은 ISO 8859-1 이라는 문자 인 코딩 을 사용 하여 데 이 터 를 받 습 니 다.서버 와 클 라 이언 트 가 소통 하 는 인 코딩 이 일치 하지 않 아서 중국어 오류 가 발생 합 니 다.
해결 방법:
1)데 이 터 를 받 은 후,먼저 request 대상 이 ISO 8859-1 문자 인 코딩 으로 받 은 원본 데이터 의 바이트 배열 을 가 져 온 다음,바이트 배열 을 통 해 지정 한 인 코딩 으로 문자열 을 구축 하여 난 코드 문 제 를 해결한다.
String name = request.getParameter("name");//
name =new String(name.getBytes("ISO8859-1"), "UTF-8") ;// request ISO8859-1 , ,
2)server.xml 에서 설정
URIEncoding=utf-8
(2)post 방식 으로 양식 제출:어 지 러 운 코드 가 발생 하 는 이 유 는 서버 와 클 라 이언 트 가 소통 하 는 인 코딩 이 일치 하지 않 아서 발생 한 것 입 니 다.따라서 해결 방법 은 클 라 이언 트 와 서버 사이 에 통 일 된 인 코딩 을 설정 한 다음 에 이 인 코딩 에 따라 데이터 전송 과 수신 을 하 는 것 입 니 다.
request.setCharacterEncoding("UTF-8");
6.Request 대상 전송 요청
request.getRequestDispatcher("/test.jsp").forward(request, response);
request.getRequestDispatcher("/test.jsp").include(request, response);
forward() , HttpResponse
include() , HttpResponse ,
둘째,응답Response 는 응답 을 대표 하기 때문에 메시지 의 상태 코드,응답 헤드,실체 내용 을 모두 조작 할 수 있 습 니 다.
1.클 라 이언 트(브 라 우 저)에 게 데 이 터 를 보 내 는 방법
getOutputStream()
getWriter()
2.클 라 이언 트(브 라 우 저)에 응답 헤드 를 보 내 는 방법
addDateHeader()
addHeader()
addIntHeader()
containsHeader()
setDateHeader()
setHeader()
setIntHeader()
예 를 들 면:
response.setHeader("content-type", "text/html;charset=UTF-8");
3.클 라 이언 트(브 라 우 저)에 응답 상태 코드 를 보 내 는 방법--setStatus()인 스 턴 스 코드:
private void downloadFileByOutputStream(HttpServletResponse response)
throws FileNotFoundException, IOException {
//1.
String realPath = this.getServletContext().getRealPath("/download/1.JPG");
//2.
String fileName = realPath.substring(realPath.lastIndexOf("\\")+1);
//3. content-disposition
response.setHeader("content-disposition", "attachment;filename="+fileName);
//4.
InputStream in = new FileInputStream(realPath);
int len = 0;
//5.
byte[] buffer = new byte[1024];
//6. response OutputStream
OutputStream out = response.getOutputStream();
//7. FileInputStream buffer
while ((len = in.read(buffer)) > 0) {
//8. OutputStream
out.write(buffer,0,len);
}
in.close();
}
그들의 차이 점:사실 말 그대로 두 사람의 차 이 는 요청(request)이 고,다른 하 나 는 응답(response)이 며,servlet 는 서버 로 서 요청 은 브 라 우 저 에서 온 요청 이 며,응답 은 서버 가 브 라 우 저 에 대한 응답 임 을 알 수 있 습 니 다.브 라 우 저 에서 요청 한 데 이 터 를 가 져 오 려 면 request 를 사용 해 야 합 니 다.브 라 우 저 에 데이터 나 페이지 에 응답 하려 면 response 를 사용 해 야 합 니 다.
request 는 요청 한 캐리어 입 니 다.요청 한 인자,ip,쿠키,폼,문자 인 코딩 또는 파일 을 업로드 합 니 다.
당신 은 request 를 통 해 당신 이 필요 로 하 는 정 보 를 얻 을 수 있 습 니 다.
response 는 응답 하 는 캐리어 입 니 다.폼,메시지,응답 파일 형식,문자 인 코딩,response 를 설정 할 수 있 습 니 다.출력 흐름 을 가 져 올 수 있 습 니 다.한 페이지 나 파일 을 클 라 이언 트 에 전송 해 야 할 때 이 흐름 을 통 해 작업 할 수 있 습 니 다.
본 고 를 통 해 여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 면 메 시 지 를 남기 거나 본 사이트 지역사회 에 가서 토론 을 교류 하 십시오.읽 어 주 셔 서 감사합니다. 본 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
TP5 Request 요청 객체자세히 보기 public/index.php...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.