初识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 ...";
​
    }
相关推荐
paopaokaka_luck9 分钟前
基于springboot+vue的智慧家政管理系统(AI问答、 WebSocket实时沟通、ECharts运营分析、订单规则与服务追踪)
java·javascript·spring boot·数据分析·echarts·mybatis
sm_9267870512 分钟前
RFID 标签打印的技术实现要点与二次开发实践
java·大数据·前端·c++·编辑器
阿森_dev12 分钟前
2027 届毕设选题怎么选:30 个 Java 方向选题的实现难度排序
java·开发语言·spring boot·毕业设计·课程设计
Sarvartha22 分钟前
Lambda 表达式和函数式接口
java·开发语言
计算机毕业设计杰瑞28 分钟前
【计算机毕设精品】基于SpringBoot的一体化教务与学业质量管理系统的设计与实现,附源码_增删改查_java项目_可完美运行部署_网站项目
java·spring boot·课程设计
colinu44 分钟前
C++ 异步任务与线程生命周期:`std::async`、`future`、`thread`、`jthread` 与协作式退出
java·jvm·c++
蜗牛互联网1 小时前
Python + JSON Schema 实现工单结构化输出与本地复核
java·人工智能·后端
逐光者9331 小时前
STM32——SPI 屏 · Flash · 高速
java·前端·stm32
wuminyu1 小时前
ForkJoinPool窃取线程在扫描其他WorkQueue时的随机采样算法与Phase线程挂起唤醒机制解析
java·linux·c语言·jvm·c++
海马1 小时前
Spring Cloud 开发知识整理
spring·spring cloud·wpf