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. Magicodes.WeiChat——后台JS框架封装

    Magicodes.WeiChat同时也致力于提高后台开发效率,因此对在后台前端这块也做了一定的封装.我们先来说说主要的框架JS——mwc.js和mwc_elements.js.这两个JS文件位于Sc ...

  2. 【转载】关于Linux Shell 特殊字符

    一.通配符     1.一般通配符       ① * (星号):匹配字符的0次或多次出现       举例:f*可以匹配f.fa.fls.a     注意:“.”和“/”必须显示匹配         ...

  3. SQLite数据库在本地可以写,发布到服务器就不能写

    用SQLite开发的一个Web Api,提供Json和Jsonp格式的数据,在本地使用vs2012开发并运行时,数据库的读写均正常. 但发布到Windows Server 2008 + IIS 7.5 ...

  4. Web程序的桌面提醒

    做web开发常会面对的一个问题是,浏览器最小化的时候如何才能向用户发送通知.解决办法大概有三种:让用户有事没事儿搂两眼页面:开发一个桌面客户端:Html5的Notification API. 目前没看 ...

  5. Entity Framework 4 数据事务操作

    利用数据库链接进行事务操作 var db = ConnectionHelper.GetConn(ConnectionType.Write);//获取上下文 var conn = db.Connecti ...

  6. EmberJs之3W

    写在前面 最近比较忙,换了新工作还要学习很多全新的技术栈,并给自己找了很多借口来不去坚持写博客.常常具有讽刺意味的是,更多剩下的时间并没有利用而更多的是白白浪费,也许这就是青春吧,挥霍吧,这不是我想要 ...

  7. Spring声明式事务配置与使用

    1.配置: <context:component-scan base-package="com.vrvwh.wh01" /><bean id="data ...

  8. Mac上搭建直播服务器Nginx+rtmp

    简介 nginx是非常优秀的开源服务器,用它来做hls或者rtmp流媒体服务器是非常不错的选择,本人在网上整理了安装流程,分享给大家并且作备忘. 步骤安装 1.安装Homebrow Homebrew简 ...

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

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

  10. Redis学习笔记一:基本安装和配置

    1.安装 wget http://download.redis.io/releases/redis-3.2.3.tar.gz编译安装: tar xf redis-3.2.3.tar.gz cd red ...