初识Spring MVC

1.SpringMVC相关概念

1.1SpringMVC简介

SpringMVC是一种基于Java实现MVC模型的轻量级Web框架

SpringMVC主要负责的就是

  • controller如何接收请求和数据.

  • 如何将请求和数据转发给业务层

  • 如何将响应数据转换成json发回到前端

    SpringMVC是一种基于Java实现MVC模型的轻量级Web框架 优点 使用简单、开发便捷(相比于Servlet) 灵活性强

    demo1

    复制代码
    //
    public class ServletContainersInitConfig extends AbstractDispatcherServletInitializer {
        @Override
        protected WebApplicationContext createServletApplicationContext() {
            AnnotationConfigWebApplicationContext aw =new AnnotationConfigWebApplicationContext();
            aw.register(SpringMvcConfig.class);
    ​
            return aw;
        }
    ​
        @Override
        protected String[] getServletMappings() {
            return new String[]{"/"};
        }
    ​
        @Override
        protected WebApplicationContext createRootApplicationContext() {
            return null;
        }
    }
    ​
    ​
    @Configuration
    @ComponentScan("com.scidag.controller")
    public class SpringMvcConfig {
    ​
    }
    ​
    @Controller
    public class UserController {
        @RequestMapping("/save")
        @ResponseBody
        public String save(){
            System.out.println("user ..save");
            return "{'info springmvc'}";
        }
    ​
    }
    ​
1.2请求与响应
1.2.1请求路径设置

当多个请求路径相同时,会报错此时采用规范请求

复制代码
@Controller
@RequestMapping("/book")
public class BookController {
    @RequestMapping("/save")
    @ResponseBody
    public String BookSave(){
        System.out.println("book save ..");
        return  "{book save}";
    }
}
​
1.2.2响应
复制代码
  @RequestMapping("/tojsonpojo")
    @ResponseBody
    public User tojsonpojo(){
        User user =new User();
        user.setName("scidag");
        user.setAge(16);
        return  user;
    }
1.3REST风格

REST(Representational State Transfer),表现形式状态转换。

优点:

隐藏资源的访问行为,无法通过地址得知对资源是何种操作书写简化

对于

复制代码
  @RequestMapping(value = "/users",method = RequestMethod.POST)
    @ResponseBody
    public String save(){
        System.out.println("user save " ) ;
        return "modele : user save";
    }

这种方式太过于繁琐,所以使用了Rest风格

将上面代码改为

复制代码
  
@RestController  //  @Controller+ @ResponBody
@RequestMapping ("/books")
public class UserController {
    @PostMapping  
    public String save(){
            ...
    }
}

通过这种方式提升了代码的简洁性

2.使用PostMan工具发送请求和数据

2.1简单参数

以上是get请求

设置springmvc参数乱码问题 ,在配置类中重写这个方法

复制代码
   @Override
    protected Filter[] getServletFilters() {
        CharacterEncodingFilter ce=new CharacterEncodingFilter();
        ce.setEncoding("UTF-8");
        return  new Filter[]{ce};
    }
2.2复杂参数
复制代码
 使用之前在config中加@EnableWebMvc
 
 
 @RequestMapping("/parmpojo")
    @ResponseBody
    public String UserPojo(User user){
​
        System.out.println("pojo 参数--》" +user);
        return  "parmpojo ...";
    }
    @RequestMapping("/parmpojoandpojo")
    @ResponseBody
    public String UserPojo2(User user){
        System.out.println("pojo and pojo ->>" +user);
        return "pojo and pojo ...";
    }
    @RequestMapping("/parmarr")
    @ResponseBody
    public String UserArray(String []like){
        System.out.println(Arrays.toString(like));
        return "userarray ...";
​
    }
    @RequestMapping("/parmlist")
    @ResponseBody
    public String UserArray( @RequestParam List<String> like){
        System.out.println(like);
        return "userlsit ...";
​
    }
相关推荐
极光代码工作室5 小时前
基于SpringBoot的课程预约系统
java·springboot·web开发·后端开发
Leighteen6 小时前
`try-finally` 里的 `return`:为什么 `finally` 会悄悄改掉返回值、吞掉异常
java·开发语言
名字还没想好☜6 小时前
Go 的 time.After 在 select 循环里内存泄漏:定时器堆积原理与 timer.Reset 正确姿势
java·数据库·golang·go·goroutine
圆山猫7 小时前
[Virtualization](三):RISC-V H-extension 与 Guest 执行模式
android·java·risc-v
caishenzhibiao7 小时前
期货先行者主图 同花顺期货通指标
java·c语言·c#
史呆芬7 小时前
分布式事务实战:微服务跨服务数据一致性解决方案
java·后端·spring cloud
IT界的老黄牛7 小时前
限流命中后该怎么办:直接丢、阻塞等待、延迟重投三种姿势的取舍
java·rocketmq·redisson·令牌桶·削峰·分布式限流
daad7778 小时前
记录matlab状态机demo
java·网络·matlab
牡丹雅忻19 小时前
AES 加密模式演进:从 ECB、CBC 到 GCM 的 C# 深度实践
java·开发语言·c#
学者猫头鹰9 小时前
Java 8 核心新特性
java