JSP 에서 Servlet 의 Request 와 Response 의 용법 과 차이

5336 단어 RequestResponse
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 를 설정 할 수 있 습 니 다.출력 흐름 을 가 져 올 수 있 습 니 다.한 페이지 나 파일 을 클 라 이언 트 에 전송 해 야 할 때 이 흐름 을 통 해 작업 할 수 있 습 니 다.
본 고 를 통 해 여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 면 메 시 지 를 남기 거나 본 사이트 지역사회 에 가서 토론 을 교류 하 십시오.읽 어 주 셔 서 감사합니다. 본 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기