什么是 SpringMVC?
SpringMVC 是一种基于 Java 实现的 MVC 设计模式的请求驱动类型的轻量级 web 框架,使用了 MVC 架构模式的思想,将 web 层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发
SpringMVC 的前置控制器(DispatchServlet )
Spring 的 web 框架围绕 DispatchServlet 设计,DispatchServlet 的作用是将请求分发到不同的处理器,DispatcherServlet 是一个实际的 Servlet,继承自 HttpServlet 基类
SpringMVC 的运行流程
当用户发起请求时,前置控制器拦截到请求,根据请求参数生成代理请求,找到请求所对应的实际控制器(Controller),控制器处理请求,创建数据模型并与后端进行交互,随后将处理过的数据模型响应给中心控制器,控制器使用数据模型与视图渲染视图结果,结果被返回给中心控制器随后被返回给用户,如下图:
Hello!SpringMVC(使用注解配置 SpringMVC)
首先我们创建一个项目,我这里是使用的 Maven 项目,第一步是导入 jar 包
1 | <!-- 导入依赖 --> |
随后我们要将我们的项目升级为 web 项目,我是使用 idea 进行开发的,操作如下:
添加框架支持
升级为 web 项目
随后我们要在web.xml
中配置 DispatchServlet,先看代码:
1 | <servlet> |
这里我们配置了一个DispatcherServlet
类的 Servlet,命名为 springmvc_anno,和以往不同的是,我们这里需要使用<init-param>
标签关联一个 Spring 配置文件,因为我们需要 Spring 框架帮我们找到 Contorller
<load-on-startup>
标签是设置启动级别,数字越小,启动越早,我们直接设置为1
即可,映射路径直接写/
随后我们配置在web.xml
中声明的spring_servlet.xml
,这是一个 Spring 配置文件,所以我们在src
下的resources
目录下创建它,因为我们是使用注解配置,毫无疑问要导入context
命名空间
我们在spring_servlet.xml
中进行四步操作:首先让 IOC 注解生效,即设置注解扫描,第二部过滤掉静态资源,如 HTML、JS、CSS、图片、视频等,第三步启动 MVC 注解驱动,这里会注入DefaultAnnotationHandlerMapping
和AnnotationMethodHandlerAdapter
实例,最后一步是配置视图解析器,用于帮助我们更便捷的设计 Controller 类,spring_servlet.xml
的代码如下:
1 |
|
下一步就是创建我们的 Controller,我们实现的功能就是向前端传一个字符串并显示出来,我们起名为com.lmh.controller.HelloController
因为是用过注解实现,首先我们要用@Controller
注解来修饰这个 Controller 类,随后我们只需要在类中创建一个返回值为String
类型的方法即可,这个方法的返回值,就是我们视图名称,假如我们的返回值是test
,再加上spring_servlet.xml
的配置,我们实际上就会访问WEB-INF/jsp/test.jsp
另外,我们需要使用@RequestMapping
注解来修饰我们这个函数,@RequestMapping
注解用来声明我们的映射路径,即定义什么样的url
可以访问到这个 Controller 中的 这个方法,HelloController.java 代码如下:
1 | package com.lmh.controller; |
这里我们设置返回的是hello.jsp
。Model
中为我们包装的数据模型,即返回给前端的信息,随后我们在WEB-INF/jsp/
目录下创建hello.jsp
并接收返回的数据模型:
1 | <%@ page contentType="text/html;charset=UTF-8" language="java" %> |
到这里,我们的所有配置就都已经结束,我们只需要配置 Tomcat 启动项目即可,在浏览器地址栏输入我们配置的映射路径localhost:8080/hello
,就会出现如下结果