本文主要是介绍Spring 注解面面通 之 @CookieValue,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
@CookieValue
用于将请求的Cookie
数据映射到控制器处理方法的参数中。
注解解析
① value
:
绑定的参数名称,参数值为String
类型。
② name
:
绑定的参数名称,参数值为String
类型。name
和value
可以同时使用,但两者的值需一致,否则会出现错误。
attribute 'name' and its alias 'value' are present with values of [XXX] and [XXX], but only one is permitted
③ required
:
Cookie
中是否必须包含指定的值,默认值为true
.
required
为true
时,如果Cookie
中缺少指定的值,则会抛出异常.
required
为false
时,如果Cookie
中缺少指定的值,则会返回null
.
④ defaultValue
:
用作绑定失败时的默认值,若Cookie
中缺少指定的值,使用此值作为默认值.
设置defaultValue
时,会将required
隐式的设置为false
.
注解示例
1) 建Controller
,用来演示@CookieValue
使用方法。
package com.arhorchin.securitit.webannotations;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.CookieValue;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;import com.arhorchin.securitit.extend.initializer.CustomerApplicationContextInitializer;/*** @author Securitit.* @note 演示@CookieValue使用方法.*/
@Controller
@RequestMapping("/WebAnnotations")
public class CookieValueController {/*** logger.*/private Logger logger = LoggerFactory.getLogger(CustomerApplicationContextInitializer.class);/*** 跳转页面.*/@RequestMapping(value = "/CookieValue.html",method = RequestMethod.GET)public ModelAndView cookieValueHtml(HttpServletRequest req, HttpServletResponse res, ModelMap modelMap)throws Exception {req.getSession(true);return new ModelAndView("webannotations/CookieValue", modelMap);}/*** 从Cookie中获取JSESSIONID.*/@ResponseBody@RequestMapping(value = "/CookieValue.do",method = RequestMethod.GET)public String CookieValue(@CookieValue(value = "JSESSIONID") String jsessionId) throws Exception {logger.info("Current JSESSIONID is " + jsessionId);return "Current JSESSIONID is " + jsessionId;}/*** 从Cookie中获取DEFSESSIONID,DEFSESSIONID在Cookie中不存在,* 由于required设置为true,此时会抛出异常.*/@ResponseBody@RequestMapping(value = "/CookieValueRequiredTrue.do",method = RequestMethod.GET)public String CookieValueRequiredTrue(@CookieValue(value = "DEFSESSIONID",required = true) String jsessionId) throws Exception {logger.info("Current DEFSESSIONID is " + jsessionId);return "Current DEFSESSIONID is " + jsessionId;}/*** 从Cookie中获取DEFSESSIONID,DEFSESSIONID在Cookie中不存在,* 由于required设置为false,此时返回null.*/@ResponseBody@RequestMapping(value = "/CookieValueRequiredFalse.do",method = RequestMethod.GET)public String CookieValueRequiredFalse(@CookieValue(value = "DEFSESSIONID",required = false) String jsessionId) throws Exception {logger.info("Current DEFSESSIONID is " + jsessionId);return "Current DEFSESSIONID is " + jsessionId;}/*** 从Cookie中获取DEFSESSIONID,DEFSESSIONID在Cookie中不存在,* 由于设置了defaultValue,required隐式的设置为false,则返回默认值.*/@ResponseBody@RequestMapping(value = "/CookieValueDefault.do",method = RequestMethod.GET)public String cookieValueDefaultRequiredTest(@CookieValue(value = "DEFSESSIONID",defaultValue = "Securitit's CookieValue Test.") String jsessionId) throws Exception {logger.info("Current DEFSESSIONID is " + jsessionId);return "Current DEFSESSIONID is " + jsessionId;}}
2) 建html
,用来演示CookieValueController
示例。
<!doctype html>
<html lang="en"><head><meta charset="UTF-8"><meta name="Generator" content="EditPlus®"><meta name="Author" content=""><meta name="Keywords" content=""><meta name="Description" content=""><title>@CookieValue 测试页面</title></head><body><a href="http://localhost:9199/spring-annotations/WebAnnotations/CookieValue.do" target="_blank">点击链接,获取Cookie中的JSESSIONID.</a><br /><br /><a href="http://localhost:9199/spring-annotations/WebAnnotations/CookieValueRequiredTrue.do" target="_blank">点击链接,@CookieValue的required属性为true,抛出异常.</a><br /><br /><a href="http://localhost:9199/spring-annotations/WebAnnotations/CookieValueRequiredFalse.do" target="_blank">点击链接,@CookieValue的required属性为false,返回null.</a><br /><br /><a href="http://localhost:9199/spring-annotations/WebAnnotations/CookieValueDefault.do" target="_blank">点击链接,@CookieValue的defaultValue属性设置默认值,required隐式的设置为false.</a></body>
</html>
3) 启动服务,访问http://localhost:9199/spring-annotations/WebAnnotations/CookieValue.html
页面。
分别点击页面中的链接,查看@CookieValue
对应的效果。
① 点击链接,获取Cookie中的JSESSIONID.
② 点击链接,@CookieValue的required属性为true,抛出异常.
③ 点击链接,@CookieValue的required属性为false,返回null.
④ 点击链接,@CookieValue的defaultValue属性设置默认值,required隐式的设置为false.
总结
@CookieValue
注解在实际应用中,作用还是很大的,传统Web开发中,Cookie
是不可绕过的一环,掌握如何快速的通过Spring框架取值,可以帮助我们更快更好的完成任务。
若文中存在错误和不足,欢迎指正!
这篇关于Spring 注解面面通 之 @CookieValue的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!