我有一个很好的Java学习交流群,里面有很多技术大牛,如果你感兴趣的话可以加群(471948038)一起交流学习。
加上此段代码,再也不用担心乱码问题了!只要在web.xml文件中添加上相应的过滤器即可实现。
查看代码:- public class AllCharacterEncoding implements Filter {
- private FilterConfig filterconfig;
- private String defaultencoding="UTF-8";
- public void init(FilterConfig filterconfig) throws ServletException {
- this.filterconfig=filterconfig;
- }
- public void doFilter(ServletRequest req, ServletResponse resp,
- FilterChain chain) throws IOException, ServletException {
本帖隐藏的内容
- HttpServletRequest request=(HttpServletRequest)req;
- HttpServletResponse response=(HttpServletResponse)resp;
-
- String encoding = filterconfig.getInitParameter("encoding");
- if(encoding==null)
- encoding = defaultencoding;
- request.setCharacterEncoding(encoding);
- response.setCharacterEncoding(encoding);
- response.setContentType("text/html;charset="+encoding);
- MyServletRequest mrequest = new MyServletRequest(request);
- chain.doFilter(mrequest, response);
- }
- public void destroy() {
- }
- }
- class MyServletRequest extends HttpServletRequestWrapper{
- private HttpServletRequest request;
- private String value;
- public MyServletRequest(HttpServletRequest request) {
- super(request);
- }
- //判断是不是get请求方式,如果是就手动进行编码
- @Override
- public String getParameter(String name) {
- //获得输入的值
- String value = super.getParameter(name);
- if(value==null)
- return null;
- String method =super.getMethod();//获得请求方式
- if("get".equalsIgnoreCase(method)){
- try {
- value=new String(value.getBytes("ISO8859-1"), super.getCharacterEncoding());
- } catch (UnsupportedEncodingException e) {
- e.printStackTrace();
- }
- }
- return value;
- }
- }