//下列代码显示用到的对象
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. angular4.0快速import依赖路径

    快捷键:ALT + ENTER 直接import对应的依赖路径

  2. 最新版solr7.2集群搭建详细步骤

    集群:高可用,备份,数据可分片 需要运行4个tomcat 1.tomcat端口号(默认占用8005,8009,8080三个端口) tomcat服务 占用端口 tomcat1 6005.6060.600 ...

  3. 表单验证插件--formvalidation

    表单验证是一个非常基础的功能,当你的表单项少的时候,可以自己写验证,但是当你的表单有很多的时候,就需要一些验证的插件.今天介绍一款很好用的表单验证插件,formvalidation.其前身叫做boot ...

  4. 豹哥嵌入式讲堂:ARM开发之文件详解(4)- relocatable文件(object, library)

    大家好,我是豹哥,猎豹的豹,犀利哥的哥.今天豹哥给大家讲的是嵌入式开发里的relocatable文件(object, library). 前三节课里,豹哥都是在给大家介绍嵌入式开发中的input文件. ...

  5. python爬虫下载文件

    python爬虫下载文件 下载东西和访问网页差不多,这里以下载我以前做的一个安卓小游戏为例 地址为:http://hjwachhy.site/game/only_v1.1.1.apk 首先下载到内存 ...

  6. PE解析器的编写(三)——区块表的解析

    PE文件中所有节的属性都被定义在节表中,节表由一系列的IMAGE_SECTION_HEADER结构排列而成,每个结构用来描述一个节,结构的排列顺序和它们描述的节在文件中的排列顺序是一致的. 具有相同属 ...

  7. Android查缺补漏(View篇)--事件分发机制

    事件分发机制是Android中非常重要的一个知识点,同时也是难点,相信到目前为止很多Android开发者对事件分发机制并没有一个非常系统的认识,当然也包括博主个人在内.可能在平时的开发工作中我们并没有 ...

  8. 2017-07-20聊聊《C#本质论》

    第一次接触<C#本质论>是在这个链接.那时候刚学写C#,而且它的语言风格深深吸引了我,噢对了还有它强大的IDE--VS.这个链接里的书确实不错.文中提到: 虽然这三本书都是外国原著的,但是 ...

  9. datalist标签小结

    在Web设计中,经常会用到如输入框的自动下拉提示,这将大大方便用户的输入.在以前,如果要实现这样的功能,必须要求开发者使用一些Javascript的技巧或相关的框架进行ajax调用,需要一定的编程工作 ...

  10. Spring(一)Spring的第一滴血

    前言 开始工作了,但是一进来公司本来是做爬虫和数据分析的,但是走了一个后端的,导致我必须要去顶替他的工作.因为这个项目使用的是Spring. SpringMVC.Hibernate所以我又要去回忆一下 ...