史上最简单的 Spring MVC 教程

原创
2017/05/12 19:16
阅读数 99

1 简介

spring MVC 属于 SpringFrameWork 的后续产品,已经融合在 Spring Web Flow 里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块,而 Spring MVC 就是其中最优秀的 MVC 框架。自从 Spring 2.5 版本发布后,由于支持注解配置,易用性得到了大幅度的提高;Spring 3.0 更加完善,实现了对 Struts 2 的超越。从现阶段来看,Spring MVC 是当前应用最多的 MVC 框架,而且在很多公司,通常会把 Spring MVC 和 Mybatis 整合起来使用。

 

2 框架原理

在Spring MVC框架中,从“Request(请求)”开始,依次进入“DispatcherServlet(核心分发器)” —> “HandlerMapping(处理器映射)” —> “Controller(控制器)” —> “ModelAndView(模型和视图)” —> “ViewResolver(视图解析器)” —> “View(视图)” —> “Response(响应)”结束,其中DispatcherServlet、HandlerMapping和ViewResolver 只需要在XML文件中配置即可,从而大大提高了开发的效率,特别是对于 HandlerMapping 框架为其提供了默认的配置。Spring MVC 框架的结构图如下所示:

史上最简单的 Spring MVC 教程

 

3 搭建 Spring MVC 框架

首先,我们需要下载 Spring MVC 框架的各种依赖包,下载地址为:Spring MVC框架的各种依赖包;然后,创建 Java Web 项目,项目名随意取,在这里,咱们就不妨取为“springmvc”,构建项目结构图如下:

史上最简单的 Spring MVC 教程

在“WEB-INF”目录下,建立“lib”目录,导入 Spring MVC 框架的相关依赖包,同时,在“External Libraries”中也导入相同的 jar 包,其中对于“lib”目录,我们直接把 jar 包复制过来就可以;但是对于“External Libraries”,我们就得通过“Project Structure”进行导入啦,具体 jar 包的导入方法可以参考:详述 IntelliJ IDEA 之 添加 jar 包。至于需要导入的 jar 包,在我们先前下载的“Spring MVC框架的各种依赖包”中都可以找到,下面附上需要导入的 jar 名称:

spring-aop-3.2.2.jar AOP

接下来,依次建立控制器Controller(即Java类):

package spring.mvc.controller;import org.springframework.web.servlet.ModelAndView;import org.springframework.web.servlet.mvc.AbstractController;/**

配置 web.xml 文件,主要是配置 DispatcherServlet,即核心分发器:

<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"

编辑 JSP 页面,用于显示,在这里需要将该 JSP 页面复制到 pages 目录一份,稍后会用到:

<%@ page contentType="text/html;charset=UTF-8" language="java" %><html>

建立 action-servlet.xml 文件,主要是声明 Controller 和配置 ViewResolver,即控制器和视图解析器:

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"

操作完以上步骤后,咱们就已经初步搭建了 Spring MVC 框架,接下来,在配置一下 web 服务器就可以成功运行啦!在这里,作者用的 web 服务器是 tomcat,配置完的结果如下所示:

史上最简单的 Spring MVC 教程

其中,标号1,为tomcat服务器的名称,可以随意取名;标号2,为web服务器默认启动的浏览器;标号3,为访问路径;标号4,为虚拟机参数配置,在此没有进行配置,即采用了默认的配置;标号5,为Java运行环境配置;标号6,为端口号配置;标号7,为部署tomcat服务器,点击进入后,配置如下:

史上最简单的 Spring MVC 教程

至此,Spring MVC 框架搭建成功,运行程序后,将在 Chrome 浏览器显示如下内容:

史上最简单的 Spring MVC 教程

史上最简单的 Spring MVC 教程

如上图所示,咱们调整“action-servlet.xml”的位置到“src”目录下,并修改其名称为“springmvc-servlet.xml”,接下来,咱们直接重启tomcat服务器是可以重启成功的,这意味着:

  • Spring MVC 不是随着容器启动而启动,它是在第一次访问时进行加载的。

虽然 tomcat 服务器启动成功,但在我们访问 http://localhost:8080/ 的时候就会报错啦!因为 Java web 项目默认的是到“WEB-INF”中寻找配置文件,而我们又调整了配置文件的位置,报错也就是显然的啦!要想解决这个问题,这就需要我们在“web.xml”文件中进行初始化参数的配置:

<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"

这样,当我们重新启动 tomcat 服务器,并访问 http://localhost:8080/ 时候,就会访问成功啦!

史上最简单的 Spring MVC 教程

 

2 HandlerMapping

接下来,咱们就介绍常见的 handlerMapping,共3种。对于 handlerMapping 的配置,我们将在“springmvc-servlet.xml”中进行配置。

2.1 BeanNameUrlHandlerMapping

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"

由于 BeanNameUrlHandlerMapping 为默认配置的 handlerMapping,所以就算我们重新启动 tomcat 服务器,访问的地址及页面也不会出现什么变化,因此作者就不把运行结果贴出来啦!

2.2 SimpleUrlHandlerMapping

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"

通过 SimpleUrlHandlerMapping,我们可以在 property 标签中 prop 配置多个 key 值,并且通过该 key 值访问页面,即我们可以通过 http://localhost:8080/springmvc/a.action 访问页面,其效果同访问 http://localhost:8080/springmvc/home.action 相同。当然,在这里之前,我们需要在声明的 Controller 中 bean 标签中添加一个 id 的属性,并将其值配置到 prop 标签内,其访问结果如下图所示:

史上最简单的 Spring MVC 教程

史上最简单的 Spring MVC 教程

特别注意:当有 BeanNameUrlHandlerMapping 方式和 SimpleUrlHandlerMapping 方式声明冲突时,也就是有同名的URL,这时 Spring MVC 框架如何处理?

  • 首先,配置重名不会引起冲突;

  • 其次,出现同名时,按配置文件的顺序执行,当发现有一个URL满足,就跳出;

  • 最后,Spring MVC 框架支持用户自定义顺序,增加 order 属性即可。

在咱们自定义顺序的时候,需要在 proprety 标签中添加order属性,即:

<!-- n 为整数,从0开始,越小优先级越高 --><proprety name=”order” value=”n”/> 1212

以上在“springmvc-servlet.xml”中配置的示例如下:

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"

2.3 ControllerClassNameHandlerMapping

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"

控制器类名处理器映射,只需要简单的声明即可使用,值得注意的是其访问的地址为:http://localhost:8080/springmvc/homeController.action

史上最简单的 Spring MVC 教程

 

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部