SpringMVC(七):@RequestHeader注解

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

RequestHeader源码中方法和RequestParam相似,使用方式相似,针对请求头进行过滤 

/*
 * Copyright 2002-2014 the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.springframework.web.bind.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * Annotation which indicates that a method parameter should be bound to a web request header.
 * Supported for annotated handler methods in Servlet and Portlet environments.
 *
 * 

If the method parameter is {@link java.util.Map Map<String, String>} or * {@link org.springframework.util.MultiValueMap MultiValueMap<String, String>}, * or {@link org.springframework.http.HttpHeaders HttpHeaders} then the map is * populated with all header names and values. * * @author Juergen Hoeller * @since 3.0 * @see RequestMapping * @see RequestParam * @see CookieValue * @see org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter * @see org.springframework.web.portlet.mvc.annotation.AnnotationMethodHandlerAdapter */ @Target(ElementType.PARAMETER) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface RequestHeader { /** * The name of the request header to bind to. */ String value() default ""; /** * Whether the header is required. *

Default is {@code true}, leading to an exception thrown in case * of the header missing in the request. Switch this to {@code false} * if you prefer a {@code null} in case of the header missing. *

Alternatively, provide a {@link #defaultValue}, which implicitly sets * this flag to {@code false}. */ boolean required() default true; /** * The default value to use as a fallback. Supplying a default value implicitly * sets {@link #required} to {@code false}. */ String defaultValue() default ValueConstants.DEFAULT_NONE; }

 

package com.levelcoder.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * 
 * 描述:@RequestHeader注解
 *
 * 作者:LevelCoder
 *
 * 邮箱:[email protected]
 *
 * 日期:2017年6月6日 上午11:17:48
 *
 * 版本:V1.0.0
 */

@Controller
public class RequestHeaderController {

	/**
	 * 请求头包含若干个属性,服务器可根据这些属性获取客户端的信息
	 * @return
	 */
	@RequestMapping(value="/requestHeader")
	public String requestHeader(@RequestHeader("User-Agent") String ua){
		System.out.println("User-Agent:"+ua);
		return null;
	}
	
}

 

测试页面index

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




Insert title here


	

@RequestHeader 注解

value required defaultValue

测试结果

182759_ALw2_2296021.png

 

附录常用RequestHeader解说

参数 说明
Accept 浏览器可以接收的内容类型
Accept-Encoding 浏览器可以处理的编码方式
Accept-Language 浏览器接收的语言
Cache-Control 指示缓存系统应该怎样处理缓存
Connection 告诉服务器这个user agent想要使用怎样的连接方式
Host 被访服务器的域名或IP地址
If-Modified-Since 如果请求的部分在指定时间之后被修改则请求成功,未被修改则返回304代码
If-None-Match 与服务器回应的Etag比较判断是否改变
Referer 先前网页的地址,当前请求网页紧随其后,即来路
Upgrade-Insecure-Requests   请求服务器更新至另外一个协议
User-Agent User-Agent的内容包含发出请求的用户信息

 

 

 

转载于:https://my.oschina.net/LevelCoder/blog/916278

你可能感兴趣的:(SpringMVC(七):@RequestHeader注解)