J2EE网址链接有中文时乱码解决方案

来源:互联网 发布:高级优秀的程序员 编辑:程序博客网 时间:2024/06/01 20:13

J2EE开发中,网址链接中存在中文如何正常显示。

  1. 在web.xml中增加过滤器
<filter>    <filter-name>urlFilter</filter-name>    <filter-class>com.dj.filter.UrlFilter</filter-class>    <init-param>        <param-name>DEFAULT_URI_ENCODE</param-name>        <param-value>UTF-8</param-value>    </init-param></filter><filter-mapping>    <filter-name>urlFilter</filter-name>    <url-pattern>/*</url-pattern></filter-mapping>
  1. 在src中增加过滤器代码
package com.dj.filter;import java.io.IOException;import java.net.URLDecoder;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServletRequest;public class UrlFilter implements Filter {    public final static String DEFAULT_URI_ENCODE = "UTF-8";    private FilterConfig config = null;    private String encode = null;    public void init(FilterConfig config) throws ServletException {        this.config = config;        this.encode = config.getInitParameter("DEFAULT_URI_ENCODE");        if(this.encode == null) {            this.encode = DEFAULT_URI_ENCODE;        }    }    public void doFilter(ServletRequest req, ServletResponse res,        FilterChain chain) throws IOException, ServletException {        HttpServletRequest request = (HttpServletRequest) req;        String uri = request.getRequestURI();        String ch = URLDecoder.decode(uri, encode);        if(uri.equals(ch)) {            chain.doFilter(req, res);            return;        }        ch = ch.substring(request.getContextPath().length());        config.getServletContext().getRequestDispatcher(ch).forward(req, res);    }        public void destroy() {        config = null;    }}
原创粉丝点击