本章节将和大家一起讲解如何使用 XML 方式搭建 Spring MVC 项目。虽然现在的快速开发平台越来越好用,零 XML 配置的理念逐渐流行,但还是有些项目组还在延用或习惯使用 XML 方式。
本节课的重点是你需要掌握使用 XML 配置的流程,最好和本系列的《纯 JAVA 搭建 Spring MVC 项目》对比学习。
搭建 Spring MVC 项目,可以使用 JAVA 方式进行组件信息配置,也可以使用 XML 方式,甚至可以使用 JAVA 和 XML 的混合模式。
现在主流框架都流行使用 JAVA 方式(注解),逐步减少对 XML 方式的依赖。主要是 JAVA 方法更适合 JAVA 开发者的习惯,并简化了配置过程。
Spring MVC 项目是基于 Spring 的核心基础功能(IOC、AOP)之上的,Spring 建议 Spring MVC 项目中创建 2 个 WebApplication 对象(也称为上下文容器对象)。这 2 个上下文对象分别依赖于 DispatcherServlet 和 ContextLoaderListener 组件完成创建。
所以,必须配置好 DispatcherServlet 和 ContextLoaderListener ,保证程序启动时创建它们。
使用 XML 配置之前,先准备好 3 个 XML 文件:
Tips: spring-mvc.xml 和 application.xml 的文件名可由开发者根据语义自行指定。这 2 个文件也可以根据需要更改存放目录。 这 2 个 XML 文件中必须至少包括 beans 根元素说明。
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd"> </beans>
<!-- 配置 Spring MVC 的核心组件 DispatcherServlet -->
<servlet>
<servlet-name>springMVC</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>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springMVC</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
contextConfigLocation 是 DispatcherServlet 的属性,用于指定与 DispatcherServlet 创建的上下文对象有关的配置文件的位置。此处为 spring-mvc.xml 文件位置。
Tips: 放在 src/main/resource 目录中的文件,编译后都会放入 classpath (字节码目录中)。
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:application.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
配置临听器时,也需要为临听器创建的上下文对象指定配置文件的位置,此处指 application.xml 文件的位置。
如果能够看到上图标注的信息,说明 Spring MVC 初始化成功。
spring-mvc.xml 用来配置与 Spring MVC 相关的组件信息,用来提供给 web 上下文对象进行组件维护。这些组件包括 Spring MVC 核心组件和用户控制器组件。
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd 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">
<!-- 启动注解支持 -->
<mvc:annotation-driven/>
<!--静态资源交给 tomcat default servelt 处理-->
<mvc:default-servlet-handler />
<!--扫描组件位置-->
<context:component-scan base-package="com.mk.web.action"></context:component-scan>
<!-- 视图解析器 -->
<mvc:view-resolvers>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/WEB-INF/jsp"></property>
<property name="suffix" value=".jsp"></property>
</bean>
</mvc:view-resolvers>
</beans>
元素解释说明:
Tips: 映射器、适配器等组件可以不用显示配置,采用 Spring MVC 默认配置即可。
application.xml 是 Spring 上下文容器所关联的配置文件,可称其为全局上下文对象的关联配置文件。
<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-4.3.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<context:annotation-config></context:annotation-config>
<context:component-scan base-package="com.mk.web">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" />
</context:component-scan>
</beans>
元素解释说明:
Tips: application.xml 文件中一般用来配置业务层逻辑组件、数据层逻辑组件、通用组件、第三方组件相关的信息。
在项目的 WEB-INF 目录下新建 jsp 子目录,在此子目录中新建 htllo.jsp 文件,内容可任意填写。
编写控制器实例:
@Controller
public class HelloAction implements org.springframework.web.servlet.mvc.Controller {
@RequestMapping("/hello")
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
System.out.println("Bean URL ");
return “hello”;
}
}
发布项目、启动 tomcat、打开浏览器。
在浏览器的地址栏中输入:http://localhost:8888/sm-demo/hello 。如果在浏览器中看到下图信息,则恭喜 Spring MVC 项目的基础平台搭建完成。
本章节讲解了如何使用 XML 方式搭建 Spring MVC 项目,虽然现在流行使用 JAVA 方式,但 XML 仍然是一个不错的选择。
无论是使用 XML 还是 JAVA 方式,其本质是一样的,只是使用了不同的语法方式进行表达。这相当于有人用英文或中文对你说 “我爱你”。当然,你需要了解英文或中文。对于 Spring MVC 而言,对 XML 和 JAVA 的理解是无障碍的。也意味着你可以随心选择 JAVA 或 XML 方式。
0/1000