springMVC基于注解的控制器

springMVC基于注解的控制器的优点有两个:

1、控制器可以处理多个动作,这就允许将相关操作写在一个类中。
2、控制器的请求映射不需要存储在配置文件中。使用requestMapping注释类型,可以对一个方法进行请求处理。
 
接下来介绍两个最重要的注释类型:

一、controller注释类型

这种注释类型用于指示Spring类的实例是一个实例;
import org.springframework.stereotype;
public class CustemerController{
//methods
}
Spring 使用扫描机制来找到应用程序中所有基于注解的控制器类;

1、配置spring-context

<beans
...
xmlns:context="http://www.springframework.org/schema/context"
...
>

2、配置<component-scan/>

假设所有的控制器类都在com.example.controller及其子包中
<context:component-scan base-package="com.example.controller"/>
 

二、RequestMapping注解类型

1、为每个动作开发相应的处理方法。

使用org.springframework.web.bind.annotation.RequestMapping注解类型映射URI和方法;

RequestMapping映射了一个请求和一种方法。可以使用@RequestMapping注解一种方法或类。
看下面例子:
@Controller
public class CustemerController{
@RequestMapping(value = "/customer_input")
public String inputCustemer(){
//do something
return "CustemerForm";
}
}
value 属性就是将URI映射到方法。
value属性是默认的属性,如果只有一个属性,则可省略属性名称;
@RequestMapping("/customer_input")
超过一个属性,必须写value属性名称;
 
除了value属性,还有其他属性,如method属性用来指示该方法处理哪些HTTP方法。
@RequestMapping(value = "/customer_input",method={RequestMethod.POST,RequestMethod.PUT})
或者只有一个HTTP方法值,则使用
@RequestMapping(value = "/customer_input",method=RequestMethod.POST)
 
RequestMapping注释类型也可用来注释一个控制类
@Controller
@RequestMapping(value = "/customer_input")
public class inputCustemer(){ @RequestMapping(value = "/delete",method={RequestMethod.POST,RequestMethod.PUT})
pulic String deleteCustemer(){
//do something
return "CustemerForm";
}
}

2、请求处理方法

每个请求处理方法可以有多个不同类型的参数,记忆一个多钟类型的返回结果。
传递参数的方式:
@RequestMapping(value = "/delete",method={RequestMethod.POST,RequestMethod.PUT})
pulic String deleteCustemer(HttpSession session){
//do something
return "CustemerForm";//指向了视图(页面)的名称
}

参数类型:

 
请求处理方法的返回类型:
ModelAndView
Model
Map
View()
void
代表逻辑视图名的String(就是上面例子中请求处理方法返回的String类型)
callable
等等
 

3、应用@Autowired和@Service 进行依赖注入

 
将依赖注入到SpringMVC控制器的最简单方法就是通过注解@Autowired到字段或方法;此外,为了能被作为依赖注入,类必须要注明为@Service ,在配置文件中,还需要添加一个<component-scan/>元素来扫描依赖基本包。
 
@Autowired
private ProductService productService
 
productService是一个提供处理产品方法的接口,将productService的一个实例注入到某类中。
 
 
 

springMVC基于注解的控制器的更多相关文章

  1. 04springMVC结构,mvc模式,spring-mvc流程,spring-mvc的第一个例子,三种handlerMapping,几种控制器,springmvc基于注解的开发,文件上传,拦截器,s

     1. Spring-mvc介绍 1.1市面上流行的框架 Struts2(比较多) Springmvc(比较多而且属于上升的趋势) Struts1(即将被淘汰) 其他 1.2  spring-mv ...

  2. SpringMVC传统风格控制器和基于注解的控制器

    SpringMVC的DispatcherServlet 之前说过springMVC是使用Servlet作为控制器,就是这个用于调度的DispatcherServlet了.这个是servlet,可以根据 ...

  3. 缓存初解(五)---SpringMVC基于注解的缓存配置--web应用实例

    之前为大家介绍了如何使用spring注解来进行缓存配置 (EHCache 和 OSCache)的简单的例子,详见 Spring基于注解的缓存配置--EHCache AND OSCache 现在介绍一下 ...

  4. 【spring springmvc】springmvc使用注解声明控制器与请求映射

    目录 概述 壹:注解说明 贰:实现注解声明控制器与请求映射 一:使用controller 二:配置包扫描与视图解析器 1.配置包扫描 2.配置试图解析器 三:配置部署描述符 1.读取spring-mv ...

  5. springMVC 基于注解的controller

    概述 继 Spring 2.0 对 Spring MVC 进行重大升级后,Spring 2.5 又为 Spring MVC 引入了注解驱动功能.现在你无须让 Controller 继承任何接口,无需在 ...

  6. SpringMVC 基于注解的Controller详解

    本文出处 http://blog.csdn.net/lufeng20/article/details/7598801 概述 继 Spring 2.0 对 Spring MVC 进行重大升级后,Spri ...

  7. SpringMVC 基于注解的Controller @RequestMapping @RequestParam..

    概述 继 Spring 2.0 对 Spring MVC 进行重大升级后,Spring 2.5 又为 Spring MVC 引入了注解驱动功能.现在你无须让 Controller 继承任何接口,无需在 ...

  8. springmvc基于注解的权限控制

    一.权限码 /** * @Title: AuthCode.java * @Package cn.com.kamfu.auth * @Description: TODO(用一句话描述该文件做什么) * ...

  9. spring-mvc基于注解的配置

    将配置文件修改为: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="htt ...

随机推荐

  1. bzoj4241: 历史研究(回滚莫队)

    传送门 这是一个叫做回滚莫队的神奇玩意儿 是询问,而且不强制在线,就决定是你了莫队 如果是每次插入一个数是不是很简单? 然而悲剧的是我们莫队的时候不仅要插入数字还要删除数字 那么把它变成只插入不就行了 ...

  2. JQuery实现全选、反选和取消功能

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. ArchLinux下十八岁的感悟

    这次不写技术文章,谈谈自己.现在我们之间没有博主和来访者的关系,我们就是简单聊聊天.你若愿意,就听我说一说. 或者你可以按下crtl+w退出该页面,博主有其他的技术文章.但我希望你能看看最好可以给我留 ...

  4. Mac环境下安装python库时出现ModuleNotFoundError: No module named 'XXX'

    在使用pip3安装爬虫的一些有关库时发现安装成功后,import时发现又找不到,后来发现一个解决方法. 在Anaconda-Navigator里面打开environment里面寻找发现真的没有,这时再 ...

  5. The score of 'O' and 'X'

    题目描述 注意要点: 使用strlen函数注意加头文件#inlcude <cstring> 循环宏定义for循环#define _for(i,a,b) for(int i=(a);i< ...

  6. git 和 repo 常用命令

    一.git 1.回退到某个节点 git reset --hard f39043d1c0cd1cda45a4569556758d0c00bf329a 2.查看提交记录 git log git log - ...

  7. CoreText 图文混排

    基本原理 https://www.cnblogs.com/purple-sweet-pottoes/p/5109413.html CoreText(一):基本用法  https://blog.csdn ...

  8. vi基本状态

    vi状态退出并保存:shift+ZZ vi readme.txt 进入VIM编辑器,可以新建文件也可以修改文件 如果这个文件,以前是没有的,则为新建,则下方有提示为新文件. 按ESC键 跳到命令模式, ...

  9. 分享到QQ空间和新浪微博功能

    分享到QQ空间 http://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url=http://campus.51job.com/cmbnt ...

  10. 01背包--hdu2639

    hdu-2639 The title of this problem is familiar,isn't it?yeah,if you had took part in the "Rooki ...