tomcat5.5.12
写servlet中生成的html代码中有一个地方是显示一张图片,路径通过调用一个方法得到(图片名是中文)
运行对网页右键查看源代码路径显示正确
但是为什么不能显示图片呢?
图片路径确定正确

解决方案 »

  1.   

    java.net.URLEncoder.encode("图片路径");
      

  2.   

    可以修改tomcat的server.xml属性,好像是URL什么的,就能使用中文名了。否则需要换用英文名
      

  3.   

    <filter>
        <filter-name>encoding</filter-name>
        <filter-class>EncodingFilter</filter-class>
        <init-param>
          <param-name>encoding</param-name>
          <param-value>GBK</param-value>
        </init-param>
        <init-param>
          <param-name>ignore</param-name>
          <param-value>true</param-value>
        </init-param>
      </filter>
      

  4.   

    import java.io.*;
    import javax.servlet.*;
    import javax.servlet.http.*;
    import java.net.*;
    public class EncodingFilter
        implements Filter {
      protected FilterConfig filterConfig = 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");//当IE中Intertnet选项->高级选项->总是以UTF-8发送URL 被选中时。
        int k=url.indexOf(" ");
        String file=(k==-1?url:url.substring(0,k));
        File f = new File(filterConfig.getServletContext().getRealPath(file));
        if (f.exists() == false) {
          url = new String(s.getBytes("ISO-8859-1"), encoding);//以UTF-8发送URL 未被选中时
          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");
      }}
    上面的放到web.xml文件中