HttpServletRequest 객체는 클라이언트가 HTTP 프로토콜을 통해 서버에 액세스할 때 HTTP 요청 헤더의 모든 정보가 이 객체에 캡슐화됩니다. 개발자는 이 객체의 메서드를 통해 클라이언트의 정보를 얻을 수 있습니다.
일반적인 요청 방법 :
1. 클라이언트 환경 정보를 얻는 일반적인 방법 :
1. 클라이언트가 요청할 때 getRequestURL 메소드는 전체 URL을 반환합니다.
2. getRequestURI 메소드는 요청 라인의 리소스 이름 부분을 반환합니다.
3. getQueryString 메소드는 요청 라인의 매개변수 부분을 반환합니다.
4. getRemoteAddr 메소드는 요청한 클라이언트의 IP 주소를 반환합니다.
5. getRemoteHost 메소드는 요청한 클라이언트의 전체 호스트 이름을 반환합니다.
6. getRemotePort 메소드는 클라이언트가 사용하는 네트워크 포트 번호를 반환합니다.
7. getLocalAddr 메소드는 웹 서버의 IP 주소를 반환합니다.
8. getLocalName 메소드는 웹 서버의 호스트 이름을 반환합니다.
9.getMethod는 클라이언트 요청 메소드를 가져옵니다.
다음과 같이 코드 코드를 복사합니다.
패키지 com.yyz.request;
import java.io.IOException;
import java.io.OutputStream;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
공개 클래스 RequestDemo는 HttpServlet을 확장합니다.
공개 무효 doGet(HttpServletRequest 요청, HttpServletResponse 응답)
ServletException, IOException이 발생합니다.
/**
*URL은 URI의 하위 집합입니다.
* URI는 리소스를 식별하는 데 사용됩니다.
*URL은 인터넷상의 리소스를 식별하는 데 사용됩니다.
*/
System.out.println(request.getRequestURL());//요청 URL 주소를 가져옵니다.
System.out.println(request.getRequestURI());//요청된 리소스를 가져옵니다.
System.out.println(request.getQueryString());
System.out.println(request.getRemoteAddr());//방문자 IP 가져오기
System.out.println(request.getRemoteHost());
//dns에 등록되지 않았기 때문에 인쇄 결과는 여전히 127.0.0.1입니다. Baidu가 이 프로그램에 접속하면 www.baidu.com을 인쇄합니다.
System.out.println(request.getRemotePort());//요청된 리소스를 가져옵니다.
System.out.println(request.getMethod());//요청된 리소스를 가져옵니다.
}
공개 무효 doPost(HttpServletRequest 요청, HttpServletResponse 응답)
ServletException, IOException이 발생합니다.
doGet(요청,응답);
}
}
브라우저 주소 표시줄에 http://localhost:8080/test/servlet/RequestDemo를 입력하면 배경 출력은 다음과 같습니다.
2. 클라이언트 요청 헤더를 얻습니다 .
1.getHeader(문자열 이름) 메소드
2.getHeaders(문자열 이름) 메소드
3.getHeaderNames() 메소드
다음과 같이 코드 코드를 복사합니다.
패키지 com.yyz.request;
import java.io.IOException;
import java.util.Enumeration;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//요청 헤더 가져오기
공개 클래스 RequestDemo는 HttpServlet을 확장합니다.
공개 무효 doGet(HttpServletRequest 요청, HttpServletResponse 응답)
ServletException, IOException이 발생합니다.
String head = request.getHeader("Accept-Encoding");
//일부 브라우저는 압축된 데이터를 지원하지 않습니다.
if(head.contains("gzip")){
//압축된 데이터 출력
}또 다른{
//압축되지 않은 데이터 출력
}
//지정된 이름을 가진 헤더의 모든 값을 가져옵니다.
열거형 e = request.getHeaders("Accept-Encoding");
while(e.hasMoreElements()){
문자열 값 = (String ) e.nextElement();
System.out.println(값);
}
System.out.println("------------");
//모든 헤더와 값을 가져옵니다.
e = 요청.getHeaderNames();
while(e.hasMoreElements()){
문자열 이름 = (String)e.nextElement();
문자열 값 = request.getHeader(이름);
System.out.println(name+"="+value);
}
}
공개 무효 doPost(HttpServletRequest 요청, HttpServletResponse 응답)
ServletException, IOException이 발생합니다.
doGet(요청,응답);
}
}
브라우저에서 프로그램에 액세스하면 백그라운드 출력은 다음과 같습니다.
3. 클라이언트 요청 매개변수(클라이언트가 제출한 데이터)를 얻습니다.
1.getParameter(이름) 메소드
2.getParameterValues(문자열 이름) 메소드
3.getParameterNames 메소드
4.프레임워크 제작시 광범위하게 사용되는 getParameterMap 메소드
패키지 com.yyz.IOException; import java.util.Map; import javax.servlet.ServletException; .HttpServlet 가져오기 javax.servlet.http.HttpServletRequest 가져오기; javax.servlet.http.HttpServletResponse; //요청 데이터 가져오기 public class RequestDemo는 HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //http://localhost:8080/test/servlet/RequestDemo? name=yyz 문자열 값 = request.getParameter("name"); System.out .println(value); //http://localhost:8080/test/servlet/RequestDemo?like=sing&like=dance String likes[] = request.getParameterValues("like") if(likes!=null) ){ for(문자열 like : likes){ System.out.println(like) } } //다음은 이러한 종류의 순회를 작성하는 전문적인 방법으로, 배열 데이터를 얻는 방법입니다(널 포인터 예외를 피하기 위해) for(int i=0;likes!=null&&i<likes.length;i++){ System.out .println(likes[ i]); } //모든 이름을 가져오고 이름을 기반으로 값을 가져옵니다. Enumeration e = request.getParameterNames() while(e.hasMoreElements()){ String name = (String) e.nextElement(); value = request.getParameter(name); System.out.println(name+"="+value) } System.out.println("------------ ---------"); //요청 객체에서 데이터를 캡슐화하는 데 사용되는 Map 컬렉션을 가져옵니다. Map<String,String[]> map = request.getParameterMap(); for(Entry<String, String[ ] > 나 : map.entrySet()){ 문자열 이름 = me.getKey(); String [] v = me.getValue(); System.out.println(name+"="+v[0]) } } public void doPost(HttpServletRequest 요청, HttpServletResponse 응답)은 ServletException, IOException을 발생시킵니다. { doGet(요청,응답) } }