Importjava.io.IOException;Importjava.io.UnsupportedEncodingException;ImportJavax.servlet.Filter;ImportJavax.servlet.FilterChain;ImportJavax.servlet.FilterConfig;Importjavax.servlet.ServletException;Importjavax.servlet.ServletRequest;ImportJavax.servlet.ServletResponse;Importjavax.servlet.http.HttpServletRequest;ImportJavax.servlet.http.HttpServletRequestWrapper;ImportJavax.servlet.http.HttpServletResponse; Public classEncodingfilterImplementsFilter {Private StaticString encoding; Private Static FinalString default_charset= "UTF-8"; @Override Public voiddestroy () {System.out.println ("--------Destroy---------"); } @Override Public voidDoFilter (servletrequest request, servletresponse response, Filterchain chain)throwsIOException, servletexception {System.out.println ("--------DoFilter---------"); HttpServletRequest HttpRequest=(httpservletrequest) request; HttpServletResponse HttpResponse=(httpservletresponse) response; if("GET". Equals (Httprequest.getmethod ())) {Encodinghttpservletrequest wrapper=Newencodinghttpservletrequest (HttpRequest, encoding); Chain.dofilter (wrapper, response); }Else{httprequest.setcharacterencoding (encoding); Httpresponse.setcontenttype ("Text/html;charset=" +encoding); Chain.dofilter (request, response); } } Private Static classEncodinghttpservletrequestextendshttpservletrequestwrapper{PrivateHttpServletRequest request; Publicencodinghttpservletrequest (httpservletrequest request,string encoding) {Super(Request); This. Request =request; } @Override Publicstring GetParameter (string name) {String Value=Request.getparameter (name); Try{Value=NewString (Value.getbytes ("Iso8859-1"), encoding); } Catch(unsupportedencodingexception e) {e.printstacktrace (); } return Super. GetParameter (name); }} @Override Public voidInit (filterconfig config)throwsservletexception {System.out.println ("--------Init---------"); Encoding= Config.getinitparameter ("Encoding"); if(encoding==NULL||"". Equals (encoding)) encoding=Default_charset; } }
<!--sets the global encoding format for Get,post requests, with the default encoding of UTF-8 - <Filter> <Filter-name>Characterfilter</Filter-name> <Filter-class>Com.mscncn.jsd1404.EncodingFilter</Filter-class> <Init-param> <Param-name>Encoding</Param-name> <Param-value>UTF-8</Param-value> </Init-param> </Filter> <filter-mapping> <Filter-name>Characterfilter</Filter-name> <!--Block all requests, set the encoding for all requests - <Url-pattern>/*</Url-pattern> </filter-mapping>
Global Encoding Filter