I have previously talked about the problem of the Chinese garbled character of the Get or post method, before writing the set encoding in each method. If the program becomes larger, it will be cumbersome, and using filter can avoid this tedious.
1) Write a encodingfilter to encode the settings
Public classEncodingfilter implements Filter {@Override Public voidDoFilter (servletrequest req, servletresponse res, Filterchain arg2) throws IOException, Servletexception { HttpServletRequest Request=(httpservletrequest) req; HttpServletResponse Response=(HttpServletResponse) res; Request.setcharacterencoding ("Utf-8"); Response.setcontenttype ("Text/html;charset=utf-8"); Arg2.dofilter (NewEncodingrequestservlet (Request), response); } @Override Public voidInit (Filterconfig arg0) throws Servletexception {//TODO auto-generated Method Stub} @Override Public voiddestroy () {//TODO auto-generated Method Stub }}
2) A class that inherits from Httpservletrequestwrapper is used in this method, which can override methods in the HttpServletRequest class
We just need to rewrite the GetParameter method.
Public classEncodingrequestservlet extends Httpservletrequestwrapper {PrivateHttpServletRequest request; PublicEncodingrequestservlet (HttpServletRequest request) {super (request); This. Request =request; } @Override Publicstring GetParameter (string name) {String Value=Super.getparameter (name); if(Value = =NULL) returnvalue; String Method=Request.getmethod (); if("Get". Equalsignorecase (method)) { Try{Value=NewString (Value.getbytes ("iso8859-1"),"Utf-8"); } Catch(unsupportedencodingexception e) {e.printstacktrace (); } } returnvalue; }}
Get request in Java Web Chinese garbled in filter