1、过滤器代码:

package com.self.filter;

import java.io.IOException;

import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;

public class ContextPathVariableFilter implements Filter {

    @Override
    public void destroy() {
        /**
         * Servlet容器在销毁过滤器实例前调用该方法,在该方法中释放Servlet过滤器占用的资源。
         */
        System.out.println("过滤路径销毁");   
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)
            throws IOException, ServletException {
        /**
         * 该方法完成实际的过滤操作,当客户端请求方法与过滤器设置匹配的URL时,Servlet容器将先调用过滤器的doFilter方法。
         * FilterChain用户访问后续过滤器
         */

        HttpServletRequest request = (HttpServletRequest)servletRequest;
        String ctx = request.getContextPath();
        request.setAttribute("ctx", ctx);
        filterChain.doFilter(servletRequest, servletResponse);

    }

    @Override
    public void init(FilterConfig arg0) throws ServletException {
        /**
         * web 应用程序启动时,web 服务器将创建Filter 的实例对象,并调用其init方法,
         * 读取web.xml配置,完成对象的初始化功能,从而为后续的用户请求作好拦截的准备工作
         * (filter对象只会创建一次,init方法也只会执行一次)。
         * 开发人员通过init方法的参数,可获得代表当前filter配置信息的FilterConfig对象。    
         */
        System.out.println("infos过滤路径初始化");
    }

}

2、web.xml设置

<!-- 路径过滤器 -->
  <filter>
  <filter-name>contextPathVariableFilter</filter-name>
  <filter-class>com.self.filter.ContextPathVariableFilter</filter-class>
  </filter>
  <filter-mapping>
  <filter-name>contextPathVariableFilter</filter-name>
  <url-pattern>/*</url-pattern>
  </filter-mapping>

3、jsp读取本地文件

<div id="NewsDetail">
        <img src="${ctx}/static/image/news/Logo.png" alt="新闻图片">
    </div>

Logo.png图片地址为:

webapp/static/image/news/Logo.png

4、javaScript部分使用路径

<script type="text/javascript">
    var ctx = "${ctx}";
    function searchWeather(){
        window.location.href = ctx+"/weather/getMap";
    }
</script>