HTTP请求头和响应头

package com.tcm.web.controller.request.demo;

import java.util.Collection;
import java.util.Iterator;
import java.util.Map;
import java.util.TreeMap;
import java.util.Map.Entry;

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

import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * 测试请求头哪些内容
 * 参考资料:
 * 1. HTTP Content-Type的对照:http://tool.oschina.net/commons
 * 2. HTTP状态码详解:http://tool.oschina.net/commons?type=5
 * 3. HTTP请求头和响应头的对照:http://tools.jb51.net/table/http_header
 * @author TCM
 * @create 2017年3月28日下午2:30:17
 */
@Controller
public class HeaderController {
	
	@RequestMapping("/req/header")
	public String getHeader(HttpServletRequest request, HttpServletResponse response, ModelMap map){
		map.addAttribute("method",request.getMethod());
		
		/*******************************************************
		 *                      获取客户端信息                                                                 *
		 *******************************************************/
		//获取请求路径
		System.out.println("getServletPath():"+request.getServletPath());
		//获取完整URL
		System.out.println("getRequestURL():"+request.getRequestURL());
		//获取资源URI
		System.out.println("getRequestURI():"+request.getRequestURI());
		//获取服务器id
		System.out.println("getLocalAddr():"+request.getLocalAddr());
		//获取服务器名
		System.out.println("getLocalName():"+request.getLocalName());
		//获取客户机ip
		System.out.println("getRemoteAddr():"+request.getRemoteAddr());
		//获取客户主机名
		System.out.println("getRemoteHost():"+request.getRemoteHost());
		//获取服务器的项目名
		System.out.println("ContextPath():"+request.getContextPath());
		//获取HttpSessionId
		System.out.println("getRequestedSessionId():"+request.getRequestedSessionId());
		//获取HttpSession对象
		System.out.println("getSession():"+request.getSession().getId());
		//请求方式
		System.out.println("getMethod():"+request.getMethod());
		//获取查询字符串(?ni=123)
		System.out.println("getQueryString():"+request.getQueryString());
		
		//获取当前登录用户
		System.out.println("getRemoteUser():"+request.getRemoteUser());
		//获取当前登录用户的授权类型
		System.out.println("getAuthType():"+request.getAuthType());
		//获取Cookie[]
		System.out.println("getCookies():"+request.getCookies().length);
		
		
		/*******************************************************
		 *                      获取请求头信息
		 *参考资料:
		 *http://tools.jb51.net/table/http_header
		 *http://www.cnblogs.com/wangyang108/p/5755525.html       
		 *******************************************************/
		System.out.println("\n"+"----------------获取请求头信息--------------------");
		//客户端能够接收的内容类型
		System.out.println("Accept:"+request.getHeader("Accept"));
		//客户端可以支持的web服务器返回内容压缩编码类型
		System.out.println("Accept-Encoding:"+request.getHeader("Accept-Encoding"));
		//请求体对应的MIME信息
		System.out.println("Content-Type:"+request.getHeader("Content-Type"));
		//服务器的域名和端口号
		System.out.println("Host:"+request.getHeader("Host"));
		//请求的内容长度
		System.out.println("Content-Length:"+request.getHeader("Content-Length"));
		//请求用户的信息
		System.out.println("User-Agent:"+request.getHeader("User-Agent"));
		//请求域名下的所有cookie值一起发送给web服务器
		System.out.println("Cookie:"+request.getHeader("Cookie"));
		//是否持久连接
		//Keep-Alive:不会断开,当客户端发送另外一个请求时,就使用这条已经建立的连接
		System.out.println("Connection:"+request.getHeader("Connection"));
		//发出请求的时间
		System.out.println("Date:"+request.getHeader("Date"));
		//指定请求和响应遵循的缓存机制
		//max-age>0 时直接从游览器缓存中提取 ;max-age<=0 时 向server发送http请求确认 ,该资源是否有修改
		System.out.println("Cache-Control:"+request.getHeader("Cache-Control"));
		//HTTP授权的授权证书
		System.out.println("Authorization:"+request.getHeader("Authorization"));
		//发出请求的客户的email
		System.out.println("From:"+request.getHeader("From"));
		
		
		/*******************************************************
		 *                      获取请求参数                                                                 
		 *******************************************************/
		System.out.println("\n"+"----------------获取请求参数--------------------");
		//获取指定的请求参数
		System.out.println("getParameter():"+request.getParameter("ni"));
		//获取所有请求参数
		Map<String, String[]> params = request.getParameterMap();
		
		Map<String, String[]> sorted = new TreeMap<String, String[]>();
        sorted.putAll(params);
		
		Iterator<Entry<String, String[]>> pairs = sorted.entrySet().iterator();
        while (pairs.hasNext()) {
            Map.Entry<String, String[]> pair = pairs.next();
            if (pair.getValue() != null) {
                System.out.println(pair.getKey() + "=" + (pair.getValue())[0]);
            } else {
            	 System.out.println(pair.getKey() + "=");
            }

        }
        
       
        
        /*******************************************************
		 *                      响应部分                                                               
		 *******************************************************/ 
        System.out.println("\n"+"----------------响应参数--------------------");
        //url编码重定向
        System.out.println("encodeRedirectURL():"+response.encodeRedirectURL(request.getRequestURL().toString()));
        //设置响应体类型
        response.setContentType("application/vnd.ms-excel;charset=utf-8");
        //响应体的MIME类型
        System.out.println("getContentType():"+response.getContentType());
        //返回编码集
        System.out.println("getCharacterEncoding():"+response.getCharacterEncoding());
        //响应状态
        System.out.println("getStatus():"+response.getStatus());
        //缓存大小
        System.out.println("getBufferSize():"+response.getBufferSize());
        //清空缓存内容,不清空headers和状态码
        response.resetBuffer();
        //清空缓存内容、headers、状态码
        response.reset();
        System.out.println("getStatus():"+response.getStatus());
        
        
        System.out.println("\n"+"----------------响应头--------------------");
        Collection<String> list = response.getHeaderNames();
        Iterator<String> ite = list.iterator();
        while (ite.hasNext()) {
        	String head = ite.next();
        	System.out.println(head);
			
		}
        
        
        System.out.println("\n"+"----------------响应头--------------------");
        //设置响应头
//        response.setHeader("Content-Encoding", "gzip");
        //web服务器支持的返回内容压缩编码类型
        System.out.println("Content-Encoding:"+response.getHeader("Content-Encoding"));
        //返回资源的MD5校验值
        System.out.println("Content-MD5:"+response.getHeader("Content-MD5"));
        //返回内容的MIME类型
        System.out.println("Content-Type:"+response.getHeader("Content-Type"));
        //原始服务器消息发出的时间
        System.out.println("Date:"+response.getHeader("Date"));
        //web服务器软件名称
        System.out.println("Server:"+response.getHeader("Server"));
        //重定向URL的位置
        System.out.println("Location:"+response.getHeader("Location"));
        //web服务器软件名称
        System.out.println("Server:"+response.getHeader("Server"));
		
		return "header/requestInfo";
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值