环境版本
Windows 8.1
IDE:InstelliJ IDEA 13
Spring:Spring 4.1.1 & Spring MVC 4.1.1
WebLogic 10.3.0
JDK:1.6
在前文中,我们创建的Web应用程序,其实就是基于Spring MVC的Web项目。
因为我们在创建时就选择了Spring 4.1.1和Spring MVC 4.1.1,IDEA会帮我们自动下载相关的Jar包,所以我们只需要完成一些配置。
(1)打开web.xml,编辑内容:
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <servlet> <servlet-name>mvc-dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>mvc-dispatcher</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <!-- Log4j --> <context-param> <param-name>log4jConfigLocation</param-name> <param-value>/WEB-INF/log4j.properties</param-value> </context-param> <listener> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener> </web-app>
其中需要注意,如果指定了mvc-dispatcher这个名称,那么则必须创建mvc-dispatcher开头的文件,用于配置Spring MVC。
(2)打开mvc-dispatcher-servlet.xml,编辑内容:
<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" xmlns:mvc="http://www.springframework.org/schema/mvc" 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 http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <!-- 扫描所有的controller --> <context:component-scan base-package="com.hellomvc.controllers"/> <!-- 启动注解驱动SpringMVC功能 --> <mvc:annotation-driven />
<!-- 处理静态资源 --> <mvc:default-servlet-handler /> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/pages/"/> <property name="suffix" value=".jsp"/> </bean> <!-- tiles配置 --> <bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver"> <property name="viewClass"> <value>org.springframework.web.servlet.view.tiles2.TilesView</value> </property> <property name="order" value="1" /> </bean> <bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles2.TilesConfigurer"> <property name="definitions"> <list> <value>/WEB-INF/tiles.xml</value> </list> </property> </bean> </beans>
其中需要注意,因为我们在项目中使用了Tiles框架,如果没有使用不用添加.
另外,<mvc:default-servlet-handler />,因为在web.xml中,我们将DispatcherServlet请求映射配置为"/",所以Spring MVC将捕获Web容器所有的请求,包括静态资源的请求,Spring MVC会将它们当成一个普通请求处理,因此找不到对应处理器将导致错误。采用<mvc:default-servlet-handler />后,如果发现是静态资源的请求,就将该请求转由Web应用服务器默认的Servlet处理,如果不是静态资源的请求,才由DispatcherServlet继续处理。
(3)我们在项目中使用Tiles框架,我们再来看看tiles.xml的配置
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE tiles-definitions PUBLIC "-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN" "http://tiles.apache.org/dtds/tiles-config_2_0.dtd"> <tiles-definitions> <definition name="base.definition" template="/pages/shared/layout.jsp"> <put-attribute name="body" value="" /> </definition> <definition name="home.*" extends="base.definition"> <put-attribute name="body" value="/pages/{1}.jsp"/> </definition> </tiles-definitions>
这里我们定义了一个基础模板"base.definition",对应的模板文件:/pages/shared/layout.jsp,其中定义了一个"body"属性.定义了一个通配模板"home.*"的模板名称,继承于"base.definition",其中的body属性,对应的模板文件:/pages/{1}.jsp,其中{1},根据通配符获得.
(4)再看看controller类文件
这里返回"home.index",就会被指向到tiles.xml配置的视图文件.
(5)视图文件,index.jsp
(6)最后,看看完整的目录结构:
(7)运行