SpringBoot7-Spring MVC-简介
来源:互联网 发布:c语言 _inline 编辑:程序博客网 时间:2024/06/15 22:27
spring mvc常用有以下几个注解:
1,@Controller:
@Controller注解在类上,表明这个类是一个spring mvc里的controller,将其声明为Spring的一个Bean,Dispatcher Servlet会自动扫描注解了此注解的类,并将web请求映射到注解了@RequestMapping的方法上。这里需要指出,在声明普通Bean的时候,使用@Componet,@Service,@Repository和@@Controller等同,因为@Service,@Repository,@Controller都组合了@Compoment元注解:但在spring mvc声明控制器bean的时候,只能使用@Controller。
2,@RequestMapping:
@RequestMapping注解是用来映射web请求(访问路径和参数),处理类和方法的。@RequestMapping可注解在类或方法上。注解在方法上的@RequestMapping路径会继承注解在类上的路径,@RequestMapping指出Servlet的request和response作为参数,也支持对request和response的媒体类型进行配置。
3,@ResponseBody
@ResponseBody支持将返回值放在response体内,而不是返回一个页面。我们在很多基于Ajax的程序的时候,可以在此注解返回数据而不是页面;此注解可放置在返回值前或者方法上
4,@RequestBody
@RequestBody运行request的参数在request体中,而不是直接连接在地址后面。此注解放置在参数前。
5,@PathVariable
@PathVariable用来接收路径参数,如/news/001,可接收001作为参数,此参数放置在参数前。
6,@RestController
@RestController是一个组合注解,组合了@Controller和@ResponseBody,这就意味着当你只开放一个和页面交互数据的控制器的时候,需要使用此注解。若没有此注解,要想实现该功能需要在代码中加入@Controller和@ResponseBody两个注解。
示例:
1,传值
添加jackson及相关依赖,获得对象和json或者xml之间的转换:
<!--添加jackson依赖,获得对象和josn或xml之间的转换--> <dependency> <groupId>com.fasterxml.jackson.dataformat</groupId> <artifactId>jackson-dataformat-xml</artifactId> <version>2.8.9</version> </dependency>
在实际项目中,我们一般主要支持json数据,没必要同时支持json和xml因为json比xml更简洁。由于javascript的广泛使用,json成为最推荐的格式,在这种情况下,我们的依赖如下(上面的依赖包含下面的依赖)
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.8.9</version> </dependency>
下面的类用来掩饰获取request对象参数和返回此对象到response
package jack.springmvc.domain;/** * Created by jack on 2017/7/22. */public class DemoObj { private Long id; private String name; public DemoObj() { super(); } public DemoObj(Long id, String name) { this.id = id; this.name = name; } /** * jackson对对象和json做转换时一定需要此空构造 * @param l * @param s */ 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; } @Override public String toString() { return "DemoObj{" + "id=" + id + ", name='" + name + '\'' + '}'; }}
2,修改下面访问的路径,修改为“/”如下图:
3,注解演示控制器:
控制器代码如下:
package jack.springmvc.controller;import jack.springmvc.domain.DemoObj;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.ResponseBody;import javax.servlet.http.HttpServletRequest;/** * Created by jack on 2017/7/22. */@Controller //@Controller注解此类是一个控制器@RequestMapping("/anno") //@RequestMapping("/anno") 映射的此类的访问路径是:/annopublic class DemoAnnoController { //此方法没有标注路径,因此使用类级别的路径/anno;produces可定制返回的response的媒体类型 //和字符集,或需返回值是json对象,则设置produces = "application/json;charset=UTF-8" @RequestMapping(produces = "text/plain;charset=UTF-8") //使用HttpServletRequest作为参数,此处的@ResponseBody用在返回值前 public @ResponseBody String index(HttpServletRequest request){ return "url:"+request.getRequestURI()+" can access"; } //接收路径参数,并在方法参数前结合@PathVariable使用,访问路径/anno/pathvar/xx @RequestMapping(value = "/pathvar/{str}",produces = "text/plain;charset=UTF-8") public @ResponseBody String demoPathVar(@PathVariable String str,HttpServletRequest request){ return "url:"+request.getRequestURI()+" can access,str:"+str; } //常规request参数获取,访问路径为/anno/requestParam?id=1 @RequestMapping(value = "/requestParam",produces = "text/plain;charset=UTF-8" ) public @ResponseBody String passRequestParam(Long id,HttpServletRequest request){ return "url:"+request.getRequestURI()+" can access,id:"+id; } //演示接收参数到对象,访问路径为/anno/obj?id=1&name=xx,application/json;charset=UTF-8 @RequestMapping(value = "/obj") @ResponseBody //@ResponseBody用在方法上 public String passObj(DemoObj obj,HttpServletRequest request){ return "url:"+request.getRequestURI()+" can access,obj id :"+obj.getId()+" ;obj name :"+obj.getName(); } //不同路径映射到相同的方法上,访问路径为/anno/name1或/anno/name2 @RequestMapping(value = {"name1","name2"},produces = "text/plain;charset=UTF-8") public @ResponseBody String remove(HttpServletRequest request){ return "url:"+request.getRequestURI()+" can access"; }}
启动tomcat,输入相应的路径和参数可进行测试。
4,@RestController
package jack.springmvc.controller;import jack.springmvc.domain.DemoObj;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;/** * Created by jack on 2017/7/23. *///@RestController声明控制器,并且返回数据时不需要@ResponseBody@RestController@RequestMapping("/rest")public class DemoRestController { //设置produces返回json @RequestMapping(value = "getjson",produces = {"application/json;charset=UTF-8"}) public DemoObj getjson(DemoObj obj){ return new DemoObj(obj.getId()+1,obj.getName()+"yy"); } //produces设置返回xml @RequestMapping(value = "getxml",produces = {"application/xml;charset=UTF-8"}) public DemoObj getxml(DemoObj obj){ return new DemoObj(obj.getId(),obj.getName()+"yy"); }}
测试输出如下:
- SpringBoot7-Spring MVC-简介
- Spring---Spring MVC 简介
- Spring MVC简介
- Spring MVC 框架简介
- Spring MVC简介
- spring MVC简介
- Spring MVC简介
- Spring MVC简介
- Spring MVC 简介
- Spring MVC简介
- Spring MVC 简介
- Spring MVC 3.0简介
- Spring Web MVC 简介
- Spring MVC 简介
- Spring MVC简介
- Spring MVC 简介
- Spring MVC简介
- spring mvc简介
- 最长递增子序列
- 七月算法深度学习 第三期 学习笔记-第七节 循环神经网络与自然语言处理
- Vue学习之路
- 面向对象小总结
- 判断 iframe 是否加载完成的完美方法
- SpringBoot7-Spring MVC-简介
- linux下串口的阻塞和非阻塞操作
- Android 广播弹框弹不出来 即使加了android.permission.SYSTEM_ALERT_WINDOW
- Listview错位
- MySQL 系列(三)你不知道的 视图、触发器、存储过程、函数、事务、索引、语句
- 常用正则表达式
- 学完Angular4
- Java反射机制详解
- 管道