request请求入门,通过请求头操作

package day03;

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

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

public class RequestDemo01 extends HttpServlet{

	private static final long serialVersionUID = -4443329818152738956L;
	
	// private static final long serialVersionUID = -4443329818152738956L;
	// 1)tomcat服务器接收到浏览器发送的请求数据
	// 2)tomcat服务器把请求数据封装成为HttpServletRequest对象
	// 3)tomcat服务器调用doGet方法,把request对象传入servlet
	/**
	 * 使用HttpServletRequest获取请求信息
	 * @author mzy
	 * 	请求行:
	 * 		请求方式:request.getMethod()
	 * 		请求资源:request.getRequestURI()/request.getRequestURL()
	 * 		http协议的版本(分为:
	 * 				http1.0 一次链接只能完成一次请求就会断开
	 * 				http1.1一次链接可以连续使用):
	 * 			request.getProtocol();
	 * 	请求头:
	 * 		request.getHeader("name")  
	 * 			通过名称来获取请求头后面对应的内容的String表示
	 * 		request.getHeaderNames()
	 * 			获取当前请求中的所有的头名称{
	 * 				具体可使用的场景:
	 * 					循环遍历输出每个请求头对应的值的时候;
	 * 					getHeaderNames()返回值为Enumeration 
	 * 					通过其中的hasMoreElements  boolean
	 * 					nextElement 配合getHeader来使用;
	 * 					便可实现循环遍历的输出。
	 * 			}
	 * 
	 * 获得实体内容:
	 * 		request.getInputStream()
	 */
	@Override
	protected void doGet(HttpServletRequest request, 
			HttpServletResponse response) throws ServletException, IOException {
		// 4)通过request对象获取请求数据
		System.out.println("\t    get方法");
		System.out.println("---------------------------------");
		// 请求的数据:
		// 1.请求行
		System.out.println("----请求行----");
		// 		1.1 请求的方式
		System.out.println("请求的方式:"+request.getMethod());
		// 		1.2 请求的资源
		System.out.println("URI:"+request.getRequestURI());
		System.out.println("URL:"+request.getRequestURL());
		//		1.3 http协议的版本号
		System.out.println("http协议:"+request.getProtocol());
		
		System.out.println("---------------------------------");
		
		// 2.请求头
		System.out.println("----请求头----");
		String value = request.getHeader("host"); // 根据头名称获取头值
		Enumeration<String> headers = request.getHeaders("host"); // 与names不同;names为全部名称,此方法得到的是value
		System.out.println("host:"+value);
		// 自动生成返回值的快捷键:将光标放置在getHeaderNames();后面,ctrl + 1:enter
		Enumeration<String> enums = request.getHeaderNames(); // 获取所有头名称
		while(enums.hasMoreElements()) {
			String headerName = enums.nextElement();
			String headerValue = request.getHeader(headerName);
			System.out.println(headerName+":"+headerValue);
		}
		
		System.out.println("---------------------------------");
		
		// 3.实体内容
		System.out.println("----请求实体内容----");
		InputStream in = request.getInputStream();
		byte[] buf = new byte[1024];
		int len;
		while((len = in.read(buf)) != -1) {
			String str = new String(buf, 0, len);
			System.out.println(str);
		}
	}
	/*
	 * 注意:Get请求是没有实体内容的,只有Post请求才有实体内容。
	 * Post提交的参数才会出现在实体内容中。
	 */
	@Override
	protected void doPost(HttpServletRequest request, 
			HttpServletResponse response) throws ServletException, IOException {
		System.out.println("\t    post方法");
		System.out.println("---------------------------------");
		// 3.实体内容
		System.out.println("----请求实体内容----");
		InputStream in = request.getInputStream();
		byte[] buf = new byte[1024];
		int len;
		while((len = in.read(buf)) != -1) {
			String str = new String(buf, 0, len);
			System.out.println(str);
		}
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值