ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

SpringMVC

2021-05-26 23:03:06  阅读:193  来源: 互联网

标签:请求 get SpringMVC name getUser public String


SpringMVC

1.MVC

MVC是模型(Model)、视图(View)、控制器(Controller)的简写,是一种软件设计规范

MVC的主要作用是降低了视图与业务逻辑间的双向耦合,提高代码的复用性

MVC是一种架构模式

2.MVC的作用

  • 将url映射到Java类或Java类的方法
  • 封装用户提交的数据
  • 处理请求-调用相关的业务处理-封装相应数据
  • 将响应的数据进行渲染

3.SpringMVC的作用

接收前端传递的数据,与用户进行交互

4.SpringMVC的特点

  • 高效,基于请求的MVC框架
  • 与Spring兼容性好,无缝衔接
  • 约定优于配置

5.工作原理

1.用户发送请求至前端控制器DispatcherServlet

2.DispatcherServlet收到请求调用处理器映射器HandlerMapping

3.HandlerMing找到具体的处理器(根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet

4.DispatcherServlet调用HandlerMapping处理器映射器

5.HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)

6.Controller执行完成返回ModelAndView

7.HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet

8.DispatcherServlet将ModelAndView传给ViewReslover视图解析器

9.ViewReslover解析后返回具体View

10.DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)

11.DispatcherServlet响应用户

6.SpringMVC调用流程图

7.实例

7.1展示数据

get请求案例: http://localhost:8080/car/get

得到JSON数据:

{"id":718,"name":"保时捷","type":"Cayman T","color":"红色","price":641000.0}

思路:1)创建RunApp

2)创建Car封装id、name、type、color、price属性

3)创建CarController

  • RunApp

package cn.tedu;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.stereotype.Controller;

@SpringBootApplication

@Controller

public class RunApp {

    public static void main(String[] args) {SpringApplication.run(RunApp.class); }

}

  • Car

public class Car{封装属性,提供get/set方法、toString方法、构造方法}

  • CarController

package cn.tedu.controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

import cn.tedu.pojo.Car;

@RestController

@RequestMapping("/car")

public class CarController {

    @RequestMapping("/get")

    public Car get() {

       Car car = new Car();

       car.setId(718);

       car.setName("保时捷");

       car.setType("Cayman T");

       car.setColor("红色");

       car.setPrice(641000.0);

       return car;

    }

}

7.2处理请求参数

7.2.1简单参数传值

前提: servlet 是一种参数传递的机制 要求:所有的参数类型都是String 数据类型
说明: 数据类型的转化是框架帮助完成的!!!
public xxxx getUser(String username,Integer age)

7.2.2对象的方式接收参数

要求: 1.属性的名称必须与name属性名称一致.
2. 要求对象中必须有set/get方法 对象的属性都是private
public xxxx getUser(User user)

7.2.3同名提交问题

说明: 有时页面中会出现同名的提交问题 name属性都是一致的. 问 SpringMVC如何接收
原理: 当页面进行同名提交. 会将参数使用","号进行拼接 hobby = 吃1,吃2,吃3 String数据类型
mvc参数接收:

        public xxxx getUser(String[] hobby){
            //hobby 按照,号拆分为数组  之后循环遍历 取值操作......
        }
        ...的本质 就是数组
        public xxxx getUser(String... hobby){
            //hobby 按照,号拆分为数组  之后循环遍历 取值操作......
        }            

7.2.4为对象的引用赋值   

原则: SpringMVC中页面的name属性名称 不能重复, 除非同名提交问题
实际需求: 使用对象的引用解决 实际需求中的同名提交问题

     <input  name="name" type="text" value="二郎神">  user(name) 二郎神,啸天
     <input  name="dog.name" type="text" value="啸天">     dog(name)  二郎神,啸天

 

        public class User{
            private String name;   //二郎神
            private Dog dog;       //dog对象
        }
        public class Dog{
            private String name;   //啸天
        }
        public xxxx getUser(User user){
            
        }    

7.2.5restFul风格

7.2.5.1

get请求案例: http://localhost:8080/getUser?id=100
restFul: 可以简化get请求的结构 简化key 使用/进行分隔,请求路径中不能有动词,要求restFul的请求是无状态的.
http://localhost:8080/user/100/tom
参数接收:

        @RequestMapping("/user/{id}/{name}")
        public xxx getUser(@Pathvariable Integer id,@Pathvariable String name){
        }
        //要求: {属性名称} 必须与对象的属性名称一致   get/set方法支持
        @RequestMapping("/getUser/{id}/{name}")
        public xxx getUser(User user){
        }

请求类型与业务逻辑的关系:
请求路径: http://localhost:8080/user/100/tom type=“put”
RestFul中要求: 通过请求的类型控制业务逻辑的执行.
1.Get 查询操作
2.Post 登录/注册时使用(增)
3.Put 修改操作
4.Delete 删除操作

        @GetMapping("/user/{id}/{name}")
        public xxx getUser(@Pathvariable Integer id,@Pathvariable String name){
        }
        
        @PutMapping("/user/{id}/{name}")
        public xxx getUser(User user){
        }

7.2.5.2什么是restFul?
1.restFul其实可以简化之前的get请求的类型,将参数使用/的方式进行分隔,减少了url参数的传递的字节信息
2.restFul规定,可以通过一个url请求的地址,通过不同的请求的类型,控制业务逻辑. restFul中 要求路径中不能出现动词

8.SpringMVC常用的注解

@Controller          标识是一个Controller,Spring包扫描创建实例

@RequestMapping      请求后的映射路径

@PathVariable        标识接收单个参数

@ResponseBody        返回对象利用jackson工具类转换为json字符串

@RequestParam        参数名和请求参数名称不同时使用,可以设置默认值

9.MVC与SSM的关系


 

 

 

 

 

 

 

 

 

 

 

标签:请求,get,SpringMVC,name,getUser,public,String
来源: https://blog.csdn.net/m0_56766174/article/details/117306714

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有