`
杨胜寒
  • 浏览: 286191 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Spring MVC3注解学习之注解配置

阅读更多

原创文章,转载请注明出处

本文地址:http://www.yshjava.cn/post/430.html

 

Spring MVC3的注解灵活强大,支持完全注解驱动,当放弃配置文件而完全采用注解配置时,你会被代码的简洁性深深吸引,这也是作者独立出一个篇幅来介绍其在Spring MVC3中的使用方法的根本原因。本文基于《Spring3_MVC注解教程》学习、总结而来,将从HTTP请求地址映射和通过注解绑定请求数据两个方面来介绍如何使用注解配置MVC,在此感谢作者的无私奉献,同时欢迎各位指点不妥之处。

 

HTTP请求地址映射

 

HTTP请求映射原理

 

HTTP请求映射原理

 

Spring MVC进行映射的依据

 

Spring MVC进行映射的依据

 

 

请求路径映射表达式

@RequestMapping注解用于声明请求映射路径,除了标准的URL,还支持Ant风格(即?、*和**的字符)的和带{xxx}占位符的URL。如下所示

/user/*/createUser

*号代表一层任意内容的目录,匹配/user/aaa/createUser、/user/bbb/createUser等URL

 

/user/**/createUser

**代表0到多层任意内容的目录,匹配/user/createUser、/user/aaa/bbb/createUser等URL

 

/user/createUser??

??代表两个任意字符(特殊字符需要转码,转码后作为一个字符,如空格,转码为%20仍认为是一个字符,?的数量即为字符的数量),匹配/user/createUseraa、/user/createUserbb等URL

 

/user/{userId}

{userId}代表一个字符串或数字的变量,匹配user/123、user/abc等URL

 

/user/**/{userId}

匹配user/aaa/bbb/123、user/aaa/456等URL

 

company/{companyId}/user/{userId}/detail

匹配company/123/user/456/detail等的URL

 

@RequestMapping的用法比较灵活,有如下几种仅供参考:

  • @RequestMapping(value="/delete")映射一个路径,且不限制HTTP请求方式
  • @RequestMapping(value="/delete", method = RequestMethod.GET)映射一个路径,且只允许通过Get方式请求
  • @RequestMapping(value={"/delete", "/del"}, method = {RequestMethod.GET, RequestMethod.POST})映射多个路径,且只允许通过Get方式请求
  • @RequestMapping("/delete")映射一个路径,且不限制HTTP请求方式
  • @RequestMapping({"/delete", "/del"})映射多个路径,且不限制HTTP请求方式
  • @RequestMapping(value="/delete", method = {RequestMethod.GET, RequestMethod.POST})映射多个路径,且只允许通过Get或POST方式请求

 

对于@RequestMapping来说,除了上述通过value限定HTTP请求路径、通过method限定HTTP请求方式外,还可以:

通过params注解限定请求参数

@RequestMapping(value="/delete", params="userId") 
public String delete(@RequestParam("userId") String userId){
    //删除用户			
}

 

 

通过headers注解限定请求标头(报文头)参数

@RequestMapping(value="/show",headers="content-type=text/*")
public String show(@RequestParam("userId") String userId){
     //显示用户详情	
}

 

 

在上述两个例子中,paramsheaders分别对请求参数及报文头属性进行限定,它们支持简单的表达式,下面以params表达式为例说明,headers可以参照params进行理解之:

  • "userId"表示请求必须包含名为userId的请求参数
  • "!userId":表示请求不能包含名为userId的请求参数
  • "userId!=value1":表示请求包含名为userId的请求参数,但其值不能为value1
  • {"userId=value1","userName"}:请求必须包含名为userId和userName的两个请求参数,且param1参数的值必须为value1

 

 

通过注解绑定请求数据

 

绑定请求参数:

 

@RequestMapping(value="/rename")
public String rename(@RequestParam("userName") String userName,
		      @RequestParam("password") String password,
		      @RequestParam("rename") String rename){
	//具体处理代码
}

 

绑定Cookies参数

@RequestMapping(value="/cookies")
public String cookies(@CookieValue("JSESSIONID") String sessionId){
	//具体处理代码
}

 

绑定请求标头(报文头)参数

@RequestMapping(value="/index")
public String index(@RequestHeader("Accept-Language") String accpetLanguage){
	//具体处理代码
}

 

@RequestParam有以下三个参数

value:参数名

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

defaultValue:默认参数名,设置该参数时,自动将required设为false。极少情况需要使用该参数,也不推荐使用该参数。

@RequestMapping(value="/getUser")
public String getUser(@RequestParam("userName") String userName,){
	//根据用户名获取用户信息
}

 

上面所示代码的处理方法是不安全的:如果HTTP请求不包含"userName"参数,将会导致异常!因此,如果不能保证"userName"参数一定存在,为了安全起见,请使用:

@RequestParam(value = "userName", required = false)

 

替代!

 

使用命令/表单对象绑定

所谓命令/表单对象并不需要实现任何接口,仅是一个拥有若干属性的POJO。Spring MVC按:“HTTP请求参数名 = 命令/表单对象的属性名”的规则,自动绑定请求数据,支持“级联属性名”,自动进行基本类型数据转换。

示意图如下:

Spring MVC 3 使用命令/表单对象绑定

 

范例代码如下:

@RequestMapping(value = {"/show", "view"}, method = {RequestMethod.GET, RequestMethod.POST})
public String show(User user, Model model) {
	model.addAttribute("username", "springmvc");
	model.addAttribute("password", "类型非常灵活");
	return "show";
}

 

总结:

通过注解配置MVC非常的方便和快捷,个人尤其喜欢Controller和RequestMapping以及参数绑定。

在Spring MVC3中用的比较多的(同时也是个人认为比较好用的)注解有如下几个:

@Controller将一个JavaBean声明为一个Controller控制器

@RequestMapping将一个普通的JavaBean方法声明为一个请求映射路径

@RequestParam将请求报文中的参数绑定到操作方法的入参中

@PathVariable将URL中的占位符绑定到操作方法的入参中

@RequestHeader将请求标头中的参数绑定到操作方法的入参中

@CookieValue将cookies中的参数绑定到操作方法的入参中

掌握了他们几个的用法,基本上就能应付80%以上的需要了。

 

原创文章,转载请注明出处:http://www.yshjava.cn/post/431.html

1
5
分享到:
评论
1 楼 落笔成殇 2014-11-17  
  

相关推荐

    Spring MVC 的注解使用实例

    在Spring MVC框架中,注解的使用极大地简化了配置,提高了开发效率。...在Springmvc02这个项目中,你可以找到更多关于这些注解的实际应用示例,通过学习和实践,将有助于深入理解Spring MVC的注解驱动开发模式。

    最全的Spring MVC注解例子,异步请求,错误处理

    总的来说,这个压缩包提供了学习和实践Spring MVC注解的全面示例,涵盖了核心的控制器定义、请求映射、数据绑定,以及异步处理和错误处理机制。通过这个例子,开发者能够更好地理解和掌握Spring MVC的使用,提升其在...

    Spring MVC实例 MVC注解配置

    在这个实例中,我们将探讨如何利用MVC注解配置来简化Spring MVC应用的设置和管理。MVC模式(Model-View-Controller)是软件设计的一种经典模式,它将业务逻辑、数据和用户界面分离,使得代码更加模块化,易于维护。 ...

    Spring MVC非注解测试

    非注解测试在Spring MVC中是指不依赖于Java注解如`@Test`,`@Controller`等进行的测试,而是通过XML配置文件来定义组件和它们之间的关系。这种方式虽然比注解方式繁琐,但有助于理解Spring MVC的工作原理。 首先,...

    spring mvc mybatis 注解版

    **Spring MVC注解版** 在Spring MVC中,注解简化了配置文件,使得开发者可以直接在控制器类和方法上使用注解来声明路由、参数绑定和异常处理等。主要的注解有: 1. `@Controller`:标记一个类为控制器类,处理来自...

    spring-mvc注解详情

    注解在Spring MVC中扮演着核心角色,它们提供了声明式编程,使得开发者能够以更简洁的方式配置和控制应用程序的行为。 1. **@Controller**:这个注解标记一个类作为Spring MVC的控制器。控制器类处理来自客户端的...

    Spring3.0MVC注解(附实例)

    首先,Spring MVC注解允许开发者以声明式的方式配置控制器,避免了传统的XML配置文件。这极大地简化了代码,提高了可读性和维护性。例如,`@RequestMapping`注解就是其中的关键,它可以在类级别或方法级别使用,用于...

    使用Spring 2.5 基于注解驱动的 Spring MVC详解

    本文将介绍 Spring 2.5 新增的 Spring MVC 注解功能,讲述如何使用注解配置替换传统的基于 XML 的 Spring MVC 配置。 Spring MVC 注解驱动 在 Spring 2.5 中,Spring MVC 框架引入了注解驱动功能,使得开发者可以...

    学习Spring MVC,关于注解的Spring MVC,简单例子,关于控制器的Spring MVC,学习Spring,简单Spring MVC实例

    注解在Spring MVC中扮演了重要角色,极大地简化了配置。比如,`@Controller`注解标记一个类作为Spring MVC的控制器,而`@RequestMapping`用于将请求映射到特定的方法。这个注解可以应用于类级别或方法级别,以定义...

    Spring mvc 3 注解精华.docx

    本文将详细讲解Spring MVC 3中的注解精华,以及如何配置DispatcherServlet来支持注解。 首先,Spring的官方例子Spring-PetClinic是一个很好的学习资源,它演示了如何在处理简单表单数据时使用注解。这个示例可以在...

    spring mvc + spring + hibernate 全注解整合开发视频教程 12

    Spring MVC通过注解如@Controller、@RequestMapping等,可以让开发者在方法级别定义请求映射,简化了配置。 Spring框架的核心是依赖注入(Dependency Injection,DI),它允许组件之间通过接口进行协作,而不是硬...

    基于注解配置的spring mvc+jpa

    如果使用spring mvc 3.2+和servelt 3+容器(比如tomcat8),那么web.xml和applicationContext.xml都不是必须的,可使用基于注解的配置: 基于配置的集成例子源代码:

    基于注解Spring MVC环境搭建

    Spring MVC的核心特性之一,通过注解可以实现字段或构造器级别的依赖注入,避免硬编码依赖关系,提高代码的灵活性和可测试性。 7. **视图解析** Spring MVC使用视图解析器如`InternalResourceViewResolver`来将...

    Spring MVC 使用注解的示例讲解

    在本示例中,我们将深入探讨如何利用注解来增强Spring MVC的功能,提高开发效率。 1. **Spring MVC基本结构** Spring MVC的核心组件包括DispatcherServlet、Controller、Model、View和ViewResolver。...

    Spring MVC注解项目实例

    总结起来,这个"Spring MVC注解项目实例"涵盖了Spring MVC框架的核心元素,包括注解驱动的控制器、拦截器的使用,以及数据库操作。它为初学者提供了一个动手实践的机会,帮助他们快速掌握Spring MVC的开发技巧。

    spring3.0 mvc 注解实现helloworld输出

    通过以上步骤,我们就成功地使用Spring 3.0 MVC注解方式实现了“Hello, World!”的示例。这只是一个基础入门,Spring MVC的强大之处在于其灵活的配置、丰富的注解以及对其他Spring模块的无缝集成,可以满足复杂Web...

    Spring3MVC注解(附实例).doc

    下面将详细介绍 Spring3MVC 注解的概念、实现机制、配置方法和实践示例。 Spring3MVC 注解的概念 在 Spring3MVC 框架中,注解是指使用 Java 注解来标注控制器类、方法和字段,以便 Spring 框架可以自动识别和处理...

    spring mvc 注解 增删改 实例

    总结,这个"spring mvc 注解 增删改 实例"是一个很好的学习资源,它演示了如何利用Spring MVC的注解处理HTTP请求,以及如何结合Hibernate实现数据库操作。通过这个实例,开发者可以深入理解Spring MVC的请求处理机制...

    spring mvc + spring + hibernate 全注解整合开发视频教程 11

    在这个视频教程中,你可能将学习到如何配置Spring的XML上下文文件以启用注解驱动的配置,如何在Spring MVC中创建注解式的控制器并处理HTTP请求,以及如何通过Hibernate的注解来设计数据模型并执行CRUD操作。...

    Spring.MVC-A.Tutorial-Spring.MVC学习指南 高清可复制版PDF

    Spring MVC 是一个基于Java的轻量级Web应用框架,它是Spring框架的重要组成部分,主要用于构建Web应用程序的后端控制器。...通过学习,开发者可以熟练地运用Spring MVC来构建高效、可维护的Web应用。

Global site tag (gtag.js) - Google Analytics