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的注解关键词解释的更多相关文章

  1. Spring缓存的注解关键词解释

    Spring缓存的注解关键词解释 @Cacheable支持缓存 @Cacheable可以标记在一个方法上,也可以标记在一个类上. 1.当标记在一个方法上时表示该方法是支持缓存的,当标记在一个类上时则表 ...

  2. springmvc常用注解与类型转换

    springmvc常用注解与类型转换 一:前置 spring -servlet.xml 注入 <!-- 启用spring mvc 注解 --> <context:annotation ...

  3. springMvc的注解注入方式

    springMvc的注解注入方式 最近在看springMvc的源码,看到了该框架的注入注解的部分觉的有点吃力,可能还是对注解的方面的知识还认识的不够深刻,所以特意去学习注解方面的知识.由于本人也是抱着 ...

  4. SpringMVC常用注解實例詳解3:@ResponseBody

    我的開發環境框架:        springmvc+spring+freemarker開發工具: springsource-tool-suite-2.9.0JDK版本: 1.6.0_29tomcat ...

  5. SpringMVC常用注解實例詳解2:@ModelAttribute

    我的開發環境框架:        springmvc+spring+freemarker開發工具: springsource-tool-suite-2.9.0JDK版本: 1.6.0_29tomcat ...

  6. springMVC的注解详解

    springmvc常用注解标签详解 1.@Controller 在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业 ...

  7. SpringMVC全注解

    SpringMVC全注解不是你们那么玩的 前言:忙了段时间,忙得要死要活,累了一段时间,累得死去活来. 偶尔看到很多零注解配置SpringMVC,其实没有根本的零注解. 1)工程图一张: web.xm ...

  8. SpringMVC常用注解@Controller,@Service,@repository,@Component

    SpringMVC常用注解@Controller,@Service,@repository,@Component controller层使用@controller注解 @Controller 用于标记 ...

  9. 一 : springmvc常用注解

    springmvc常用注解详解1.@Controller在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层 ...

随机推荐

  1. shell初学之nginx(负载均衡)

    创建三个以域名区分的网站a.com,b.com,c.com:访问a.b时,分别显示a.b两个网站的内容:访问c时,会出现依次显示两次a网站的内容,一次b网站的内容. 1 #!/bin/bash 2 s ...

  2. 细谈select函数(C语言) -(转自 piaojun_pj的专栏)

    Select在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如connect.accept.recv或recvfrom这样的阻塞程序( ...

  3. Linux基础服务——Bind DNS服务 Part2

    Linux基础服务--Bind DNS服务 Part2 DNS反向解析与区域传送 实验环境延续Part1的实验环境. 反向区域配置 正向解析是域名到IP地址的映射,反向解析则是IP地址到域名的解析,在 ...

  4. Ascend Pytorch算子适配层开发

    Ascend Pytorch算子适配层开发 适配方法 找到和PyTorch算子功能对应的NPU TBE算子,根据算子功能计算出输出Tensor的size,再根据TBE算子原型构造对应的input/ou ...

  5. 共享CUDA内存

    共享CUDA内存 进程间共享 此功能仅限于Linux. 将设备阵列导出到另一个进程 使用CUDA IPC API,可以与同一台计算机上的另一个进程共享设备阵列.为此,请使用.get_ipc_handl ...

  6. Java设计模式(3:接口隔离原则和迪米特法则详解)

    一.接口隔离原则 使用多个接口,而不使用单一的接口,客户端不应该依赖它不需要的接口.尽量的细化接口的职责,降低类的耦合度. 我们先来看一个例子: 小明家附近新开了一家动物园,里面有老虎.鸟儿.长颈鹿. ...

  7. ContOS8 配置MariaDB

    导语: 该篇文章主要记录ContOS8安装MariaDB后的一些配置内容,若想要详细了解安装过程请移步至上一篇博文! 正文: 首先对MariaDB进行相关的简单配置 使用mysql_secure_in ...

  8. 编译原理-翻译程序(Translator)

    分为编译程序(compiler)和解释程序(interpreter) 编译程序:把源程序(高级语言编写)转换成目标程序(汇编语言或机器语言编写). 解释程序:对源程序边翻译边执行. 编译型语言 优点: ...

  9. SpringBoot系列——admin服务监控

    前言 springboot项目部署起来后,如何实时监控项目的运行状况呢?本文记录使用springboot-admin对服务进行监控. springboot-admin介绍:https://codece ...

  10. CLR里的MethodTable,MethodDescChunk,MethodDesc,FixUpPreCode都是什么意思

    一:看下面一些概念 1MethodTable MethodTable可以说在CLR里面无处不在,这个东西主要是作为对象的数据类型存在,主要包含了EEClass 模块地址,类型名称,模块路径等. 2.E ...