经过 spring mvc 一,我们都应该了解到了spring mvc的最简单的配置流程,项目能正常的运行起来的基本配置,那么下面我们在来回顾下 spring mvc 一里面的代码吧。
还记得在spring mvc 一 里面,我写完1、2点后加了一行说明,这里就不再写,我们在回顾 spring mvc 一的java Controller发现,里面有一行如下:
ModelAndView modelAndView = new ModelAndView("/static/template/sampleMVC.jsp");
非常的不好,因为这行代码对于以后如果我们要迁移视图页面或者拆分都是非常不利,那么我们应该怎么做呢?当然spring不可能没有想到的,连我们都能想到的问题啊。好,既然我们问题提出了,我们下面就来解决这个问题
1、修改我们的spring-mvc-servlet.xml里面的配置文件,因为每种视图页面配置都不一样,那么我们重点说两种常用的吧
A)我们说下jsp的配置,配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans default-autowire="byName">
<bean name="/test.htm" class="com.lap.taobaouse.controller.SampleController" />
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="cache" value="true" />
<property name="prefix" value="/static/template/" />
<property name="suffix" value=".jsp" />
<property name="contentType" value="text/html;charset=utf-8" />
</bean>
</beans>
从上面的配置文件我们可以看出,基础的bean类的spring还是没有变化的,就是多了一个viewResolver的视图配置,我们可以看到第二、三属性就是我们的重点了,第二行说明了所有的jsp资源的目录,当然这个是根据个人情况配置的,很多人为了安全都是放到 /WEB-INF/ 下面的,那样确实很好的安全方案,防止别人直接在浏览器地址访问资源,不过我这里是为了记录spring mvc 学习,就不考虑这些了,不过大家还是要注意这个问题的,第三行就是文件的后缀了,这个时候spring只会关注
.jsp结尾的文件了。
由此可见,<property name="prefix" value="/**/**/"/> 给了我们很大的扩展机会。
B)接下来我们看下freemarker配置吧,这个也是用的比较多的,freemarker跟jsp还是有很多不一样的,我们可以看看如下:
<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<property name="templateLoaderPaths"
value="/item/static/template/,/shop/static/template/,/user/static/template/,/order/static/template/,/commons/" />
<property name="defaultEncoding" value="utf-8" />
<property name="freemarkerSettings">
<props>
<prop key="template_update_delay">10</prop>
<prop key="locale">zh_CN</prop>
<prop key="number_format">#.##</prop>
</props>
</property>
</bean>
<bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.freemarker.FreeMarkerView" />
<property name="cache" value="true" />
<property name="prefix" value="" />
<property name="suffix" value=".ftl" />
<property name="contentType" value="text/html;charset=utf-8" />
</bean>
从上面我们可以看到freemarker配置还是有一定的差异,当然,如果简单化也是可以,重点就是项目正常运行,哈哈。
2、好了,两种常用的配置我们都看了,我们该看看修改了配置后,我们的java类有何变化了,大致代码如下:
/*
* Copyright 2013 The JA-SIG Collaborative. All rights reserved.
* distributed with this file and available online at
* http://www.etong.com/
*/
package com.lap.taobaouse.controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
/**
* <p>
* 最简单的spring mvc
* </p>
*
* @author 劳水生 Exp
* @version $FileName: SampleController.java $Date: 2013-3-20 上午10:07:58 -0400
* 2013
* @since 1.0
*
*/
public class SampleController implements Controller {
@Override
public ModelAndView handleRequest(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception {
ModelAndView modelAndView = new ModelAndView("sampleMVC");
modelAndView.addObject("fieldName", "你好");
// TODO 调用应用/业务对象
return modelAndView;
}
}
从ModelAndView的创建我们可以看出,跟spring mvc 一的差别了吧,这里就不需要在创建包含全名称和路径的视图文件了,呵呵。
到此我们的第二个简单spring mvc 已经完成。当然下次我们还是在这次基础上讲解spring mvc的使用。
如有不解,可以联系我,大家一起探讨学习哦,如果要转载,记得写出处哦