• 【SpringMVC】


    SpringMVC技术与Servlet技术功能等同,均属于web层开发技术

    优点:使用简单,开发快捷,灵活性强

    依赖

    1. <dependency>
    2. <groupId>javax.servlet</groupId>
    3. <artifactId>javax.servlet-api</artifactId>
    4. <version>3.1.0</version>
    5. </dependency>
    6. <dependency>
    7. <groupId>org.springframework</groupId>
    8. <artifactId>spring-webmvc</artifactId>
    9. <version>6.0.5</version>
    10. </dependency>

    bean加载控制

    避免Spring错误加载到SpringMVC的bean

    方式1:扫描全部,排除掉SpringMVC的bean(例如controller)

    1. package org.example.config;/*
    2. * @Auther:huangzhiyang
    3. * @Date:2023/10/7
    4. * @Description:
    5. */
    6. import org.springframework.context.annotation.ComponentScan;
    7. import org.springframework.context.annotation.Configuration;
    8. import org.springframework.context.annotation.FilterType;
    9. import org.springframework.stereotype.Controller;
    10. @Configuration
    11. @ComponentScan(value = "org.example",
    12. excludeFilters = @ComponentScan.Filter(
    13. type = FilterType.ANNOTATION,
    14. classes = Controller.class
    15. )
    16. )
    17. public class SpringConfig {
    18. }

    方式2:精准扫描Spring的bean(例如service,dao)

    1. package org.example.config;/*
    2. * @Auther:huangzhiyang
    3. * @Date:2023/10/7
    4. * @Description:
    5. */
    6. import org.springframework.context.annotation.ComponentScan;
    7. import org.springframework.context.annotation.Configuration;
    8. @Configuration
    9. @ComponentScan({"org.example.service","org.example.dao"})
    10. public class SpringConfig {
    11. }

    方法3:不区分Spring与SpringMVC的环境

    简化开发

    1. package org.example.config;/*
    2. * @Auther:huangzhiyang
    3. * @Date:2023/10/7
    4. * @Description:
    5. */
    6. import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
    7. public class ServletContainersInitConfig extends AbstractAnnotationConfigDispatcherServletInitializer {
    8. @Override
    9. protected Class[] getRootConfigClasses() {
    10. return new Class[]{SpringConfig.class};
    11. }
    12. @Override
    13. protected Class[] getServletConfigClasses() {
    14. return new Class[]{SpringMvcConfig.class};
    15. }
    16. @Override
    17. protected String[] getServletMappings() {
    18. return new String[]{"/"};
    19. }
    20. }
    1. package org.example.config;/*
    2. * @Auther:huangzhiyang
    3. * @Date:2023/10/7
    4. * @Description:
    5. */
    6. import org.springframework.context.annotation.ComponentScan;
    7. import org.springframework.context.annotation.Configuration;
    8. @Configuration
    9. @ComponentScan("org.example.controller")
    10. public class SpringMvcConfig {
    11. }
    1. package org.example.config;/*
    2. * @Auther:huangzhiyang
    3. * @Date:2023/10/7
    4. * @Description:
    5. */
    6. import org.springframework.context.annotation.ComponentScan;
    7. import org.springframework.context.annotation.Configuration;
    8. import org.springframework.context.annotation.FilterType;
    9. import org.springframework.stereotype.Controller;
    10. @Configuration
    11. @ComponentScan(value = "org.example",
    12. excludeFilters = @ComponentScan.Filter(
    13. type = FilterType.ANNOTATION,
    14. classes = Controller.class
    15. )
    16. )
    17. public class SpringConfig {
    18. }

    请求与响应

    请求注解

    @RequestMapping

    0c8fb34da9e64e64b053ba5064c0dcde.jpg

    @RequestParam 

    f1f71e627956428fae69259721624846.jpg

    @RequestBody(详细看下面的json参数) 

    @RequestBody与@RequestParam区别

     区别:@RequestParam用于接收ur1地址传参,表单传参【application/x-www-form-urlencoded】,@RequestBody用于接收json数据【application/json】
     应用: 后期开发中,发送json格式数据为主,@RequestBody应用较广,如果发送非json格式数据,选用@RequestParam接收请求参数

    请求路径 

    1. package org.example.controller;/*
    2. * @Auther:huangzhiyang
    3. * @Date:2023/10/7
    4. * @Description:
    5. */
    6. import org.springframework.stereotype.Controller;
    7. import org.springframework.web.bind.annotation.RequestMapping;
    8. import org.springframework.web.bind.annotation.ResponseBody;
    9. @Controller
    10. @RequestMapping("/user")
    11. public class UserController {
    12. @RequestMapping("/save")
    13. @ResponseBody
    14. public String save() {
    15. System.out.println("user save");
    16. return "{'module':'user save'}";
    17. }
    18. @RequestMapping("/delete")
    19. @ResponseBody
    20. public String delete() {
    21. System.out.println("user delete");
    22. return "{'module':'user delete'}";
    23. }
    24. }

    请求方式

    Get请求

    1. @RequestMapping("/commonParam")
    2. @ResponseBody
    3. public String commonParam(String name) {
    4. System.out.println("user save");
    5. return "{'module':'user commonParam'}";
    6. }

    Post请求

    与get一致

    普通参数

    559044b73ccb49d9bfeaf17dc11f3b01.jpg

    pojo参数

    7e72c1c30fbe4458aa9de2eef52b44da.jpg

    数组参数

    c8b332e468274f7d953422246f943892.jpg

    集合参数96a80c5ad96d49839189d43b531fbc2a.jpg

    json参数

    导入依赖

    1. <dependency>
    2. <groupId>com.fasterxml.jackson.core</groupId>
    3. <artifactId>jackson-databind</artifactId>
    4. <version>2.14.2</version>
    5. </dependency>

     改变SpringMvcConfig

    1. package org.example.config;/*
    2. * @Auther:huangzhiyang
    3. * @Date:2023/10/7
    4. * @Description:
    5. */
    6. import org.springframework.context.annotation.ComponentScan;
    7. import org.springframework.context.annotation.Configuration;
    8. import org.springframework.web.servlet.config.annotation.EnableWebMvc;
    9. @Configuration
    10. @ComponentScan("org.example.controller")
    11. @EnableWebMvc
    12. public class SpringMvcConfig {
    13. }

    接受json数据

    1. @RequestMapping("/test")
    2. @ResponseBody
    3. public String listParamForJson(@RequestBody List<String> likes){
    4. return "";
    5. }

    日期类型参数传递

    乱码处理

    修改ServletContainersInitConfig

    1. package org.example.config;/*
    2. * @Auther:huangzhiyang
    3. * @Date:2023/10/7
    4. * @Description:
    5. */
    6. import org.springframework.web.filter.CharacterEncodingFilter;
    7. import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
    8. import java.util.logging.Filter;
    9. public class ServletContainersInitConfig extends AbstractAnnotationConfigDispatcherServletInitializer {
    10. @Override
    11. protected Class[] getRootConfigClasses() {
    12. return new Class[]{SpringConfig.class};
    13. }
    14. @Override
    15. protected Class[] getServletConfigClasses() {
    16. return new Class[]{SpringMvcConfig.class};
    17. }
    18. @Override
    19. protected String[] getServletMappings() {
    20. return new String[]{"/"};
    21. }
    22. @Override
    23. protected void getServletFilters(){
    24. CharacterEncodingFilter filter=new CharacterEncodingFilter();
    25. filter.setEncoding("UTF-8");
    26. return new Filter[]{filter};
    27. }
    28. }

    响应方式

    响应页面

    1. @RequestMapping("/toJumpPage")
    2. public String toJumpPage() {
    3. System.out.println("跳转页面");
    4. return "index.jsp";
    5. }

    响应数据

    1. @RequestMapping("/toText")
    2. @ResponseBody
    3. public String delete() {
    4. System.out.println("返回纯文本数据");
    5. return "response text";
    6. }
    1. @RequestMapping("/toJsonPOJO")
    2. @ResponseBody
    3. public User listParamForJson() {
    4. UserDao user=new UserDao() ;
    5. user.setAge(15);
    6. user.setName("15");
    7. return user;
    8. }

  • 相关阅读:
    Docker常见操作
    【LeetCode:2520. 统计能整除数字的位数 | 模拟 | HashMap】
    数据结构与算法—双向链表
    代码随想录训练营 DP
    39.企业快速开发平台Spring Cloud+Spring Boot+Mybatis之Highcharts 标签旋转柱形图
    Cookie与Session的区别及如何选择
    【机器学习300问】30、准确率的局限性在哪里?
    MySQL—约束—演示(基础)
    工程管理系统简介 工程管理系统源码 java工程管理系统 工程管理系统功能设计
    VirtualBox VMs 扩展磁盘空间
  • 原文地址:https://blog.csdn.net/David_Hzy/article/details/133323051