【SpringMVC】快速入门

举报
向阳花花花花 发表于 2023/07/26 09:31:59 2023/07/26
【摘要】 这篇文章主要介绍了SpringMVC是隶属于Spring framework家族中的web层框架,以及入门案例和执行流程,bean的加载控制,最后介绍Postman工具的使用。


一、SpringMVC简介

1.1 介绍

1.2 入门案例

1.创建maven工程的Javaweb项目,并在pom.xml中导入两个相关依赖

创建maven工程

<!--    web项目的打包方式为war包-->
    <packaging>war</packaging>
    <!--    tomcat7插件-->
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.2</version>
                <configuration>
                    <port>80</port>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <dependencies>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.1</version>
            <scope>provided</scope>
        </dependency>
        <!--        导入servlet和springmvc相关的依赖(注意:因为使用的是tomcat7插件,springmvc的版本不能太高)-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.2.10.RELEASE</version>
        </dependency>
    </dependencies>

2.编写控制器类和请求方法


//    2.定义Controller
@Controller
public class UserController {

    //    3.设置当前方法的访问路径
    @RequestMapping("/select")
    //    4.设置返回内容作为响应数据
    @ResponseBody
    public String select() {
        System.out.println("user select ...");
        return "{'msg':'select'}";
    }

    @RequestMapping("/delete")
    @ResponseBody
    public String delete() {
        System.out.println("user delete ...");
        return "{'msg':'delete'}";
    }
}

注意事项:

  • @RequestMapping的值不可以相同,否则报错
  • 方法有参数,但是访问时没有参数,依然可以调用到方法

3.编写SpringMVC配置类(类似于Spring配置类)

@Configuration
@ComponentScan("com.itxiaoguo")
public class SpringMvcConfig {
//    5.编写SpringMVC的配置类(类似spring的配置类)
}

4.编写Servlet容器初始化类,告诉tomcat服务器加载SpringMVC的配置


//    6.编写Servlet容器初始化配置类(用于tomcat服务器加载SpringMVC配置类)
public class ServletContainersInitConfig extends AbstractDispatcherServletInitializer {
    // 加载SpringMVC容器配置信息
    @Override
    protected WebApplicationContext createServletApplicationContext() {
        AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();
        context.register(SpringMvcConfig.class); // 注入配置信息
        return context;
    }

    // 设置哪些请求归SpringMVC处理
    @Override
    protected String[] getServletMappings() {
        return new String[]{"/"}; // 设置所有请求归SpringMVC管理
    }

    // 加载Spring容器配置信息
    @Override
    protected WebApplicationContext createRootApplicationContext() {
        return null;
    }
}

5.启动tomcat服务器,在浏览器对Controller的方法进行访问

启动服务器

访问

select访问

控制台输出信息

6.如果是没有定义的方法,那么访问就会显示404

错误演示

错误提示

1.3 入门案例工作流程

(1)服务器初始化过程

1.服务器启动,执行ServletContainersInitConfig类,初始化web容器
2.执行createServletApplicationContext方法,注册SpringMVC配置信息
3.加载SpringMVCConfig类,加载对应包下的bean
4.加载UserController类,每个@RequestMapping对应一个方法
5.执行getServletMappings方法,将所有请求交由SpringMVC处理

(2)单次请求过程

1.发送请求:localhost/springmvc_1/select
2.web容器发现所有请求由SpringMVC处理
3.解析请求路径,得到请求方法名,执行对应的@RequsetMapping的方法
4.检测到@ResponseBody,直接将返回值作为响应返回

二、bean加载控制

背景引入:
SpringMVC中控制的bean是表现层的bean,Spring控制业务层和数据层的bean,为了让Spring不加载表现层的bean,只需要在Spring的配置类的@ComponentScan注解中不扫描SpringMVC的bean就可以了。

2.1 SpringMVC bean加载控制

SpringMVC加载的bean放在controller包下。

2.2 Spring bean加载控制

(1)扫描业务层和数据层,不扫描表现层

目录结构:

目录结构

下面看Spring配置类:

@Configuration
@ComponentScan({"com.itxiaoguo.service"})
public class SpringConfig {
}

因为数据层没有写实现类,因此配置中不加载数据层的bean;按照代码,我们可以加载上service层的bean,不能加载上controller层的bean。下面看测试代码和运行结果:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {SpringConfig.class})
public class UserServiceImplTest {

    @Autowired
    private UserService service;

    @Test
    public void testBean() {
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class); // 加载Spring配置类
        UserController userController = context.getBean(UserController.class);
        System.out.println(userController); 
       // System.out.println(service); // 分别查看是否被加载了

    }
}

报错

不知道如何使用Spring测试,请戳👉👉:Spring整合mybatis和junit测试

可以看到表现层没有被加载,下面将上面最后一行输出service对象的代码解开注释,并注释掉获取和输出userController的语句,查看运行结果:

成功获取

综上所述,将Spring和SpringMVC管理的bean分开的需求已经实现!

(2)扫描所有,排除表现层

@Configuration
@ComponentScan(
        value = {"com.itxiaoguo"},
        excludeFilters = @ComponentScan.Filter(
                type = FilterType.ANNOTATION, // 使用注解过滤类型
                classes = Controller.class // 指明要过滤的具体哪一种注解类型
        )
    )
public class SpringConfig {
}

使用上面的测试类,注意SpringMVC配置类中不能扫描controller层,否则过滤失效!同样可以验证这种方式也实现了需求。

(3).不区分Spring和SpringMVC环境(待了解…^ _ ^)

三、使用Postman接口测试工具测试接口

3.1Postman工具介绍

官方解释:

Postman是Google公司开发的一款功能强大的网页调试与发送HTTP请求,并能运行测试用例的Chrome插件。

通俗地讲:

它可以帮助我们模仿浏览器发送请求,比如get、post、异步等。以前我们要发送post请求(form表单)或者异步请求(Ajax),都要通过写代码来实现,现在通过这款工具我们直接选择请求方式就可以实现!

3.2使用Postman测试访问Controller

(1)下载Postman(又名邮差)工具

Postman的下载使用教程,请戳👉👉postman使用教程(超详细)

(2)输入url测试

Postman使用

(3)查看测试返回结果

返回数据
返回数据
控制台输出结果:

输出

根据以上输出,可以知道使用Postman工具访问和浏览器访问同样可以实现。

四、结语

这篇文章主要介绍了SpringMVC是隶属于Spring framework家族中的web层框架,以及入门案例和执行流程,bean的加载控制,最后介绍Postman工具的使用。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。