簡單的記錄freemarker遇到的錯誤問題:ftl頁面中文亂碼css
因爲freemarker整合在ssm框架中,因此筆者直接貼配置代碼html
<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"> <!-- 註冊spring的默認server,來出來靜態資源 --> <mvc:default-servlet-handler/> <!-- 註冊一些bean,只要用途就是處理請求的映射和調用 --> <mvc:annotation-driven/> <!-- 自動掃描該包,使SpringMVC認爲包下用了@controller註解的類是控制器 --> <context:component-scan base-package="com.ys.controller" /> <!-- 添加註解驅動 --> <mvc:annotation-driven enable-matrix-variables="true" /> <!-- 擴充了註解驅動,能夠將請求參數綁定到控制器參數 --> <!-- 靜態資源處理 css js imgs --> <!-- <mvc:resources location="/resources/**" mapping="/resources" /> <mvc:resources location="/back_css/" mapping="back_css/**" /> <mvc:resources location="/back_js/" mapping="/back_js/**" /> <mvc:resources location="/back_img/" mapping="/back_img/**" /> <mvc:resources location="/skin/" mapping="/skin/**" /> --> <!-- 告訴Spring 來掃描指定包下的類,並註冊被@Component,@Controller,@Service,@Repository等註解標記的組件 --> <context:component-scan base-package="com.ys.controller" use-default-filters="false"> <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/> </context:component-scan> <!--避免IE執行AJAX時,返回JSON出現下載文件 --> <bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>text/html;charset=UTF-8</value> </list> </property> </bean> <!-- 啓動SpringMVC的註解功能,完成請求和註解POJO的映射 --> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="messageConverters"> <list> <ref bean="mappingJacksonHttpMessageConverter" /> <!-- JSON轉換器 --> </list> </property> </bean> <!-- 配置文件上傳,若是沒有使用文件上傳能夠不用配置,固然若是不配,那麼配置文件中也沒必要引入上傳組件包 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- 默認編碼 --> <property name="defaultEncoding" value="utf-8" /> <!-- 文件大小最大值 --> <property name="maxUploadSize" value="10485760000" /> <!-- 內存中的最大值 --> <property name="maxInMemorySize" value="40960" /> <!-- 啓用是爲了推遲文件解析,以便捕獲文件大小異常 --> <property name="resolveLazily" value="true"/> </bean> <!-- 配置ViewResolver 。可用多個ViewResolver 。使用order屬性排序。 InternalResourceViewResolver 放在最後--> <bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver"> <property name="order" value="1"></property> <property name="mediaTypes"> <map> <!-- 告訴視圖解析器,返回的類型爲json格式 --> <entry key="json" value="application/json" /> <entry key="xml" value="application/xml" /> <entry key="htm" value="text/htm" /> </map> </property> <property name="defaultViews"> <list> <!-- ModelAndView裏的數據變成JSON --> <bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" /> </list> </property> <property name="ignoreAcceptHeader" value="true"></property> </bean> <!-- 對轉向頁面的路徑解析。prefix:前綴, suffix:後綴 --> <!--JSP視圖解析器--> <bean id="viewResolverJsp" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/"/> <property name="suffix" value=".jsp"/> </bean> <bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer"> <property name="templateLoaderPath" value="/WEB-INF/views"/> <!-- 設置頁面中文亂碼問題 --> <property name="freemarkerSettings"> <props> <prop key="defaultEncoding">UTF-8</prop> </props> </property> </bean> <bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver"> <!-- 解決freemarker中文亂碼 --> <property name="contentType" value="text/html;charset=UTF-8"/> <property name="cache" value="true"/> <property name="prefix" value=""/> <property name="suffix" value=".ftl"/> <property name="order" value="0"/> </bean> <mvc:interceptors> <mvc:interceptor > <mvc:mapping path="/**"/> <!-- 對於靜態資源,能夠經過後綴名 <mvc:exclude-mapping path="/**/*.js"/> <mvc:exclude-mapping path="/**/*.css"/> <mvc:exclude-mapping path="/**/*.jpg"/> <mvc:exclude-mapping path="/**/*.gif"/> <mvc:exclude-mapping path="/**/*.png"/> 也能夠經過文件夾, 加這些exclude-mapping就不會被攔截器攔截到,資源可以正常訪問 --> <mvc:exclude-mapping path="/back_css/**"/> <mvc:exclude-mapping path="/back_js/**"/> <mvc:exclude-mapping path="/back_img/**"/> <mvc:exclude-mapping path="/skin/**"/> <bean class="com.ys.interceptors.DefaultInterceptors"/> </mvc:interceptor> </mvc:interceptors> </beans>
須要注意的就是:web
<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer"> <property name="templateLoaderPath" value="/WEB-INF/views"/> <!-- 設置頁面中文亂碼問題 --> <property name="freemarkerSettings"> <props> <prop key="defaultEncoding">UTF-8</prop> </props> </property> </bean> <bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver"> <!-- 解決freemarker中文亂碼 --> <property name="contentType" value="text/html;charset=UTF-8"/> <property name="cache" value="true"/> <property name="prefix" value=""/> <property name="suffix" value=".ftl"/> <property name="order" value="0"/> </bean>
這兩個配置文件,其中org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer在spring-webmvc.jar 包裏面,項目要導入這個jar包才能夠,或者會找不到類。 spring
注意:還有一種常見的致使亂碼問題:你頁面的編碼跟文件保存的編碼不一致時就會出現錯誤。右鍵修改成UTF-8就能夠。express