HttpServletRequest对象

​ HttpServletRequest 对象:主要作用是用来接收客户端发送过来的请求信息,例如:请求的参数, 发送的头信息等都属于客户端发来的信息,service()方法中形参接收的是 HttpServletRequest 接口的 实例化对象,表示该对象主要应用在 HTTP 协议上,该对象是由 Tomcat 封装好传递过来。

package com.mage.hsr;

import java.io.IOException;
import java.util.Enumeration;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Test01 extends HttpServlet{
	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// TODO Auto-generated method stub
		System.out.println("hello");
		//结果:hello
		//输出语句,输出hello
		StringBuffer requestURL = req.getRequestURL();
		//创建StringBuffer变量,存储req的URL值,getRequsetURL(),获取客户端发出的请求时的完整 URL

		System.out.println("获取客户端请求的URL:"+requestURL);
		//结果:
		//获取客户端请求的URL:http://localhost:8080/HttpServletRequest/hsr01
		String requestURI = req.getRequestURI();
		//创建String变量,存储req的URI值,getRequsetURI(),获取请求行中的资源名称部分(项目名称开始)
		System.out.println("获取客户端请求的URI:"+requestURI);
		//结果:获取客户端请求的URI:/HttpServletRequest/hsr01
		/*URL和URI
		 * URL:同一资源定位符
		 * 获取客户端发出请求的完整URL
		 * 
		 * URI:同一资源标识符
		 *获取请求行中的资源名称部分(项目名称开始)(站点名  到 ?)
		 * */
		String queryString = req.getQueryString();
		//getQueryString(),获取请求行中的参数部分
		System.out.println("获取请求行中的参数部分:"+queryString);
		//地址栏为:http://localhost:8080/HttpServletRequest/hsr01?uname=zs
		//结果为:获取请求行中的参数部分:uname=zs
		
		String method = req.getMethod();
		//getMethod(),获取客户端的请求方式
		System.out.println("获取客户端请求方式:"+method);
		//结果为:获取客户端请求方式:GET
		String protocol = req.getProtocol();
		//getProtocol(),获取http版本号
		System.out.println("获取版本号:"+protocol);
		//结果为:获取版本号:HTTP/1.1
		String contextPath = req.getContextPath();
		//getContextPath(),获取webapp名称(站点名)
		System.out.println("获取站点名:"+contextPath);
		//获取站点名:/HttpServletRequest
		//获取请求头
		System.out.println("获取单个请求头对应的值:"+req.getHeader("User-Agent"));
		//获取单个请求头对应的值:Mozilla/5.0 (Windows NT 10.0; Win64; x64) 
		//AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36
		Enumeration<String> headerNamess = req.getHeaderNames();
		//获取获取请求头名称集合
		while(headerNamess.hasMoreElements()) {
			String headerName = headerNamess.nextElement();
			System.out.println(headerName);
		}
		//结果:
		//host
//		connection
//		pragma
//		cache-control
//		upgrade-insecure-requests
//		user-agent
//		sec-fetch-mode
//		sec-fetch-user
//		accept
//		sec-fetch-site
//		accept-encoding
//		accept-language
//		cookie
		
		//获取客户端请求参数
		String uname = req.getParameter("uname");
		String upwd = req.getParameter("upwd");
		//getParamter(String name),获取指定名称的参数
		System.out.println("用户名:"+uname+"--密码:"+upwd);
//		用户名:zs--密码:1234
		
		String[] hobbys = req.getParameterValues("hobby");
		//getParameterValues(String name),获取指定参数的所有值
		for(String hobby : hobbys) {
			//使用增强for循环遍历数组
			System.out.println(hobby);
		}
		//地址栏:http://localhost:8080/HttpServletRequest/hsr01?uname=zs&upwd=1234&hobby=readbook&hobby=playgame
		//结果:readbook   playgame
		
		//getParameterNames()
//		获取一个包含请求消息中的所有参数名的 Enumeration 对 象
		Enumeration<String> parameterNames = req.getParameterNames();
		while(parameterNames.hasMoreElements()) {
			System.out.println(parameterNames.nextElement());
		}
		//结果为uname  upwd   hobby
		//getParameterMap(),返回一个保存了请求消息中的所有参数名称和值的Map对象
		Map<String,String[]> parameterMap = req.getParameterMap();
		for(String key : parameterMap.keySet()) {
			//获取key的set集合
			System.out.print(key+":");
			for(String value : parameterMap.get(key)) {
				System.out.print(value+" ");
			}
			System.out.println();
		}
		//结果为:name:zs   upwd:1234  hobby:readbook playgame 
	}
}

你可能感兴趣的:(Java)