日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

web.xml还不会配置编码过滤器?

發(fā)布時間:2025/3/19 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 web.xml还不会配置编码过滤器? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

場景

當出現(xiàn)中文亂碼問題,Spring中可以利用CharacterEncodingFilter過濾器解決。

實現(xiàn)

打開web.xml

<!-- 編碼過濾器 --><!-- 其中兩個的filter-name要一致 --><filter><filter-name>encodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><async-supported>true</async-supported><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param></filter><filter-mapping><filter-name>encodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>

驗證 filter-class是否添加正確,按住ctrl,鼠標左鍵懸浮上去,出現(xiàn)鏈接下劃線,并且能定位過去,則沒問題。

定位過去的源碼為:

/** Copyright 2002-2016 the original author or authors.** Licensed under the Apache License, Version 2.0 (the "License");* you may not use this file except in compliance with the License.* You may obtain a copy of the License at**????? http://www.apache.org/licenses/LICENSE-2.0** Unless required by applicable law or agreed to in writing, software* distributed under the License is distributed on an "AS IS" BASIS,* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.* See the License for the specific language governing permissions and* limitations under the License.*/package org.springframework.web.filter;import java.io.IOException; import javax.servlet.FilterChain; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;import org.springframework.util.Assert;/*** Servlet Filter that allows one to specify a character encoding for requests.* This is useful because current browsers typically do not set a character* encoding even if specified in the HTML page or form.** <p>This filter can either apply its encoding if the request does not already* specify an encoding, or enforce this filter's encoding in any case* ("forceEncoding"="true"). In the latter case, the encoding will also be* applied as default response encoding (although this will usually be overridden* by a full content type set in the view).** @author Juergen Hoeller* @since 15.03.2004* @see #setEncoding* @see #setForceEncoding* @see javax.servlet.http.HttpServletRequest#setCharacterEncoding* @see javax.servlet.http.HttpServletResponse#setCharacterEncoding*/ public class CharacterEncodingFilter extends OncePerRequestFilter {private String encoding;private boolean forceRequestEncoding = false;private boolean forceResponseEncoding = false;/*** Create a default {@code CharacterEncodingFilter},* with the encoding to be set via {@link #setEncoding}.* @see #setEncoding*/public CharacterEncodingFilter() {}/*** Create a {@code CharacterEncodingFilter} for the given encoding.* @param encoding the encoding to apply* @since 4.2.3* @see #setEncoding*/public CharacterEncodingFilter(String encoding) {this(encoding, false);}/*** Create a {@code CharacterEncodingFilter} for the given encoding.* @param encoding the encoding to apply* @param forceEncoding whether the specified encoding is supposed to* override existing request and response encodings* @since 4.2.3* @see #setEncoding* @see #setForceEncoding*/public CharacterEncodingFilter(String encoding, boolean forceEncoding) {this(encoding, forceEncoding, forceEncoding);}/*** Create a {@code CharacterEncodingFilter} for the given encoding.* @param encoding the encoding to apply* @param forceRequestEncoding whether the specified encoding is supposed to* override existing request encodings* @param forceResponseEncoding whether the specified encoding is supposed to* override existing response encodings* @since 4.3* @see #setEncoding* @see #setForceRequestEncoding(boolean)* @see #setForceResponseEncoding(boolean)*/public CharacterEncodingFilter(String encoding, boolean forceRequestEncoding, boolean forceResponseEncoding) {Assert.hasLength(encoding, "Encoding must not be empty");this.encoding = encoding;this.forceRequestEncoding = forceRequestEncoding;this.forceResponseEncoding = forceResponseEncoding;}/*** Set the encoding to use for requests. This encoding will be passed into a* {@link javax.servlet.http.HttpServletRequest#setCharacterEncoding} call.* <p>Whether this encoding will override existing request encodings* (and whether it will be applied as default response encoding as well)* depends on the {@link #setForceEncoding "forceEncoding"} flag.*/public void setEncoding(String encoding) {this.encoding = encoding;}/*** Return the configured encoding for requests and/or responses* @since 4.3*/public String getEncoding() {return this.encoding;}/*** Set whether the configured {@link #setEncoding encoding} of this filter* is supposed to override existing request and response encodings.* <p>Default is "false", i.e. do not modify the encoding if* {@link javax.servlet.http.HttpServletRequest#getCharacterEncoding()}* returns a non-null value. Switch this to "true" to enforce the specified* encoding in any case, applying it as default response encoding as well.* <p>This is the equivalent to setting both {@link #setForceRequestEncoding(boolean)}* and {@link #setForceResponseEncoding(boolean)}.* @see #setForceRequestEncoding(boolean)* @see #setForceResponseEncoding(boolean)*/public void setForceEncoding(boolean forceEncoding) {this.forceRequestEncoding = forceEncoding;this.forceResponseEncoding = forceEncoding;}/*** Set whether the configured {@link #setEncoding encoding} of this filter* is supposed to override existing request encodings.* <p>Default is "false", i.e. do not modify the encoding if* {@link javax.servlet.http.HttpServletRequest#getCharacterEncoding()}* returns a non-null value. Switch this to "true" to enforce the specified* encoding in any case.* @since 4.3*/public void setForceRequestEncoding(boolean forceRequestEncoding) {this.forceRequestEncoding = forceRequestEncoding;}/*** Return whether the encoding should be forced on requests* @since 4.3*/public boolean isForceRequestEncoding() {return this.forceRequestEncoding;}/*** Set whether the configured {@link #setEncoding encoding} of this filter* is supposed to override existing response encodings.* <p>Default is "false", i.e. do not modify the encoding.* Switch this to "true" to enforce the specified encoding* for responses in any case.* @since 4.3*/public void setForceResponseEncoding(boolean forceResponseEncoding) {this.forceResponseEncoding = forceResponseEncoding;}/*** Return whether the encoding should be forced on responses.* @since 4.3*/public boolean isForceResponseEncoding() {return this.forceResponseEncoding;}@Overrideprotected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)throws ServletException, IOException {String encoding = getEncoding();if (encoding != null) {if (isForceRequestEncoding() || request.getCharacterEncoding() == null) {request.setCharacterEncoding(encoding);}if (isForceResponseEncoding()) {response.setCharacterEncoding(encoding);}}filterChain.doFilter(request, response);}}

?

總結

以上是生活随笔為你收集整理的web.xml还不会配置编码过滤器?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。