SpringMVC(一)

SpringMVC学习
mvc是什么意思

Model:数据模型,用于封装数据

View:页面视图,展示数据

Controller:处理用户交互的调度器,用于根据用户需求处理程序逻辑

SpringMVC特点:

1、轻量级Web框架

2、可以集成其他的web框架

3、它可以通过一套注解,让java类成为处理器(控制器)替代以前的Servlet

4、支持RESTful编程风格的请求

用法

如果不是通过扫描式配置文件

SpringMvcConfig 只扫描控制器所在的包

@RequestMapping(“/xxx”) //指定这个方法的访问地址
@ResponseBody //如果加上这个注解,返回的字符串不再是跳转的地址,而是直接输出到浏览器上

SpringMVC各组件的作用

在这里插入图片描述

PostMan简介

是一款功能强大的网页调试与发送网页HTTP请求的软件(跟swagger类似)

@RequestMapping //请求映射路径

类型:方法注解 类注解
位置:SpringMVC控制器方法定义上方
作用:设置当前控制器方法请求访问路径,如果设置在类上则统一设置控制器方法请求路径的前缀

@Controller
@RequestMapping("/user")
public class UserController {
    @RequestMapping("/save")
    @ResponseBody
    public String save(){
        System.out.println("user save ...");
        return "{'module':'user save'}";
    }
@RequestParam //请求参数

类型:形参注解
位置:SpringMVC控制器方法形参定义前面
作用:绑定请求参数与处理器方法形参间的关系
属性:
required:是否为必传参数,默认是true,没有提供会出现400异常,设置为false,则不是必须要提供的参数,他的值为null
defaultValue:参数默认值,如果没有传递参数,则使用默认值
应用条件:请求参数与形参变量名不同,请求参数名与形参集合对象名相同且请求参数为多个

@DateTimeFormat //日期类型传递参数

类型:形参注解
位置:SpringMVC控制器方法形参前面
作用:设定日期时间数据格式,默认是yyyy/MM/dd

//主配置类添加
@EnableWebMvc //开启一些辅助功能, 如:日期转换,json格式转换
//形参前添加
@DateTimeFormat(pattern = "yyyy-MM-dd")
@RequestBody //请求体

类型:形参注解
位置:SpringMVC控制器方法形参定义前面
作用:将请求中请求体所包含的数据传递给请求参数,此注解在一个处理器方法中只能使用一次

@ResponseBody //响应体

类型:方法注解
位置:SpringMVC控制器方法定义上方
作用:设置当前控制器返回值为响应体,响应内容为当前返回值
注意:没加的话就是跳转,加了就不跳转了

SpringMVC解决中文汉字乱码问题

请添加图片描述

接收请求中的json数据
1.添加json数据转换相关坐标
<dependency>
<groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind< / artifactId><version>2.9.0</version>
</ dependency>
2.设置发送json数据

往请求body中 添加json数据

3.开启自动转换json数据的支持

@EnableWebMvc

4.设置接收json数据

在形参前面加@RequestBody

请求参数是对象时,如何传递json字符串

POJO参数:json数据与形参对象的属性名相同,定义POJO类型形参即可接收参数 注:要使用POST请求

请求参数是对象集合时,如何传递json字符串

POJO集合参数:json数组数据与集合泛型属性名相同,定义List类型形参即可接收参数

@RequestBody与@RequestParam区别

区别:

  • @RequestParam用于接收url地址传参,表单传参【application/x-www-form-urlencoded】

    • 传递的参数格式是:键=值&键=值
    • 底层使用时getParameter(”键“)方法
  • RequestBody用于接收json数据【application/json】

    • 数据在请求体中,不能用于GET方法,只能出现一次,因为每次请求只有一个请求体
    • 不能获取键值对的数据,底层使用getReader()方法

应用:

  • 后期开发中,发送json格式数据为主,@ReqeustBody应用比较广泛
  • 如果发送非json格式数据,选用@RequestParam接收请求参数
响应页面

方法上面没有@ResponseBody注解

@RequestMapping("/toPage")

public String toPage(){  

return "page.jsp";

}

页面的跳转:
    重定向 
    	redirect:地址
    转发:
       	   forward:地址
客户端提交给服务端参数传递有两种方式:

1.普通参数:键值对 服务器端接收时要求方法形参名字,与提交的参数一致

2.json字符串:服务器端方法形参前面要加@RequestBody,将JSON字符串转成对象

RESTful风格编程
特点

1、操作同一个url使用相同的地址访问

2、客户端使用GET、POST、PUT、DELETE四种方式

3、使用/ ,不用?

查询、新增、修改、删除

访问风格的对比

请添加图片描述

@RequestMapping的属性

value:请求访问路径
method:http请求动作,标准动作(GET/POST/PUT/DELETE)

@PathVariable

类型:形参注释
位置:SpringMVC控制器方法形参定义前面
作用:绑定路径参数与处理器方法形参间的关系,要求路径参数名与形参名一一对应

@RestController

类型:类注解
位置:基于SpringMVC的RESTful开发控制器类定义上方
作用:设置当前控制器类为RESTful风格,等同于@Controller与@ResponseBody两个注解组合功能

@GetMapping @PostMapping @PutMapping @DeleteMapping

类型:方法注解
位置:基于SpringMVC的RESTful开发控制器方法定义上方
作用:设置当前控制器方法请求访问路径与请求动作,每种对应一个请求动作,例如@GetMapping对应GET请求

设置对静态资源的访问放行

@Configuration
public class SpringMvcSupport extends webMvcConfigurationSupport {
@override
protected void addResourceHandlers(ResourceHandlerRegistry registry){
1/当访问/pages/xxx时候,走/ pages日目录下的内容,最后以/结尾
/一个星号只访间下一级目录,两个星号表示访间子孙目录
registry.addResourceHandler("/pages/**") .addResourceLocations(" /pages/");registry.addResourceHandler("/js/**").addResourceLocations("/js/");
registry.addResourceHandler( " /css/**") . addResourceLocations(" /css/");
registry.addResourceHandler( "/plugins/*" ).addResourceLocations("/plugins/");
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值