`

Spring4MVC之请求处理方法签名

 
阅读更多

 

请求处理方法签名

 

Spring MVC 通过分析处理方法的签名,将 HTTP 请求信息绑定到处理方法的相应人参中。

Spring MVC 对控制器处理方法签名的限制是很宽松的,几乎可以按喜欢的任何方式对方法进行签名。

必要时可以对方法及方法入参标注相应的注解(@PathVariable、@RequestParam、@RequestHeader 等)、Spring MVC 框架会将 HTTP 请求的信息绑定到相应的方法入参中,并根据方法的返回值类型做出相应的后续处理。

 

使用 @RequestParam 绑定请求参数值

 

在处理方法入参处使用 @RequestParam 可以把请求参数传递给请求方法

value:参数名

required:是否必须。默认为 true, 表示请求参数中必须包含对应的参数,若不存在,将抛出异常

 

使用 @RequestHeader 绑定请求报头的属性值

 

请求头包含了若干个属性,服务器可据此获知客户端的信息,通过 @RequestHeader 即可将请求头中的属性值绑定到处理方法的入参中

 

使用 @CookieValue 绑定请求中的 Cookie 值

 

@CookieValue 可以让处理方法入参绑定某个 Cookie 值

 

示例

 

1. 编辑JSP页面

 

<li>使用 @RequestParam 绑定请求参数值
            <ul>
                <li><a href="user/testRequestParam?username=tom&age=20">@RequestParam使用</a></li>
                <li><a href="user/testRequestParam1?username=tom">@RequestParam使用</a></li>
                <li><a href="user/testRequestParam2?username=tom">@RequestParam使用</a></li>
            </ul>
        </li>
        <li>使用 @RequestHeader 绑定请求报头的属性值
            <ul>
                <li><a href="user/testRequestHeader">@RequestHeader使用</a></li>
            </ul>
        </li>
        <li>使用 @CookieValue 绑定请求中的 Cookie 值
            <ul>
                <li><a href="user/testCookieValue">@CookieValue使用</a></li>
            </ul>
        </li>

 

 

2. 编辑处理器类

 

/**
	 * 使用 @RequestParam 绑定请求参数值
	 * 
	 * @RequestParam 映射请求参数
	 * value值即请求参数的参数名
	 * required 该参数是否必须.默认为true
	 * defaultValue 请求参数的默认值
	 * 
	 * 如果某个参数是可选的(有时不发送的参数),可以设置required=false。
	 * 注意,如果其数据类型为基本类型,需要设置defaultValue
	 */
	@RequestMapping("/testRequestParam")
	public String testRequestParam(@RequestParam(value="username") String name,
			@RequestParam(value="age")int age)
	{
		System.out.println("------testRequestParam: "+ name + "-" + age +" ------");
		return LOGIN;
	}
	
	@RequestMapping("/testRequestParam1")
	public String testRequestParam1(@RequestParam(value="username") String name,
			@RequestParam(value="age",required=false,defaultValue="0")int age)
	{
		System.out.println("------testRequestParam1: "+ name + "-" + age +" ------");
		return LOGIN;
	}
	
	@RequestMapping("/testRequestParam2")
	public String testRequestParam2(@RequestParam(value="username") String name,
			@RequestParam(value="age", required=false)Integer age)
	{
		System.out.println("------testRequestParam2: "+ name + "-" + age +" ------");
		return LOGIN;
	}
	
	/**
	 * 使用 @RequestHeader 绑定请求报头的属性值
	 * 
	 * 了解:
	 * 相应请求头信息
	 * 用法同@RequestParam
	 */
	@RequestMapping("/testRequestHeader")
	public String testRequestHeader(@RequestHeader(value="Accept-Language",required=false,defaultValue="")String acceptLanguage)
	{
		System.out.println("------testRequestHeader: Accept-Language" + acceptLanguage +" ------");
		return LOGIN;
	}
	
	/**
	 * 使用 @CookieValue 绑定请求中的 Cookie 值
	 * 
	 * 了解:
	 * 映射一个Cookie值,属性同@RequestParam
	 */
	@RequestMapping("/testCookieValue")
	public String testCookieValue(@CookieValue(value="JSESSIONID") String sessionId)
	{
		System.out.println("------testCookieValue - JSESSIONID :" + sessionId +" ------");
		return LOGIN;
	}

 

 

 

 

 

 

分享到:
评论

相关推荐

    Spring3MVC注解教程.ppt

    使用校验功能时,处理方法要如何签名?? 校验错误信息存放在什么地方?? 页面如何显示错误信息 如何对错误信息进行国际化(1) 如何对错误信息进行国际化(2) 目录 数据模型访问结构 访问数据模型:...

    Spring MVC 3.0实战指南.ppt

    使用校验功能时,处理方法要如何签名?? 校验错误信息存放在什么地方?? 页面如何显示错误信息 如何对错误信息进行国际化(1) 如何对错误信息进行国际化(2) 目录 数据模型访问结构 访问数据模型:ModelAndView 访问...

    spring mvc注释文档

    本文内容包括: • 概述 • 一个简单的基于注解的 Controller • 清单 3. annomvc-servlet.xml • 让一个 Controller 处理...• 请求处理方法的签名规约 • 注册自己的属性编辑器 • 如何准备数据 • 小结 • 参考资料

    Spring.3.x企业应用开发实战(完整版).part2

    15.2.2 请求处理方法签名概述 15.2.3 处理方法签名详细说明 15.2.4 使用HttpMessageConverter 15.2.5 处理模型数据 15.3 处理方法的数据绑定 15.3.1 数据绑定流程剖析 15.3.2 数据转换 15.3.3 数据格式化 15.3.4 ...

    Spring3.x企业应用开发实战(完整版) part1

    15.2.2 请求处理方法签名概述 15.2.3 处理方法签名详细说明 15.2.4 使用HttpMessageConverter 15.2.5 处理模型数据 15.3 处理方法的数据绑定 15.3.1 数据绑定流程剖析 15.3.2 数据转换 15.3.3 数据格式化 15.3.4 ...

    lti-launch:Java框架,用于验证来自Canvas LMS的LTI启动请求

    它提供了对LTI启动请求的OAuth签名进行身份验证的功能,并在需要与Canvas API通信时处理OAuth 2用户令牌交换。 在验证启动请求之后,将用户转发到由实现的应用程序指定的初始视图。 使用的技术 Java 8 Maven(与...

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    由于J2EE的开源的框架中提供了MVC模式实现框架Struts、对象关系模型中的Hibernate 的框架及拥有事务管理和依赖注入的Spring。利用现存框架可以更快开发系统。所以选择Java技术作为blog 的开发工具。 为了增加系统的...

    asp.net知识库

    使用.ashx文件处理IHttpHandler实现发送文本及二进制数据的方法 制作一个简单的多页Tab功能 一完美的关于请求的目录不存在而需要url重写的解决方案! 在C#中实现MSN消息框的功能 XmlHttp实现无刷新三联动ListBox 鼠标...

    JAVA上百实例源码以及开源项目

     关于数字签名:产生RSA密钥对(myKeyPair),得到RSA密钥对,产生Signature对象,对用私钥对信息(info)签名,用指定算法产生签名对象,用私钥初始化签名对象,将待签名的数据传送给签名对象(须在初始化之后),用公钥...

    JAVA上百实例源码以及开源项目源代码

     关于数字签名:产生RSA密钥对(myKeyPair),得到RSA密钥对,产生Signature对象,对用私钥对信息(info)签名,用指定算法产生签名对象,用私钥初始化签名对象,将待签名的数据传送给签名对象(须在初始化之后),用公钥...

    基于J2EE框架的个人博客系统项目毕业设计论...

    由于J2EE的开源的框架中提供了MVC模式实现框架Struts、对象关系模型中的Hibernate 的框架及拥有事务管理和依赖注入的Spring。利用现存框架可以更快开发系统。所以选择Java技术作为blog 的开发工具。 为了增加系统的...

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    1.3.2跨域交互即缓存处理方法 7 1.3.3页面自适应机制,即设备自适应与浏览器自适应机制 8 1.3.4 “认我测”质检服务平台的设计和实现 8 1.4 本文的结构安排 8 第二章 多窗口类浏览器设计 11 2.1 多窗口类浏览器需求...

Global site tag (gtag.js) - Google Analytics