Spring mvc 实例--使用velocity视图,解决中文乱码问题

来源:互联网 发布:广西机保数据采集系统 编辑:程序博客网 时间:2024/05/26 02:54

    上个星期读了一些spring mvc源码,现在可以将之前的写的简单的例子贴出来,为以后的开发作些准备。

 

这是一个非常简单的例子,就是使用SimpleFormController实现spring mvc的例子。

首先,在web.xml上配置DispatcherServlet。

 

上面配置了DispatcherServlet,而且所有的以htm,vm结尾的url请求都被DispatcherServlet处理。

如果还有用到spring的其他技术的话就需要上面的listener了。

 

接下来我们看一下控制器类。

 

referenceData()方法是为页面初始渲染提供必要的数据。onSubmit()方法是在处理此对应页面提交时数据,并转向另外一个页面。

这是一个简单的例子,所以我们发出一个URL请求时只用用到referenceData()的方法体。

我们发出这样的URL请求:

http://localhost:8080/winking/home.vm 或http://localhost:8080/winking/home.htm.

然后到这样一个页面v.vm:

 

接下来就是核心的配置文件了,上面web.xml里的servlet名称是winking,所以DispatcerServlet会找winking-servlet.xml.

这样子就可以了。

当然上面还是要注意的地方,就是中文问题。

1.需要在vm模板文件加上:<meta http-equiv="Content-Type" content="text/html; charset=GBK">

2.在"velocityConfigurer"加上

   <property name="velocityProperties">
            <props>
                <prop key="input.encoding">GBK</prop>
                <prop key="output.encoding">GBK</prop>
            </props>
        </property>

3.在"viewResolver"加上<property name="contentType">
            <value>text/html;charset=GBK</value>
        </property>


最主要是确保所有的字符集都是统一的。

上面四个property很简单,前面两个是在模板方便处理时间和数字格式显示。

后面两个是在vm模板能够访问request和session的数据。

 

另外还需要一般性的配置,就是在web.xml配置filter

这样子就完全解决了spring mvc velocity的中文问题了。