SpringMvc4.x--Spring MVC的常用注解
//下列代码显示用到的对象
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
的一个Bean
,DispatcherServlet
会自动扫描注解了此注解的类,并将请求映射到注解了@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
支持Servlet
的request
和response
作为参数,也支持对request
和response
的媒体类型进行配置。
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/
SpringMvc4.x--Spring MVC的常用注解的更多相关文章
- spring 以及 spring mvc 中常用注解整理
spring 以及 spring mvc 中常用注解整理 @RequestMapping(映射路径) @Autowired(注入 bean 对象) 例如: @Autowired private Bas ...
- Spring MVC的常用注解(一)
概述 Spring从2.5版本开始引入注解,虽然版本不断变化,但是注解的特性一直被延续下来并不断进行扩展,这里就来记录一下Spring MVC中常用的注解,本文记录@Controller.@Reque ...
- Spring MVC的常用注解
一.@Controller @Controller 负责注册一个bean 到spring 上下文中,bean 的ID 默认为类名称开头字母小写,你也可以自己指定. 二.@RequestMapping ...
- 0001 - Spring MVC中的注解
1.概述 Spring MVC框架提供了功能强大的注解,大大简化了代码开发的同时也提升了程序的可扩展性 2.注解 2.1.@RequestMapping Spring MVC通过@RequestMap ...
- Spring中的常用注解
Spring中的常用注解 1.@Controller 标识一个该类是Spring MVC controller处理器,用来创建处理http请求的对象.
- Spring 和 SpringMVC 常用注解和配置(@Autowired、@Resource、@Component、@Repository、@Service、@Controller的区别)
Spring 常用注解 总结内容 一.Spring部分 1.声明bean的注解 2.注入bean的注解 3.java配置类相关注解 4.切面(AOP)相关注解 5.事务注解 6.@Bean的属性支持 ...
- Spring MVC 中采用注解方式 Action中跳转到另一个Action的写法
Spring MVC 中采用注解方式 Action中跳转到另一个Action的写法 在Action中方法的返回值都是字符串行,一般情况是返回某个JSP,如: return "xx" ...
- Spring MVC 中 @ModelAttribute 注解的妙用
Spring MVC 中 @ModelAttribute 注解的妙用 Spring MVC 提供的这种基于注释的编程模型,极大的简化了 web 应用的开发.其中 @Controller 和 @Rest ...
- Spring MVC中@RequestMapping注解使用技巧(转)
@RequestMapping是Spring Web应用程序中最常被用到的注解之一.这个注解会将HTTP请求映射到MVC和REST控制器的处理方法上. 在这篇文章中,你将会看到@RequestMapp ...
- Spring MVC 4常用的那些注解
Spring从2.5版本开始在编程中引入注解,用户可以使用@RequestMapping, @RequestParam, @ModelAttribute等等这样类似的注解.到目前为止,Spring的版 ...
随机推荐
- angular4.0快速import依赖路径
快捷键:ALT + ENTER 直接import对应的依赖路径
- 最新版solr7.2集群搭建详细步骤
集群:高可用,备份,数据可分片 需要运行4个tomcat 1.tomcat端口号(默认占用8005,8009,8080三个端口) tomcat服务 占用端口 tomcat1 6005.6060.600 ...
- 表单验证插件--formvalidation
表单验证是一个非常基础的功能,当你的表单项少的时候,可以自己写验证,但是当你的表单有很多的时候,就需要一些验证的插件.今天介绍一款很好用的表单验证插件,formvalidation.其前身叫做boot ...
- 豹哥嵌入式讲堂:ARM开发之文件详解(4)- relocatable文件(object, library)
大家好,我是豹哥,猎豹的豹,犀利哥的哥.今天豹哥给大家讲的是嵌入式开发里的relocatable文件(object, library). 前三节课里,豹哥都是在给大家介绍嵌入式开发中的input文件. ...
- python爬虫下载文件
python爬虫下载文件 下载东西和访问网页差不多,这里以下载我以前做的一个安卓小游戏为例 地址为:http://hjwachhy.site/game/only_v1.1.1.apk 首先下载到内存 ...
- PE解析器的编写(三)——区块表的解析
PE文件中所有节的属性都被定义在节表中,节表由一系列的IMAGE_SECTION_HEADER结构排列而成,每个结构用来描述一个节,结构的排列顺序和它们描述的节在文件中的排列顺序是一致的. 具有相同属 ...
- Android查缺补漏(View篇)--事件分发机制
事件分发机制是Android中非常重要的一个知识点,同时也是难点,相信到目前为止很多Android开发者对事件分发机制并没有一个非常系统的认识,当然也包括博主个人在内.可能在平时的开发工作中我们并没有 ...
- 2017-07-20聊聊《C#本质论》
第一次接触<C#本质论>是在这个链接.那时候刚学写C#,而且它的语言风格深深吸引了我,噢对了还有它强大的IDE--VS.这个链接里的书确实不错.文中提到: 虽然这三本书都是外国原著的,但是 ...
- datalist标签小结
在Web设计中,经常会用到如输入框的自动下拉提示,这将大大方便用户的输入.在以前,如果要实现这样的功能,必须要求开发者使用一些Javascript的技巧或相关的框架进行ajax调用,需要一定的编程工作 ...
- Spring(一)Spring的第一滴血
前言 开始工作了,但是一进来公司本来是做爬虫和数据分析的,但是走了一个后端的,导致我必须要去顶替他的工作.因为这个项目使用的是Spring. SpringMVC.Hibernate所以我又要去回忆一下 ...