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";  
    }  
  
} 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值