Spring getpost 中文乱码

    技术2022-05-19  20

       <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>forceEncoding</param-name>             <param-value>true</param-value>         </init-param>     </filter>

     

       <filter-mapping>         <filter-name>characterEncodingFilter</filter-name>         <url-pattern>/web/*</url-pattern>         <dispatcher>REQUEST</dispatcher>         <dispatcher>FORWARD</dispatcher>     </filter-mapping>

     

    该方式为什么对POST而对GET无效呢?

     

    不妨看看CharacterEncodingFilter内的实现 doFilterInternal

    该方法调用

    request.setCharacterEncoding(this.encoding);

    而该方法的说明

    Overrides the name of the character encoding used in the body of this request. This method must be called prior to reading request parameters or reading input using getReader().

    注意到没,只对body起作用。

    而get方式的请求参数在hearder里

    post方式的请求参数在body里

     

    原因自然清晰了。

     

     


    最新回复(0)