Spring3系列13-Controller和@RequestMapping
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的更多相关文章
- 【#】Spring3 MVC 注解(一)---注解基本配置及@controller和 @RequestMapping 常用解释
Spring3 MVC 注解(一)---注解基本配置及@controller和 @RequestMapping 常用解释 博客分类: spring MVCSpringWebXMLBean 一:配置 ...
- Spring3系列7- 自动扫描组件或Bean
Spring3系列7- 自动扫描组件或Bean 一. Spring Auto Scanning Components —— 自动扫描组件 1. Declares Component ...
- Spring框架系列(13) - SpringMVC实现原理之DispatcherServlet的初始化过程
前文我们有了IOC的源码基础以及SpringMVC的基础,我们便可以进一步深入理解SpringMVC主要实现原理,包含DispatcherServlet的初始化过程和DispatcherServlet ...
- Spring3系列12- Spring AOP AspectJ
Spring3系列12- Spring AOP AspectJ 本文讲述使用AspectJ框架实现Spring AOP. 再重复一下Spring AOP中的三个概念, Advice:向程序内部注入的代 ...
- Spring3系列11- Spring AOP——自动创建Proxy
Spring3系列11- Spring AOP——自动创建Proxy 在<Spring3系列9- Spring AOP——Advice>和<Spring3系列10- Spring A ...
- Spring3系列10- Spring AOP——Pointcut,Advisor拦截指定方法
Spring3系列10- Spring AOP——Pointcut,Advisor 上一篇的Spring AOP Advice例子中,Class(CustomerService)中的全部method都 ...
- Spring3系列9- Spring AOP——Advice
Spring3系列9- Spring AOP——Advice Spring AOP即Aspect-oriented programming,面向切面编程,是作为面向对象编程的一种补充,专门用于处理系统 ...
- Spring3系列8- Spring 自动装配 Bean
Spring3系列8- Spring 自动装配 Bean 1. Auto-Wiring ‘no’ 2. Auto-Wiring ‘byName’ 3. Auto-Wiri ...
- Spring3系列6 - Spring 表达式语言(Spring EL)
Spring3系列6-Spring 表达式语言(Spring EL) 本篇讲述了Spring Expression Language —— 即Spring3中功能丰富强大的表达式语言,简称SpEL.S ...
随机推荐
- 解决VS2013+IE11调试DevExpress ASP.NET MVC的性能问题
将一个MVC项目从12.2升级到14.2,VS2012升到2013,发现使用IE11调试非常慢卡死,CPU占用100%,后来经过排除,发现只有DevExpress的MVC项目有这个问题. 最后在Dev ...
- GUI 快捷键的实现思路
思路: 前提快捷键操作不可重复,即一个快捷键对应一个控件的动作 一个窗体保持一份快捷键的map映射 在相应的消息中获取快捷键列表如键盘消息 在控件类对象中定义一个默认的响应行为,比如Button按 ...
- ActiveMQ第一弹:安装与运行
ActiveMQ使用java写的,所以天然跨平台,windows,各种类Unix系统都可运行,只需要下载对应的分发包即可.当前AciveMQ的最新版本是5.9.0.我目前在自己机子上安装的版本是5.8 ...
- Lingo 做线性规划 - DEA
Reference: <An Introduction to Management Science Quantitative Approaches to Decision Making, Rev ...
- AdaBoost算法简介
一.AdaBoost的损失函数 AdaBoost优化的是指数损失,即\begin{align*} \mathbb{E}_{\boldsymbol{x} \sim \mathfrak{D}, y}[e^ ...
- 常用linux命令索引
每天一个linux命令(61):wget命令 每天一个linux命令(60):scp命令 每天一个linux命令(59):rcp命令 每天一个linux命令(58):telnet命令 每天一个linu ...
- atitit. web 在线文件管理器最佳实践(1)--- elFinder 的使用流程解决之道 。打开浏览服务器文件夹java .net php
atitit. web 在线文件管理器最佳实践(1)--- elFinder 的使用流程解决之道 .打开浏览服务器文件夹java .net php 1. 环境:::项目java web,需要打开浏览服 ...
- Android 实用工具Hierarchy Viewer实战
在Android的SDK工具包中,有很多十分有用的工具,可以帮助程序员开发和测试Android应用程序,大大提高其工作效率.其中的一款叫Hierachy Viewer的可视化调试工具,可以很方便地在开 ...
- css之入门篇
今日学习终于到了css,css可以实现很多表现出很酷的界面,而css的出现是为了解决 HTML结构上写样式出现一片混乱现象而应运而生的语言,在以前样式都是和结构一起写的, 不分彼此,而这样大大增加了代 ...
- Android ImageView圆形头像
转载自:http://m.oschina.net/blog/321024 Android ImageView圆形头像 图片完全解析 我们在做项目的时候会用到圆形的图片,比如用户头像,类似QQ.用户在用 ...