SpringMVC | 快速入门

简介: SpringMVC | 快速入门

e3136bfd73674f949c676d774d437fa3.png

一、SpringMVC简介


1.1 介绍

1.2 入门案例

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


c09e206db9b34fe1b19f7fd800e6b6c4.png

<!--    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的方法进行访问

12a69ba3d8cb464a83fd61f6cc6d97f0.png

b0dc9aa38a714c429eea983e75624ef1.png

32157f11dffc4de1b78a0aa0cd3ced78.png

b7565e57ef1e4a069425904834a76211.png

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

af9bc308f45246c89a60b02530435ef9.png

b8ec2151833a43a4a94b85b9f9738a2d.png

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)扫描业务层和数据层,不扫描表现层

目录结构:


dd83df70a41c4fe2a34cf795515b1f64.png


下面看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); // 分别查看是否被加载了
    }
}

66b3afc0122f403f8c79225b880d44ac.png


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


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

b16456d3a4fe4329976445ee1e8b7bc9.png

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


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

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

综上所述,将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测试

45dd3be7583f4eee9c048cecdc5704f2.png


(3)查看测试返回结果


80c94578b54f4be1a597eb2a95c0b495.png


4be1b97834a64d799d816fec12896f6a.png

控制台输出结果:

a23036945f064fbda9a064b5e40a8ffe.png


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


四、结语


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


相关文章
|
6月前
|
Java 应用服务中间件 Spring
SpringMVC快速入门加登录流程分析
SpringMVC快速入门加登录流程分析
78 0
|
前端开发 Java 数据库连接
SpringMVC快速入门
SpringMVC快速入门
|
前端开发 Java 数据库连接
【SpringMVC】JSR 303与interceptor拦截器快速入门
JSR 303是Java规范请求(Java Specification Request)的缩写,意思是Java 规范提案。是指向JCP(Java Community Process)提出新增一个标准化技术规范的正式请求。任何人都可以提交JSR,以向Java平台增添新的API和服务。JSR已成为Java界的一个重要标准。 JSR-303 是JAVA EE 6 中的一项子规范,叫做Bean Validation,Hibernate Validator 是 Bean Validation 的参考实现 . Hibe
|
开发框架 前端开发 Java
初识SpringMVC -- SpringMVC快速入门保姆级教程(一)
初识SpringMVC -- SpringMVC快速入门保姆级教程(一)
152 0
|
前端开发 JavaScript Java
REST风格 -- SpringMVC快速入门保姆级教程(四)
REST风格 -- SpringMVC快速入门保姆级教程(四)
111 0
|
小程序 Java 程序员
SpringMVC bean加载控制 -- SpringMVC快速入门保姆级教程(二)
SpringMVC bean加载控制 -- SpringMVC快速入门保姆级教程(二)
|
JSON 程序员 数据格式
SpringMVC 请求与响应 -- SpringMVC快速入门保姆级教程(三)(2)
SpringMVC 请求与响应 -- SpringMVC快速入门保姆级教程(三)
|
Java 应用服务中间件 Spring
SpringMVC 请求与响应 -- SpringMVC快速入门保姆级教程(三)(1)
SpringMVC 请求与响应 -- SpringMVC快速入门保姆级教程(三)
|
前端开发 JavaScript Java
SpringMVC基本原理及快速入门
SpringMVC基本原理及快速入门
104 0
|
前端开发 Java Spring