Spring3系列13-Controller和@RequestMapping

Controller返回值,String或者ModelAndView

@RequestMapping关联url

@RequestMapping的属性

一、      Controller返回值,String或者ModelAndView

首先看一下spring的配置文件,如下

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <context:component-scan base-package="com.lei.demo.controller" /> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix">
<value>/WEB-INF/user/</value>
</property>
<property name="suffix">
<value>.jsp</value>
</property>
</bean>
</beans>

第一种,返回类型为String,Controller中的方法如下

    @RequestMapping(value="welcome",method=RequestMethod.GET)
public String printMessage(ModelMap model) { model.addAttribute("message", "返回类型String");
return "users";
}

根据spring配置文件和以上controller,访问“/welcome”时,对应的返回页面为“/WEB-INF/user/users.jsp”

第二种,返回类型为ModelAndView,Controller中的方法如下

    @RequestMapping("/welcome")
public ModelAndView printMessage (){
ModelAndView mv = new ModelAndView();
mv.addObject("message", "返回类型ModelAndView ");
mv.setViewName("users");
return mv;
}

两种方法返回的页面相同,不同的是第二种方法将model和view整合成ModelAndView实例,方法中不需要再加入model参数。

二、      @RequestMapping关联url

@RequestMapping可以是类级别和方法级别。

1.        类级别,类前有@RequestMapping

@Controller
@RequestMapping("/user")
public class UserController { //访问此方法的url为“/user/manager”,url前要加入类级别的路径/user
@RequestMapping(value="/manager",method=RequestMethod.GET)
public ModelAndView printMessage(){
ModelAndView mv = new ModelAndView();
mv.addObject("message", "MVC");
mv.setViewName("users");
return mv;
} //访问此方法的url为“/user/hello”,url前要加入类级别的路径/user
@RequestMapping(value="/hello",method=RequestMethod.GET)
public ModelAndView hello(){
ModelAndView mv = new ModelAndView();
mv.addObject("message", "hello");
mv.setViewName("users");
return mv;
}
}

2.        方法级别,类前没有@RequestMapping

@Controller
public class UserController { //没有类级别的@RequestMapping,访问此方法的url为“/manager”
@RequestMapping(value="/manager",method=RequestMethod.GET)
public ModelAndView printMessage(){
ModelAndView mv = new ModelAndView();
mv.addObject("message", "MVC");
mv.setViewName("users");
return mv;
} //没有类级别的@RequestMapping,访问此方法的url为“/hello”
@RequestMapping(value="/hello",method=RequestMethod.GET)
public ModelAndView hello(){
ModelAndView mv = new ModelAndView();
mv.addObject("message", "hello");
mv.setViewName("users");
return mv;
}
}

3.        @RequestMapping支持多个映射路径映射到同一个controller

    @RequestMapping(value={"/hello","/foo"})
public ModelAndView hello(){
ModelAndView mv = new ModelAndView();
mv.addObject("message", "hello");
mv.setViewName("users");
return mv;
}

以上“/hello”和“/foo”映射到同一个函数处理。

三、      @RequestMapping的属性

@RequestMapping有如下几个属性:value、method、params、headers

这几个属性用法如下

1.      @RequestMapping中的value属性

