freemarker頁面中文亂碼

1、前言

簡單的記錄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

相關文章
相關標籤/搜索