//下列代码显示用到的对象
public class DemoObj {
private Long id;
private String name; public DemoObj() { //①
super();
}
public DemoObj(Long id, String name) {
super();
this.id = id;
this.name = name;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}

1. @Controller


@Controller注解在类上,表明这个类是Spring MVC里面的Controller,将其声明为Spring的一个BeanDispatcherServlet会自动扫描注解了此注解的类,并将请求映射到注解了@RequestMapping的方法上,这里特别指出,在声明普通Bean的时候,使用@Component@Service@Repository@Controller是等同的,因为@Controller@Service@Repository都组合了@Component元注解,但在Spring MVC声明控制器Bean的时候,只能使用@Controller

//@Controller@Service@Repository都组合了@Component元注解
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface Controller {}

2. @RequestMapping


@RequestMapping注解是用来映射Web请求(访问路径和参数),处理类和方法的。@RequestMapping可注解在类或者方法上。注解在方法上的@RequestMapping路径会继承注解在类上的路径,@RequestMapping支持Servletrequestresponse作为参数,也支持对requestresponse的媒体类型进行配置。

3.@ResponseBody


@ResponseBody支持将返回值放在response体内,而不是返回一个页面。我们在很多基于Ajax程序的时候,可以以此注解返回数据而不是页面;此注解可放置在返回值前或者方法上。

//可放置在返回值前
//produces可定制返回的response的媒体类型和字符集,或返回值是json对象,则设置porduces="application/json;charset=UTF-8" @RequestMapping(produces = "text/plain;charset=UTF-8")
public @ResponseBody String index(HttpServletRequest request) {
return "url:" + request.getRequestURL() + " can access";
} //放置在方法上
    @RequestMapping(value = "/obj", produces = "application/json;charset=UTF-8")
@ResponseBody
public String passObj(DemoObj obj, HttpServletRequest request) {}

4. @RequestBody


@RequestBody允许request的参数在request体内,而不是直接链接在地址后面。此注解放置在参数前。

5. @PathVariable


@PathVariable用来接收路径参数,如/news/001,可接收001作为参数,此注解放置在参数前。

   @RequestMapping(value = "/pathvar/{str}", produces = "text/plain;charset=UTF-8")
public @ResponseBody String demoPathVar(@PathVariable String str, //③
HttpServletRequest request) {
return "url:" + request.getRequestURL() + " can access,str: " + str;
}

6.@RestController


@RestController是一个组合注解,组合了@Controller@ResponseBody,这就意味着当你只开发一个和页面交互数据的控制的时候,需要使用此注解。若没有此注解,要想实现上述功能,则需要自己在代码中加@Controller@ResponseBody两个注解。

@RestController
@RequestMapping("/rest")
public class DemoRestController { @RequestMapping(value = "/getjson",produces={"application/json;charset=UTF-8"})
public DemoObj getjson (DemoObj obj){
return new DemoObj(obj.getId()+1, obj.getName()+"yy");
}
@RequestMapping(value = "/getxml", produces={"application/xml;charset=UTF-8"})
public DemoObj getxml(DemoObj obj){
return new DemoObj(obj.getId()+1, obj.getName()+"yy");
}
}

① 使用@RestController,声明是控制器,并且返回数据时不需要@ResponseBody
② 返回数据的媒体类型为json
③ 直接返回对象,对象会自动转换成json
④ 返回数据的媒体类型为xml
⑤ 直接返回对象,对象会自动转换为xml

代码


常规的request参数获取,访问路径为/requestParam?id=1

@RequestMapping(value = "/requestParam", produces = "text/plain;charset=UTF-8") //⑥
public @ResponseBody String passRequestParam(Long id,
HttpServletRequest request) { return "url:" + request.getRequestURL() + " can access,id: " + id;
}

演示解释参数到对象,访问路径为/obj?id=1&name=xx

 @RequestMapping(value = "/obj", produces = "application/json;charset=UTF-8")
@ResponseBody
public String passObj(DemoObj obj, HttpServletRequest request) { return "url:" + request.getRequestURL()
+ " can access, obj id: " + obj.getId()+" obj name:" + obj.getName(); }

演示映射不同的路径到相同的方法,访问路径为/name1/name2

  @RequestMapping(value = { "/name1", "/name2" }, produces = "text/plain;charset=UTF-8")
public @ResponseBody String remove(HttpServletRequest request) { return "url:" + request.getRequestURL() + " can access";
}

转自:人生设计师博客http://blog.longjiazuo.com/

github地址:点击查看
码云地址:点击查看

SpringMvc4.x--Spring MVC的常用注解的更多相关文章

  1. spring 以及 spring mvc 中常用注解整理

    spring 以及 spring mvc 中常用注解整理 @RequestMapping(映射路径) @Autowired(注入 bean 对象) 例如: @Autowired private Bas ...

  2. Spring MVC的常用注解(一)