通过value属性,表达主要的映射,在Servlet环境中,映射路径(如,/myPath.do),也支持Any风格的(如,/myPath/*.do)。在方法级别中的相对路径需要类级别的主路径支持。

@RequestMapping("/user")等同于@RequestMapping(value="/user")

2.      @RequestMapping中的method属性

通过HTTP请求的method来缩小主映射的范围。GET, POST, HEAD, OPTIONS, PUT, DELETE, TRACE。支持定义在类级别或方法级别。

3.      @RequestMapping中的params属性

格式为“paramname=paramvalue” 或 “paramname!=paramvalue”。不带参数则表示paramvalue可以为任意值。

例如,params =  {"param1=1","param2!=2","param3"},表示对应的url必须包括param1,param2,param3三个参数,其中param1的值必须为1,param2的值不能为2,param3的值可以为任意值。

4.      @RequestMapping中的headers属性

headers用来限定对应的reqeust请求的headers中必须包括的内容,例如

headers={"Connection=keep-alive"}, 表示请求头中的connection的值必须为keep-alive。

Spring3系列13-Controller和@RequestMapping的更多相关文章

  1. 【#】Spring3 MVC 注解(一)---注解基本配置及@controller和 @RequestMapping 常用解释

    Spring3 MVC 注解(一)---注解基本配置及@controller和 @RequestMapping 常用解释 博客分类:  spring MVCSpringWebXMLBean  一:配置 ...

  2. Spring3系列7- 自动扫描组件或Bean

    Spring3系列7- 自动扫描组件或Bean 一.      Spring Auto Scanning Components —— 自动扫描组件 1.      Declares Component ...

  3. Spring框架系列(13) - SpringMVC实现原理之DispatcherServlet的初始化过程

    前文我们有了IOC的源码基础以及SpringMVC的基础,我们便可以进一步深入理解SpringMVC主要实现原理,包含DispatcherServlet的初始化过程和DispatcherServlet ...

  4. Spring3系列12- Spring AOP AspectJ

    Spring3系列12- Spring AOP AspectJ 本文讲述使用AspectJ框架实现Spring AOP. 再重复一下Spring AOP中的三个概念, Advice:向程序内部注入的代 ...

  5. Spring3系列11- Spring AOP——自动创建Proxy

    Spring3系列11- Spring AOP——自动创建Proxy 在<Spring3系列9- Spring AOP——Advice>和<Spring3系列10- Spring A ...

  6. Spring3系列10- Spring AOP——Pointcut,Advisor拦截指定方法

    Spring3系列10- Spring AOP——Pointcut,Advisor 上一篇的Spring AOP Advice例子中,Class(CustomerService)中的全部method都 ...

  7. Spring3系列9- Spring AOP——Advice

    Spring3系列9- Spring AOP——Advice Spring AOP即Aspect-oriented programming,面向切面编程,是作为面向对象编程的一种补充,专门用于处理系统 ...

  8. Spring3系列8- Spring 自动装配 Bean

    Spring3系列8- Spring 自动装配 Bean 1.      Auto-Wiring ‘no’ 2.      Auto-Wiring ‘byName’ 3.      Auto-Wiri ...

  9. Spring3系列6 - Spring 表达式语言(Spring EL)

    Spring3系列6-Spring 表达式语言(Spring EL) 本篇讲述了Spring Expression Language —— 即Spring3中功能丰富强大的表达式语言,简称SpEL.S ...

随机推荐

  1. poj 3259 Wormholes 判断负权值回路

    Wormholes Time Limit: 2000 MS Memory Limit: 65536 KB 64-bit integer IO format: %I64d , %I64u   Java ...

  2. JAVA基于缓冲的文件读写操作

    File f2 = new File("e://index.java"); BufferedReader reader = new BufferedReader(new Input ...

  3. windows上自动设置java环境变量的脚本

    近期打算学习安卓开发,于是乎要准备java开发环境,安装好jdk后,就要设置java环境变量,java环境变量要设置JAVA_HOME,Path,CLASSPATH三个值,每次配置查百度复制粘贴都很麻 ...

  4. 使用 Microsoft Fakes 进行单元测试

    本文为 Dennis Gao 原创技术文章,发表于博客园博客,未经作者本人允许禁止任何形式的转载. 在编写单元测试时,我们会遇到不同的外部依赖项,大体上可以分为两类: 依赖于接口或抽象类 依赖于具体类 ...

  5. [BTS] SQL Adapter. New transaction cannot enlist in the specified transaction coordinator

    The adapter "SQL" raised an error message. Details "New transaction cannot enlist in ...

  6. ava如何实现系统监控、系统信息收集、sigar开源API的学习(转)

    ava如何实现系统监控.系统信息收集.sigar开源API的学习(转) 转自:http://liningjustsoso.iteye.com/blog/1254584 首先给大家介绍一个开源工具Sig ...

  7. CSS3实现的超酷动态圆形悬浮效果

    在线演示 本地下载 了解代码是如何开发的? 请参考并且播放如下代码轻视频: http://www.gbtags.com/gb/rtreplayerpreview/151.htm

  8. [jQuery学习系列六]6-jQuery实际操作小案例

    前言最后在这里po上jQuery的几个小案例. Jquery例子1_占位符使用需求: 点击第一个按钮后 自动去check 后面是否有按钮没有选中, 如有则提示错误消息. <html> &l ...

  9. Atitit.实现继承的原理and方法java javascript .net c# php ...

    Atitit.实现继承的原理and方法java javascript .net c# php ... 1. 实现继承的问题 1 2. 如何拷贝基类方法?采用prototype原型方式,通过冒充对象 1 ...

  10. 25数据查询的各种小玩法-select上(必学)-天轰穿sqlserver视频教程

    大纲:简单查询-选择数据列,使用字符串,改变列标题,使用数据运算 优酷超清地址,为了冲优酷的访问量,所以这里只放优酷的地址了,其实其他网站还是都传了的哈.