• SSM学习——SpringMVC(10)


    感谢黑马!
    SpringMVC技术与Servlet技术功能等同,均属于Web层开发技术

    在这里插入图片描述

    1 导入坐标

    <dependency>
                
                <groupId>javax.servletgroupId>
                <artifactId>javax.servlet-apiartifactId>
                <version>3.1.0version>
                <scope>providedscope>
            dependency>
            <dependency>
                
                <groupId>org.springframeworkgroupId>
                <artifactId>spring-webmvcartifactId>
                <version>5.2.20.RELEASEversion>
            dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    新建包与类,controller
    编写“servlet”

    //定义controller,使用controller定义bean
    @Controller
    public class UserController {
        //    设置当前访问路径
        @RequestMapping("/save")
        //有返回类型就写@ResponseBody
        @ResponseBody
        //    返回json数据就写String,方法名任意,返回的字符串写在return里面
        public String save() {
            System.out.println("user save...");
            return "{'module':'springmvc'}";
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    然后去新建一个类拿来加载springmvc的配置类,写法很像之前整合mybatis的配置类

    //创建springmvc的配置文件,加载controller对应的bean
    @Configuration
    @ComponentScan("cn.calendo.controller")
    public class SpringMVCConfig {
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    我们这时还需要启动servlet内给springmvc处理的配置

    //定义一个servlet容器启动的配置类,在里面加载spring的配置
    //需要继承ADSI,然后覆盖一些抽象方法
    public class ServletContainersInitConfig extends AbstractDispatcherServletInitializer {
        //加载springmvc容器配置
        @Override
        protected WebApplicationContext createServletApplicationContext() {
            //tomcat容器启动时会加载这个类
            AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
            //注册一下springmvc的配置类
            ctx.register(SpringMVCConfig.class);
            return ctx;
        }
    
        //设置哪些请求归属springmvc处理
        @Override
        protected String[] getServletMappings() {
            //String[]{"/"}表示所有都归spring处理
            return new String[]{"/"};
        }
    
        //加载spring容器配置
        @Override
        protected WebApplicationContext createRootApplicationContext() {
            return null;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    然后再去导一下maven

    
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.tomcat.mavengroupId>
                    <artifactId>tomcat7-maven-pluginartifactId>
                    <version>2.2version>
                    <configuration>
                        <port>80port>
                        <path>/path>
                    configuration>
                plugin>
            plugins>
        build>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    然后我们启动项目,去访问save这个虚拟路径,然后发现成功访问到数据,后台也输出了相关信息
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    流程分析

    在这里插入图片描述
    在这里插入图片描述

    Spring加载相关bean,排除SpringMVC相关bean

    我们的spring在加载bean时需要排除掉springMVC加载的东西
    因此可以在核心配置类里面这么些:

    @Configuration
    //@ComponentScan({"com.itheima.service","com.itheima.dao"})
    //设置spring配置类加载bean时的过滤规则,当前要求排除掉表现层对应的bean
    //excludeFilters属性:设置扫描加载bean时,排除的过滤规则
    //type属性:设置排除规则,当前使用按照bean定义时的注解类型进行排除
    //classes属性:设置排除的具体注解类,当前设置排除@Controller定义的bean
    @ComponentScan(value="com.itheima",
        excludeFilters = @ComponentScan.Filter(
            type = FilterType.ANNOTATION,
            classes = Controller.class
        )
    )
    public class SpringConfig {
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    在这里插入图片描述

    在这里插入图片描述

    这里还可以对servlet转移控制的配置进行简化
    在这里插入图片描述

  • 相关阅读:
    Java EE——线程(2)
    k8s入门之pod(四)
    strstr/strtok /strerror /字符分类(转换)函数
    java-php-python-ssm学生综合测评系统计算机毕业设计
    梯度裁剪:torch.nn.utils.clip_grad_norm_详解
    没有过去的男人
    MATLAB程序设计与应用 4.4 特殊形式的函数
    Linux的各种环境配置
    Redis如何查看KEY的数据类型
    uniapp之actionsheet 自定义组件
  • 原文地址:https://blog.csdn.net/qq_52480906/article/details/126436726