HttpServletRequest 상세 정보

4271 단어
HttpServlet Request 대상은 클라이언트의 요청을 대표합니다. 클라이언트가 HTTP 프로토콜을 통해 서버에 접근할 때 HTTP 요청의 모든 정보는 이 대상에 봉인됩니다. 개발자는 이 대상을 통해 고객의 정보를 얻을 수 있습니다.
Request 객체를 통한 일반적인 작업
  • 클라이언트 정보 획득
  • 요청 헤더 정보 얻기
  • 요청 매개 변수 가져오기
  • 요청 영역 전달 대상 이용
  • Request 클라이언트 정보 얻기
    getRequest URL 메서드는 클라이언트가 요청한 전체 URL을 반환합니다.
    getRequestURI 방법은 요청 줄의 자원 이름 부분을 되돌려줍니다
    getQueryString 방법은 요청 줄의 매개 변수 부분을 되돌려줍니다
    getRemoteAddr 메서드는 요청한 클라이언트의 IP 주소를 반환합니다.
    getMethod 클라이언트 요청 방식
    getContextPath 현재 웹 응용 프로그램 가상 디렉터리 이름 가져오기
    	public void doGet(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		//1.          URL
    		String url = request.getRequestURL().toString();
    		System.out.println(url);
    		//2.               
    		String uri = request.getRequestURI();
    		System.out.println(uri);
    		//3.          
    		String qStr = request.getQueryString();
    		System.out.println(qStr);
    		//4.        ip  
    		String ip = request.getRemoteAddr();
    		System.out.println(ip);
    		//5.          
    		String method = request.getMethod();
    		System.out.println(method);
    		//6.    web     
    		String name = request.getContextPath();
    		System.out.println(name);
    		
    		response.sendRedirect(request.getContextPath()+"/index.jsp");
    	}

    2. Request 요청 헤더 정보 얻기
    클라이언트 요청 헤더 가져오기
  • getHeader(name) 방법--- String
  • getHeaders(String name) 방법---Enumeration
  • getHeaderNames 방법---Enumeration
  • 특정 유형의 클라이언트 요청 헤더 얻기
  • getIntHeader(name) 메서드 - int
  • getDateHeader(name) 방법---long(날짜는 밀리초)
  • 	public void doGet(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		String value = request.getHeader("Host");
    		System.out.println(value);
    		
    		Enumeration<String> enumeration = request.getHeaderNames();
    		while(enumeration.hasMoreElements()){
    			String name = enumeration.nextElement();
    			String value = request.getHeader(name);
    			System.out.println(name+":"+value);
    		}
    		
    	}

    3. Request 요청 매개 변수 가져오기
    getParameter (name) - name에서 String 값 얻기
    getParameterValues ---String[]name을 통해 다수치 checkbox 얻기
    getParameterNames - Enumeration 모든 name 가져오기
    getParameterMap ---Map 키:name value: 다중 값
    중국어 난자 처리 -->클릭하여 자세히 설명
    	public void doGet(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		String value = (String) request.getAttribute("name");
    	}

    4. Request는 요청역 전달 대상을 이용한다
    리퀘스트 대상은 하나의 역 대상이기도 하다. 개발자는 리퀘스트 대상을 통해 전송을 실현할 때 데이터를 리퀘스트 대상을 통해 다른 웹 자원에 가져다 처리한다.
  • setattribute 방법
  • getattribute 방법
  • removeAttribute 방법
  • getattributeNames 방법
  • request 역할 영역의 역할 범위
    전송 요청 시 데이터 전달
    	public void doGet(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		request.setAttribute("name", "zqwang121");
    		this.getServletContext().getRequestDispatcher("/servlet/Demo4").forward(request, response);
    		
    		String result = "zqwang121";
    		request.setAttribute("result", result);
    		request.getRequestDispatcher("/show.jsp").forward(request, response);
    	
    	}
    	public void doGet(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		String value = (String) request.getAttribute("name");
    		System.out.println(value);
    	}

    4. Request 요청 전달 실현
  • request 대상은 get Request Dispatcher 방법을 제공합니다. 이 방법은 Request Dispatcher 대상을 되돌려줍니다. 이 대상의forward 방법을 호출하면 요청 전송을 실현하고 요청 중의 데이터를 공유할 수 있습니다
  • forward 방법을 호출하기 전에 servlet 프로그램에 쓴 일부 내용이 클라이언트에게 제대로 전송되면 forward가 진행할 수 없으며 이상이 발생합니다.
  • forward를 호출하기 전에response 버퍼에 내용을 썼을 때 그 내용에 기록된 내용이 클라이언트에 출력되지 않으면 forward 방법은 정상적으로 실행될 수 있지만 원래 버퍼에 기록된 데이터는 비워집니다. 실체 내용만 비워지고 이전에 기록된 응답 헤더 정보는 여전히 존재합니다.
  • 	public void doGet(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		request.getRequestDispatcher("/servlet/Demo6").forward(request, response);	
    	}

    좋은 웹페이지 즐겨찾기