`
flyer2010
  • 浏览: 358794 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Spring MVC学习之二:注解介绍

阅读更多
spring的注解有很多,今天主要对如下几个spring mvc常用的注解进行一个介绍。
@Controller
@Controller 负责注册一个bean 到spring 上下文中,bean 的ID 默认为类名称开头字母小写,你也可以自己指定,如下
方法一:
@Controller
public class TestController {}

方法二:           
@Controller("tmpController")
public class TestController {}

@RequestMapping

1.@RequestMapping用来定义访问的URL,你可以为整个类定义一个@RequestMapping,或者为每个方法指定一个。
把@RequestMapping放在类级别上,这可令它与方法级别上的@RequestMapping注解协同工作,取得缩小选择范围的效果。
例如:
@RequestMapping("/test")
public class TestController {}
则,该类下的所有访问路径都在/test之下。

2.将@RequestMapping用于整个类不是必须的,如果没有配置,所有的方法的访问路径配置将是完全独立的,没有任何关联。

3.完整的参数项为:@RequestMapping(value="",method ={"",""},headers={},params={"",""}),各参数说明如下:
value :String[] 设置访问地址
method: RequestMethod[]设置访问方式,字符数组,查看RequestMethod类,包括GET, HEAD, POST, PUT, DELETE, OPTIONS, TRACE,常用RequestMethod.GET,RequestMethod.POST
headers:String[] headers一般结合method = RequestMethod.POST使用
params: String[] 访问参数设置,字符数组 例如:userId=id

4.value的配置还可以采用模版变量的形式 ,例如:@RequestMapping(value="/owners/{ownerId}", method=RequestMethod.GET),这点将在介绍@PathVariable中详细说明。

5.@RequestMapping params的补充说明,你可以通过设置参数条件来限制访问地址,例如params="myParam=myValue"表达式,访问地址中参数只有包含了该规定的值"myParam=myValue"才能匹配得上,类似"myParam"之类的表达式也是支持的,表示当前请求的地址必须有该参数(参数的值可以是任意),"!myParam"之类的表达式表明当前请求的地址不能包含具体指定的参数"myParam"。

6.有一点需要注意的,如果为类定义了访问地址为*.do,*.html之类的,则在方法级的@RequestMapping,不能再定义value值,否则会报错,例如
@RequestMapping("/bbs.do")
public class BbsController {
    @RequestMapping(params = "method=getList")
    public String getList() {
     return "list";
    }
@RequestMapping(value= "/spList")
public String getSpecialList() {
     return "splist";
    }
}

如上例:/bbs.do?method=getList 可以访问到方法getList() ;而访问/bbs.do/spList则会报错.

@PathVariable
1.@PathVariable用于方法中的参数,表示方法参数绑定到地址URL的模板变量。
例如:
@RequestMapping(value="/owners/{ownerId}", method=RequestMethod.GET)
public String findOwner(@PathVariable String ownerId, Model model) {
  Owner owner = ownerService.findOwner(ownerId);  
  model.addAttribute("owner", owner);  
  return "displayOwner";
}

2.@PathVariable用于地址栏使用{xxx}模版变量时使用。
如果@RequestMapping没有定义类似"/{ownerId}" ,这种变量,则使用在方法中@PathVariable会报错。


@ModelAttribute
1.应用于方法参数,参数可以在页面直接获取,相当于request.setAttribute(,)
2.应用于方法,将任何一个拥有返回值的方法标注上 @ModelAttribute,使其返回值将会进入到模型对象的属性列表中.
3.应用于方法参数时@ModelAttribute("xx"),须关联到Object的数据类型,基本数据类型 如:int,String不起作用
例如:
@ModelAttribute("items")//<——①向模型对象中添加一个名为items的属性
public List<String> populateItems() {
        List<String> lists = new ArrayList<String>();
        lists.add("item1");
        lists.add("item2");
        return lists;
}
@RequestMapping(params = "method=listAllBoard")
public String listAllBoard(@ModelAttribute("currUser")User user, ModelMap model) {
        bbtForumService.getAllBoard();
        //<——②在此访问模型中的items属性
        System.out.println("model.items:" + ((List<String>)model.get("items")).size());
        return "listBoard";
}

在 ① 处,通过使用 @ModelAttribute 注解,populateItem() 方法将在任何请求处理方法执行前调用,Spring MVC 会将该方法返回值以“items”为名放入到隐含的模型对象属性列表中。
所以在 ② 处,我们就可以通过 ModelMap 入参访问到 items 属性,当执行 listAllBoard() 请求处理方法时,② 处将在控制台打印出“model.items:2”的信息。当然我们也可以在请求的视图中访问到模型对象中的 items 属性。


@ResponseBody
这个注解可以直接放在方法上,表示返回类型将会直接作为HTTP响应字节流输出(不被放置在Model,也不被拦截为视图页面名称)。可以用于ajax。

@RequestParam
@RequestParam是一个可选参数,例如:@RequestParam("id") 注解,所以它将和URL所带参数 id进行绑定
如果入参是基本数据类型(如 int、long、float 等),URL 请求参数中一定要有对应的参数,否则将抛出 org.springframework.web.util.NestedServletException 异常,提示无法将 null 转换为基本数据类型.

@RequestParam包含3个配置 @RequestParam(required = ,value="", defaultValue = "")
required :参数是否必须,boolean类型,可选项,默认为true
value: 传递的参数名称,String类型,可选项,如果有值,对应到设置方法的参数
defaultValue:String类型,参数没有传递时为参数默认指定的值

@SessionAttributes session管理
Spring 允许我们有选择地指定 ModelMap 中的哪些属性需要转存到 session 中,以便下一个请求属对应的 ModelMap 的属性列表中还能访问到这些属性。这一功能是通过类定义处标注 @SessionAttributes 注解来实现的。@SessionAttributes 只能声明在类上,而不能声明在方法上。

例如

@SessionAttributes("currUser") // 将ModelMap 中属性名为currUser 的属性
@SessionAttributes({"attr1","attr2"})
@SessionAttributes(types = User.class)
@SessionAttributes(types = {User.class,Dept.class})
@SessionAttributes(types = {User.class,Dept.class},value={"attr1","attr2"})


@CookieValue 获取cookie信息
@RequestHeader 获取请求的头部信息
分享到:
评论

相关推荐

    Spring MVC 基于注解实例

    Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于...

    spring3 mvc系列二:方法返回值的学习(注解版)

    总的来说,Spring 3 MVC的方法返回值处理机制是其灵活性和强大功能的关键之一。通过注解驱动和适当的配置,开发者可以轻松地构建出适应各种需求的Web应用。深入理解和熟练掌握这部分知识,对提升Spring MVC项目开发...

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

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

    Spring MVC 的注解使用实例

    1. `@Controller` 注解:这个注解用于标记一个类作为Spring MVC的控制器。当Spring容器启动时,会扫描带有@Controller的类,并将这些类实例化,用于处理HTTP请求。例如: ```java @Controller public class ...

    spring mvc + spring + hibernate 全注解整合开发视频教程 06.haozip03

    spring mvc + spring + hibernate 全注解整合开发视频教程 06.haozip03

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

    在本教程中,我们将深入探讨如何使用Spring MVC、Spring和Hibernate三大框架进行全注解的整合开发。这个视频教程系列的第12部分,将帮助开发者掌握如何在Java Web项目中高效地集成这三个核心框架,实现松耦合、可...

    Spring MVC 教程快速入门 深入分析

    二、Spring MVC核心类与接口:Spring MVC架构中包含许多核心组件,如DispatcherServlet、HandlerMapping、Controller、ViewResolver等。这些组件协同工作,处理用户的请求并返回相应的响应。 三、Spring MVC核心...

    spring mvc+ibatis+spring注解

    Spring MVC、iBatis 和 Spring 注解是Java开发中常用的技术栈,它们分别负责Web层、数据访问层和依赖注入及配置。这篇文章将详细介绍这三个组件的结合使用以及相关的知识点。 **Spring MVC** Spring MVC 是 Spring ...

    spring3.0mvc自学教程ppt+注解教程+注解实例+springmybatis教程+项目实例+中文api (老师的心血)从入门到项目实战

    6. **Spring 3.1.0中文版API帮助文档**:这份PDF文档是学习Spring API的重要参考,它详细介绍了每个类和方法的功能,对于理解和使用Spring框架的各个部分非常有帮助。 7. **自学过程**:本教程适合初学者,按照从浅...

    IT学习者Spring MVC注解实例.pdf

    IT学习者Spring MVC注解实例.pdf

    Spring.MVC学习指南.pdf

    这份“Spring.MVC学习指南.pdf”很可能是为了帮助开发者深入理解和掌握Spring MVC的核心概念、工作原理以及实践技巧。下面将详细阐述Spring MVC的相关知识点。 1. **核心组件**: - **DispatcherServlet**:Spring...

    Spring MVC注解项目实例

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

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

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

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

    在本教程中,我们将深入探讨Spring MVC的核心概念,特别是关于注解的使用以及简单的控制器实现。 首先,Spring MVC的核心组件包括DispatcherServlet、Controller、ModelAndView、ViewResolver等。DispatcherServlet...

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

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

    Spring MVC jar包

    Spring MVC 是一个基于Java的轻量级Web应用框架,它为开发者提供了模型-视图-控制器(MVC)架构,使开发人员能够更好地组织和分离应用程序的业务逻辑、数据处理和用户界面。Spring MVC是Spring框架的一个核心组件,...

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

    在本视频教程“Spring MVC + Spring + Hibernate 全注解整合开发视频教程 04”中,我们将深入探讨Java企业级开发中的三大核心技术——Spring、Spring MVC和Hibernate的集成与应用,尤其是通过注解实现的简化配置。...

    Spring mvc 超简完整注解可运行Demo

    总的来说,这个压缩包提供的示例是一个快速了解和学习 Spring MVC 的起点,涵盖了从配置到运行的基本流程。通过研究和运行这个项目,你可以更好地理解 Spring MVC 如何处理 Web 请求,以及如何通过注解实现 MVC 架构...

    Spring.MVC学习指南(林仪明、崔毅著,人民邮电出版社)

    《Spring MVC学习指南》是由林仪明和崔毅两位作者共同编著,由人民邮电出版社出版的一本专业书籍,主要面向希望深入理解和掌握Spring MVC框架的Java开发者。Spring MVC是Spring框架的重要组成部分,用于构建Web应用...

Global site tag (gtag.js) - Google Analytics