平时做Javaweb的开发,多是用jsp做页面。但随着MVVM前端框架的逐渐流行和前后端分离的开发方式的愈发规范,jsp显得臃肿起来,故尝试将jsp替换为对前端兼容更好的H5
项目路径:
在maven中,先添加freemarker的依赖:
<dependencies> // ..省略其他配置 <!--html视图解析器freemarker--> <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.22</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>4.1.6.RELEASE</version> </dependency> </dependencies>
applicationContext.xml添加bean:
<!-- 这里配置的是html视图解析器freemarker--> <bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer"> <property name="templateLoaderPath" value="/WEB-INF/views/" /> <property name="freemarkerSettings"> <props> <prop key="template_update_delay">0</prop> <prop key="default_encoding">UTF-8</prop> <prop key="number_format">0.##########</prop> <prop key="datetime_format">yyyy-MM-dd HH:mm:ss</prop> <prop key="classic_compatible">true</prop> <prop key="template_exception_handler">ignore</prop> </props> </property> </bean>
spring-mvc.xml添加bean:
<bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver"> <property name="exposeRequestAttributes" value="true" /> <property name="exposeSessionAttributes" value="true" /> <property name="viewClass"> <value>org.springframework.web.servlet.view.freemarker.FreeMarkerView</value> </property> <property name="cache"><value>true</value></property> <!--这里需要注意一下,我注释了下面这样一行代码,这行代码的意思就是指引freemarker需要解析的文件的位置。注释掉原因是因为 applicationContext.xml里有这样一行代码:<property name="templateLoaderPath" value="/WEB-INF/views/" /> 已经指定了视图位置。如果我们这里依然保留下方代码,页面回报406的找不到的错误 --> <!--<property name="prefix"><value>/WEB-INF/views/</value></property>--> <property name="suffix"><value>.html</value></property> <property name="contentType"> <value>text/html; charset=UTF-8</value> </property> </bean>
这样,只要将对应名字的xxx.jsp文件改成xxx.html就可以实现映射了。