Spring mvc 实例--使用velocity视图,解决中文乱码问题
2009-08-25 15:15
691 查看
上个星期读了一些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的中文问题了。
这是一个非常简单的例子,就是使用SimpleFormController实现spring mvc的例子。
首先,在web.xml上配置DispatcherServlet。
<servlet> <servlet-name>winking</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>winking</servlet-name> <url-pattern>*.htm</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>winking</servlet-name> <url-pattern>*.vm</url-pattern> </servlet-mapping> <!-- <servlet-mapping> <servlet-name>hessainTest</servlet-name> <url-pattern>/hessainTest</url-pattern> </servlet-mapping> --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener>
上面配置了DispatcherServlet,而且所有的以htm,vm结尾的url请求都被DispatcherServlet处理。
如果还有用到spring的其他技术的话就需要上面的listener了。
接下来我们看一下控制器类。
public class HomeController extends SimpleFormController { public HomeController() { setCommandClass(String.class); setCommandName("string"); } protected Map referenceData(HttpServletRequest request) throws Exception { Map map = new HashMap(); map.put("name", "许赟钦"); map.put("isShow", true); return map; } protected ModelAndView onSubmit(HttpServletRequest request, HttpServletResponse response, Object cmd, BindException ex) throws Exception { System.out.println("to do:88888"); return new ModelAndView(this.getFormView(), "home", "Home haha"); }
referenceData()方法是为页面初始渲染提供必要的数据。onSubmit()方法是在处理此对应页面提交时数据,并转向另外一个页面。
这是一个简单的例子,所以我们发出一个URL请求时只用用到referenceData()的方法体。
我们发出这样的URL请求:
http://localhost:8080/winking/home.vm 或http://localhost:8080/winking/home.htm.
然后到这样一个页面v.vm:
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=GBK"> <title>Insert title here</title> </head> <body> werwerwerw<br> ${name} #if(${isShow}) ${name} TRUE #else false #end </body> </html>
接下来就是核心的配置文件了,上面web.xml里的servlet名称是winking,所以DispatcerServlet会找winking-servlet.xml.
<bean id="homeController" class="com.winking.spring.mvc.test.HomeController"> <property name="sessionForm"> <value>true</value> </property> <property name="commandName"> <value>user</value> </property> <property name="commandClass"> <value>com.winking.spring.mvc.test.User</value> </property> <property name="formView"> <value>v</value> </property> <property name="successView"> <value>v</value> </property> </bean> <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <prop key="/home.vm">homeController</prop> <prop key="/home.htm">homeController</prop> </props> </property> </bean> <!-- velocity模板引擎 --> <bean id="velocityConfigurer" class="org.springframework.web.servlet.view.velocity.VelocityConfigurer"> <property name="resourceLoaderPath"> <value>WEB-INF/velocity/</value> </property> <property name="velocityProperties"> <props> <prop key="input.encoding">GBK</prop> <prop key="output.encoding">GBK</prop> </props> </property> </bean> <!-- 解析velocity --> <bean id="viewResolver" class="org.springframework.web.servlet.view.velocity.VelocityViewResolver"> <property name="suffix"> <value>.vm</value> </property> <property name="contentType"> <value>text/html;charset=GBK</value> </property> <property name="dateToolAttribute"> <value>dataTool</value> </property> <property name="numberToolAttribute"> <value>numberTool</value> </property> <property name="exposeRequestAttributes"> <value>true</value> </property> <property name="exposeSessionAttributes"> <value>true</value> </property> </bean>
这样子就可以了。
当然上面还是要注意的地方,就是中文问题。
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 name="dateToolAttribute"> <value>dataTool</value> </property> <property name="numberToolAttribute"> <value>numberTool</value> </property> <property name="exposeRequestAttributes"> <value>true</value> </property> <property name="exposeSessionAttributes"> <value>true</value> </property>
上面四个property很简单,前面两个是在模板方便处理时间和数字格式显示。
后面两个是在vm模板能够访问request和session的数据。
另外还需要一般性的配置,就是在web.xml配置filter
<filter> <filter-name>CharacterSetEncoding Filter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>GBK</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>false</param-value> </init-param> </filter> <filter-mapping> <filter-name>CharacterSetEncoding Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
这样子就完全解决了spring mvc velocity的中文问题了。
相关文章推荐
- 使用gSOAP开发实例(3) iconv解决中文乱码问题
- Ajax的底层实现--使用Ajax实现无刷新登录实例--解决ajax中URl参数带中文的乱码问题
- Java使用Velocity模板发送HTML格式邮件并解决中文乱码问题
- 使用gSOAP开发实例(4) iconv解决中文乱码问题(续)
- 使用gSOAP开发实例(3) iconv解决中文乱码问题
- 使用gSOAP开发实例(3) iconv解决中文乱码问题
- 使用gSOAP开发实例(4) iconv解决中文乱码问题(续) .
- 使用gSOAP开发实例(4) iconv解决中文乱码问题(续)
- 使用gSOAP开发实例(3) iconv解决中文乱码问题 .
- 使用gSOAP开发实例(3) iconv解决中文乱码问题
- Java 使用 Velocity 发送邮件中文内容乱码问题的解决办法
- 使用gSOAP开发实例(4) iconv解决中文乱码问题(续)
- python使用requests爬取网页,遇到中文出现乱码的编码问题及解决
- Velocity中文乱码问题解决方法
- 解决Oracle安装使用中文乱码问题
- 在raw_input时使用中文提示时,解决中文乱码问题
- 在JSP中使用过滤器解决中文乱码问题
- 树莓派 Learning 002 装机后的必要操作 11 解决在使用SecureCRT软件链接树莓派时,SecureCRT软件的终端中显示树莓派的中文字体乱码的问题
- 解决openfire在使用MySQL数据库后的中文乱码问题
- 彻底解决Spring MVC 中文乱码 问题