Spring-MVC框架简单介绍及快速入门案例

初识spring-mvc框架及快速入门案例

spring-mvc概述

spring-mvc是基于java的实现mvc框架的架构的轻量级web框架,提高开发人员在开发web项目的效率。

经过不断发展,现如今已经成为最优秀的web框架。可以与spring框架无缝连接,并且接近于0配置,所有操作皆可通过注解实现。易于上手,易于使用。拥有独特的参数绑定和数据响应方式,可以自己制定拦截器,异常处理,类型转换器,并集成了文件上传的常用功能。极大的简便了开发过程。

spring组件分析

spring-mvc有6大组件,分别是前端控制器,处理器映射器,处理器适配器,处理器,视图解析器,视图,下面对它们进行简单介绍。

组件名称详细介绍
DispatcherServlet(前端控制器)是整个springmvc的核心控制器,由它控制整个运行流程,并降低了程序之间的耦合性
HandlerMapping(处理器映射器)根据用户请求找到对应的处理器,
HandlerAdapter(处理器适配器)通过处理器适配器对处理器进行执行,通过扩展适配器可以达到对其他类型进行处理
Handler(处理器)对用户请求进行业务处理,开发中,也是主要开发的部分
ViewResolver(视图解析器)用于将处理后的结果转换为视图
View(视图)通过渲染视图展示给用户,也是前端工作者的主要开发部分

spring-mvc执行流程

通过上面6大组件,可以实现浏览器接收用户请求,处理器处理请求,返回数据,页面渲染展示给用户。
具体详细步骤由下图展示:
在这里插入图片描述

  1. 用户发送请求至前端控制器DispatcherServlet。
  2. DispatcherServlet收到请求调用HandlerMapping处理器映射器。
  3. 处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
  4. DispatcherServlet调用HandlerAdapter处理器适配器。
  5. HandlerAdapter经过适配调用具体的处理器(Controller,也叫控制器)。
  6. Controller执行完成返回ModelAndView。
  7. HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet。
  8. DispatcherServlet将ModelAndView传给ViewReslover视图解析器。
  9. ViewReslover解析后返回具体View。
  10. DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。
  11. DispatcherServlet响应用户。

spring-mvc注解介绍

名称详细介绍
@Controller严格来说这个属于spring框架中的注解,用来将此类交于spring容器管理,在web项目中主要为了标注Controller层,处理前端控制器的请求
@RequestBody将请求体中的参数转为json字符串形式接收
@RestController是Restfull风格的开发规范注解,拥有上面两个注解的功能
@RequestMapping指定用户的请求路径,一个请求路径对应一个处理方法,可以写在类上和方法上
@RequestParam当请求的参数名称与Controller的业务方法参数名称不一致时可以通过此注解绑定,也可以指定默认值和参数是否是必须传递
@PathVariableRestfull风格下用于接收url地址栏参数占位符中的内容
@ResponseBody将响应的数据转为字符串返回

快速入门

首先创建一个maven WEB工程,导入相关依赖
pom.xml

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>javaee</groupId>
    <artifactId>day05_springmvc03</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>war</packaging>

    <dependencies>
        <!--导入springmvc-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.0.5.RELEASE</version>
        </dependency>
    </dependencies>

</project>

因为maven会自动导入webmvc的相关依赖,所以其他依赖不用手动导入
如图所示:
在这里插入图片描述
spring-mvc配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

    <!--开启注解扫描-->
    <context:component-scan base-package="com.dyh"/>
    
</beans>

在web.xml中配置前端控制器,保证所有请求都经过前端控制器。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	version="2.5">

	<!--配置前端控制器-->
	<servlet>
		<servlet-name>DispatcherServlet</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<!--读取配置文件-->
			<param-value>classpath:spring-mvc.xml</param-value>
		</init-param>
	</servlet>
	<servlet-mapping>
		<servlet-name>DispatcherServlet</servlet-name>
		<!--所有请求都转到前端控制器-->
		<url-pattern>/</url-pattern>
	</servlet-mapping>

</web-app>

创建一个Controller,也就是前面说的用于处理用户请求的处理器

package com.dyh.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class TestController {

    @RequestMapping("/test")//    指定一个请求路径
    public void test(){
        System.out.println("hello,world!");
    }

}

加上Controller注解,交给spring容器管理,随后在方法上指定一个请求地址,用于用户访问。

启动服务器,访问http://localhost:8080/test,打开控制台,发现下面确实将hello,world!打印在控制台上。
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值