    概述 Spring从2.5版本开始引入注解,虽然版本不断变化,但是注解的特性一直被延续下来并不断进行扩展,这里就来记录一下Spring MVC中常用的注解,本文记录@Controller.@Reque ...

  3. Spring MVC的常用注解

    一.@Controller @Controller 负责注册一个bean 到spring 上下文中,bean 的ID 默认为类名称开头字母小写,你也可以自己指定. 二.@RequestMapping ...

  4. 0001 - Spring MVC中的注解

    1.概述 Spring MVC框架提供了功能强大的注解,大大简化了代码开发的同时也提升了程序的可扩展性 2.注解 2.1.@RequestMapping Spring MVC通过@RequestMap ...

  5. Spring中的常用注解

    Spring中的常用注解 1.@Controller 标识一个该类是Spring MVC controller处理器,用来创建处理http请求的对象.

  6. Spring 和 SpringMVC 常用注解和配置(@Autowired、@Resource、@Component、@Repository、@Service、@Controller的区别)

    Spring 常用注解 总结内容 一.Spring部分 1.声明bean的注解 2.注入bean的注解 3.java配置类相关注解 4.切面(AOP)相关注解 5.事务注解 6.@Bean的属性支持 ...

  7. Spring MVC 中采用注解方式 Action中跳转到另一个Action的写法

    Spring MVC 中采用注解方式 Action中跳转到另一个Action的写法 在Action中方法的返回值都是字符串行,一般情况是返回某个JSP,如: return "xx" ...

  8. Spring MVC 中 @ModelAttribute 注解的妙用

    Spring MVC 中 @ModelAttribute 注解的妙用 Spring MVC 提供的这种基于注释的编程模型,极大的简化了 web 应用的开发.其中 @Controller 和 @Rest ...

  9. Spring MVC中@RequestMapping注解使用技巧(转)

    @RequestMapping是Spring Web应用程序中最常被用到的注解之一.这个注解会将HTTP请求映射到MVC和REST控制器的处理方法上. 在这篇文章中,你将会看到@RequestMapp ...

  10. Spring MVC 4常用的那些注解

    Spring从2.5版本开始在编程中引入注解,用户可以使用@RequestMapping, @RequestParam, @ModelAttribute等等这样类似的注解.到目前为止,Spring的版 ...

随机推荐

  1. 第八章:Python基础の面向对象(二)

    本課主題 面向对象的多态 面向对象的成员 成员修饰符 特殊成员 面向对象其他应用 异常处理 设计模式与单例模式 面向对象的多态 指定参数类型只是多态的一种表现 另外一种是允许自己类型和自己的子类型(典 ...

  2. QMAKESPEC环境变量详解

    相关知识 要讲解QMAKESPEC环境变量的知识,先要了解如下知识 qmake .pro项目文件 makefile文件 1.qmake qmake是用来为不同的平台的开发项目创建Makefile的Tr ...

  3. java多线程之守护线程以及Join方法

    版权声明:本文出自汪磊的博客,转载请务必注明出处. 一.守护线程概述及示例 守护线程就是为其它线程提供"守护"作用,说白了就是为其它线程服务的,比如GC线程. java程序中线程分 ...

  4. HyperLedger Fabric基于zookeeper和kafka集群配置解析

    简述 在搭建HyperLedger Fabric环境的过程中,我们会用到一个configtx.yaml文件(可参考Hyperledger Fabric 1.0 从零开始(八)--Fabric多节点集群 ...

  5. 说说那些经典的web前端面试题

    阅读目录 JavaScript部分 JQurey部分 HTML/CSS部分 正则表达式 开发及性能优化部分 本篇收录了一些面试中经常会遇到的经典面试题以及自己面试过程中遇到的一些问题,并且都给出了我在 ...

  6. 实体处理模块IEntityModule

    在2015年7月16日,XCode新增了实体处理模块IEntityModule,用于拦截实体对象添删改操作. 该接口参考IHttpModule设计理念,横切在实体对象的关键生命周期之中,以达到多实体类 ...

  7. 原生js写ajax请求(复习)

    今天本地想测试一个接口,不想用框架想用js快速完成,突然发现,我居然忘了这个最基本的代码.好吧,只能复习一波. 在框架泛滥的今天,用惯$.ajax(),axios,superAgent等框架的你们,还 ...

  8. JavaScript基础知识(数据类型及转换、运算符)

    9.数据类型 概念:表示当前存储的数据的分类(表示数字 - 整数和小数) u  原始类型(原始值) -----[typeof运算符:判断变量的原始类型] *number(数字):表示数字        ...

  9. 接口自动化测试框架 (一) :APIAutoTest框架

    前言 随着测试技术的发展,接口自动化测试逐渐成为各大公司投入产出比最高的测试技术.介入时间早,执行效率高,稳定性高的优点,让越来越多的公司引入接口自动化测试. 框架简介 APIAutoTest是处理A ...

  10. AdaBoostRegressor

    class sklearn.ensemble.AdaBoostRegressor(base_estimator=None, n_estimators=50, learning_rate=1.0, lo ...