SpringMVC接收表單數據亂碼問題

想要從前端表單中接收一個作者,然後根據作者名字查詢該作者的全部作品。

------------<br/>
    <form method="get" action="queryBooks">
      作者:<input type="text" name="bookAuthor">
      <input type="submit" value="查詢">
    </form>

一直查詢的結果都是空。可是調試發現controller已經接收到了數據。控制檯打印接收到的作者名字,輸出的是??????。

是編碼問題。可以通過添加一個編碼過濾器來解決。

這裏我採用的是配置類的形式。

public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class[]{RootConfig.class};
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class[]{WebConfig.class};
    }

    @Override
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }

    /**
     * 添加UTF-8過濾器
     * @param servletContext
     * @param filter
     * @return
     */
    @Override
    protected FilterRegistration.Dynamic registerServletFilter(ServletContext servletContext, Filter filter) {

        FilterRegistration.Dynamic filterRegistration =     servletContext.addFilter("encodingFilter",
                new CharacterEncodingFilter());
        filterRegistration.setInitParameter("encoding", "UTF-8");
         filterRegistration.setInitParameter("forceRequestEncoding", "true");
        filterRegistration.setInitParameter("forceResponseEncoding", "true");
        filterRegistration.addMappingForUrlPatterns(null, true, "/*");

        return super.registerServletFilter(servletContext, filter);
    }
}

xml形式

<filter>
        <filter-name>characterEncodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
        <init-param>
            <param-name>forceResponseEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
        <init-param>
            <param-name>forceRequestEncoding</param-name>
            <param-value>true</param-value>
        </init-param>

    </filter>
    <filter-mapping>
        <filter-name>characterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章