SpringMVC的注解关键词解释
SpringMVC的注解关键词解释
@Controller控制器定义
和Struts1一样,Spring的Controller是Singleton的。这就意味着会被多个请求线程共享。因此,我们将控制器设计成无状态类。
在spring 3.0中,通过@controller标注即可将class定义为一个controller类。为使spring能找到定义为controller的bean,需要在spring-context配置文件中增加如下定义:
1 <context:component-scan base-package="com.sxt.web"/>
注:实际上,使用@component,也可以起到@Controller同样的作用。
@RequestMapping
在类前面定义,则将url和类绑定。
在方法前面定义,则将url和类的方法绑定,如下所示:
package com.lhn.web; import javax.annotation.Resource;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.sxt.service.UserService; @Controller
@RequestMapping("/user.do")
public class UserController { @Resource
private UserService userService; @RequestMapping(params="method=reg")
public String reg(String uname) {
System.out.println("HelloController.handleRequest()");
userService.add(uname);
return "index"; } public UserService getUserService() {
return userService;
} public void setUserService(UserService userService) {
this.userService = userService;
} }
@RequestParam
一般用于将指定的请求参数付给方法中形参。示例代码如下:
1 @RequestMapping(params="method=reg5")
2
3 public String reg5(@RequestParam("name")String uname,ModelMap map) {
4
5 System.out.println("HelloController.handleRequest()");
6
7 System.out.println(uname);
8
9 return "index";
10
11 }
这样,就会将name参数的值付给uname。当然,如果请求参数名称和形参名称保持一致,则不需要这种写法。
@SessionAttributes
将ModelMap中指定的属性放到session中。示例代码如下:
1 @Controller
2 @RequestMapping("/user.do")
3 @SessionAttributes({"u","a"}) //将ModelMap中属性名字为u、a的再放入session中。这样,request和session中都有了。
4 public class UserController {
5
6 @RequestMapping(params="method=reg4")
7 public String reg4(ModelMap map) {
8 System.out.println("HelloController.handleRequest()");
9
10 map.addAttribute("u","uuuu"); //将u放入request作用域中,这样转发页面也可以取到这个数据。
11
12 return "index";
13
14 }
15 }
<body>
<h1>**********${requestScope.u.uname}</h1>
<h1>**********${sessionScope.u.uname}</h1>
</body>
注:名字为”user”的属性再结合使用注解@SessionAttributes可能会报错。
@ModelAttribute
这个注解可以跟@SessionAttributes配合在一起用。可以将ModelMap中属性的值通过该注解自动赋给指定变量。
示例代码如下:
1 package com.lhn.web;
2
3 import javax.annotation.Resource;
4 import org.springframework.stereotype.Controller;
5 import org.springframework.ui.ModelMap;
6 import org.springframework.web.bind.annotation.ModelAttribute;
7 import org.springframework.web.bind.annotation.RequestMapping;
8 import org.springframework.web.bind.annotation.SessionAttributes;
9
10 @Controller
11 @RequestMapping("/user.do")
12 @SessionAttributes({"u","a"})
13 public class UserController {
14
15 @RequestMapping(params="method=reg4")
17 public String reg4(ModelMap map) {
19 System.out.println("HelloController.handleRequest()");
20 map.addAttribute("u","张三");
21 return "index";
22 }
23
24 @RequestMapping(params="method=reg5")
25 public String reg5(@ModelAttribute("u")String uname,ModelMap map) {
27 System.out.println("HelloController.handleRequest()");
28 System.out.println(uname);
29 return "index";
30 }
31 }
先调用reg4方法,再调用reg5方法。我们发现控制台打印出来:张三
@ResponseBody
@RequestMapping("/login")
public @ResponseBody User login(User user){
return user;
}
User字段:userName pwd
那么在前台接收到的数据为:'{"userName":"xxx","pwd":"xxx"}'
效果等同于如下代码:
@RequestMapping("/login")
public void login(User user, HttpServletResponse response){
response.getWriter.write(JSONObject.fromObject(user).toString());
}
SpringMVC的注解关键词解释的更多相关文章
- Spring缓存的注解关键词解释
Spring缓存的注解关键词解释 @Cacheable支持缓存 @Cacheable可以标记在一个方法上,也可以标记在一个类上. 1.当标记在一个方法上时表示该方法是支持缓存的,当标记在一个类上时则表 ...
- springmvc常用注解与类型转换
springmvc常用注解与类型转换 一:前置 spring -servlet.xml 注入 <!-- 启用spring mvc 注解 --> <context:annotation ...
- springMvc的注解注入方式
springMvc的注解注入方式 最近在看springMvc的源码,看到了该框架的注入注解的部分觉的有点吃力,可能还是对注解的方面的知识还认识的不够深刻,所以特意去学习注解方面的知识.由于本人也是抱着 ...
- SpringMVC常用注解實例詳解3:@ResponseBody
我的開發環境框架: springmvc+spring+freemarker開發工具: springsource-tool-suite-2.9.0JDK版本: 1.6.0_29tomcat ...
- SpringMVC常用注解實例詳解2:@ModelAttribute
我的開發環境框架: springmvc+spring+freemarker開發工具: springsource-tool-suite-2.9.0JDK版本: 1.6.0_29tomcat ...
- springMVC的注解详解
springmvc常用注解标签详解 1.@Controller 在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业 ...
- SpringMVC全注解
SpringMVC全注解不是你们那么玩的 前言:忙了段时间,忙得要死要活,累了一段时间,累得死去活来. 偶尔看到很多零注解配置SpringMVC,其实没有根本的零注解. 1)工程图一张: web.xm ...
- SpringMVC常用注解@Controller,@Service,@repository,@Component
SpringMVC常用注解@Controller,@Service,@repository,@Component controller层使用@controller注解 @Controller 用于标记 ...
- 一 : springmvc常用注解
springmvc常用注解详解1.@Controller在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层 ...
随机推荐
- 云计算OpenStack---创建实例(11)
创建实例时,需要先创建网络及实例类型等其它配置: 一.创建虚拟网络(Self-service network) 网络概述图: 网络连接图: 1.创建self-service网络 (1)加载系统变量: ...
- SUSE12 操作系统安装
今天开发同事需要一个客户的SUSE环境,原来没有安装过这个操作系统,网络配置方面有些问题见下一篇 镜像:SLE-12-SP3-Server-DVD-x86_64-GM-DVD1.iso 安装过程: 选 ...
- #undef 与 exit(0) 使用
#undef 与 #defined 反,实际使用中较多的是当你需要使用自己定义的标准C里面已经的函数时可以这样操作: exit(0)和exit(1)是系统判断函数是否有正常的退出,一般0表示正常的退 ...
- nginx反向代理网站镜像
某些公司会墙特定网站,如果你有一个可访问的域名和服务器,就可以通过nginx反向代理来来解决这些问题.比如现在我们用mirror.example.com镜像www.baidu.com,以下是详细操作. ...
- fragment textWatcher的设置位置
override fun onStart() { super.onStart() Log.d("------------", "1") val titleWat ...
- App元素定位三种方法
来自博客: http://testingpai.com/article/1595507262082 以下方法操作前必须确保有手机设备连入电脑,检测是否有手机连入命令 adb devices 第一种:A ...
- TensorFlow+TVM优化NMT神经机器翻译
TensorFlow+TVM优化NMT神经机器翻译 背景 神经机器翻译(NMT)是一种自动化的端到端方法,具有克服传统基于短语的翻译系统中的弱点的潜力.本文为全球电子商务部署NMT服务. 目前,将Tr ...
- 适用于CUDA GPU的Numba 随机数生成
适用于CUDA GPU的Numba 随机数生成 随机数生成 Numba提供了可以在GPU上执行的随机数生成算法.由于NVIDIA如何实现cuRAND的技术问题,Numba的GPU随机数生成器并非基于c ...
- 反汇编EXE添加一个启动时的消息框
反汇编EXE添加一个启动时的消息框 最近有一个要修改PE文件的需求,就先从EXE文件下手吧,我也是初学一个小时而已,不过之前接触过一点汇编罢了,这篇文章算是个DEMO,主要的思路是将其反汇编得到汇编代 ...
- mybatis入门案例——IDEA版
环境:IDEA2017,jdk1.8.0,maven3.5.2 步骤: 1.创建一个普通Maven工程,删掉src目录,再创建一个maveb的model命名为mybatis-01 2.配置 pom.x ...