Filter file: package filter; import java.io. *; Import javax.servlet. *; Import javax.servlet.http. *; Import java.net. *;
PUBLIC CLASS CHARACTERENCODING ??? IMPLEMENTS FILTER {? protected filterconfig filter inconfig = null ;? private string encoding = null;
Public void destroy () {??? filterconfig = null; ??? encoding = null ;?}
? Public void doFilter (ServletRequest request, ServletResponse response, ?????????????????????? FilterChain chain) throws IOException, ServletException {??? HttpServletRequest req = (HttpServletRequest) Request; ??? String s = Req.getRequesturi (); ??? string url = urldecoder.decode (s, "utf-8"); // When IE INTERTNET Options -> Advanced Options -> Always UTF -8 Send URL is selected. ??? INT k = url.indexof ("?"); ??? String file = (k == - 1? URL: url.substring (0, k)); ??? file f = new file (FilterConfig . GetServletContext (). getRealPath (file)); ??? f (false) {????? url = new string (S.GetBytes ("ISO-8859-1"), Encoding ); // When transmitting URLs in UTF-8 is not selected ????? URL = urldecoder.decode (url, eNCoding); ???} ??? filterconfig.getServletContext (). GetRequestDispatcher (URL) .forward ( REQ, ??????? response);?}
PUBLIC VOID INIT (FilterConfig FilterConfig) THROWS servletexception {??? this.filterconfig = filterconfig; ??? encoding = filterconfig.getinitParameter ("encoding") ;?}
}
The above is used for JDK1.4. If you use JDK1.3, add the following method in the above code and change urlencoder.decode (...) to decode (...):
? Public static String decode (String s, String enc) throws ????? UnsupportedEncodingException {??? boolean needToChange = false; ??? StringBuffer sb = new StringBuffer (); ??? int numChars = s.length () ; ??? I = 0; ??? IF (enc.Length () == 0) {????? throw new unsupportedEncodingexception (????????? "URLDECoder: Empty String Enc Parameter" ); ???} ??? While (i ??????????? sb.append (new string (Bytes, 0, POS, ENC)); ??????????} ?????????? Catch (NumberFormATexception e) {??????????? throw new IllegalargumentException (??????????????? "URLDECoder: ILLEGAL HEX Characters in escape (%) Pattern -" ??? ???????????? E.GetMessage ()); ????????? NEEDTOCHANGE = true; ??????? ?? Break; ??????? default: ????????? sb.append (c); ?????????i i ; ????????? Break ; ?????} ???} ??? Return (Needtochange? sb.tostring (): s);?} additional, also add to Web.xml file ??? ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? Characterencoding ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? Filter.Characterencoding ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ????? ENCODING ????? GBK ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ? ? ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? Characterencoding ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? / * ? ?