永发信息网

SpringMVC 拦截器路径怎么写

答案:2  悬赏:80  手机版
解决时间 2021-02-14 06:09
  • 提问者网友:活着好累
  • 2021-02-13 16:07
SpringMVC 拦截器路径怎么写
最佳答案
  • 五星知识达人网友:大漠
  • 2021-02-13 16:54
在tomcat作为服务器的网站开发中,我们一般把静态的css,js和image资源放到网站根目录下(与WEB-INF同级目录)。我在jsp引入js等静态资源的时候需要这样:
<script type="text/javascript" src="<%=request.getContextPath()%>/js/jquery.js"></script>这样写完全不会有错,但是看着总是不爽,若是用struts2的话,直接在写个BaseAction定一个变量冲到值栈中页面就很方便取到。但是现在用的是springMVC,同样也想向下面那个写怎么办呢?
<script type="text/javascript" src="${URL}/js/jquery.js"></script>1思路一


很简单暴力,在每个请求里面都放进去一URL变量,
String baseUrl=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort() + request.getContextPath();
request.setAttribute("URL", baseUrl);至于为什么是用上面的方式获取网站跟目录而不是直接用request.getContextPath(),笔者还没深入研究。目前证实上面方式获取是没有错的,只有request.getContextPath()有时候会获取不到,以后再深入研究下。
分析:不用多说,这样写比在页面上用request.getContextPath()还膈应人,毫无疑问pass掉。
思路二


如果你的网站结构用的采用iframe的方式,那么可以在iframe外层界面请求的接口里加上上面代码,然后在外层iframe界面定义个变量url先获取值,在子页面就可以直接用了。
父界面:var url = “${URL}”;
子界面引用就直接用parent.url;分析:算了,我也圆不下去了,且不说你的网站是不是所有都用了iframe,就算是,那些写也不友好,就当笔者是凑字数的吧,忽略此条。


思路三


其实就是思路一的升级版,思路一是在每个请求里面自己手动加的,那我们完全可以利用springMVC拦截器的方式,在每个请求里面放上一个网站根目录变量。下面直接贴代码了。


springMVC配置文件里面加上:
<!-- 拦截器 -->
    <mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/**"/>
            <bean class="com.jurlon.interceptor.SecurityInterceptor">
            </bean>
        </mvc:interceptor>
    </mvc:interceptors>新建一个拦截器类并获取网站根目录,然后将其放进request里面:
public class SecurityInterceptor implements HandlerInterceptor{
    @Override
    public void afterCompletion(HttpServletRequest arg0,
            HttpServletResponse arg1, Object arg2, Exception arg3)
            throws Exception {
        // TODO Auto-generated method stub
    }
    @Override
    public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1,
            Object arg2, ModelAndView arg3) throws Exception {
        // TODO Auto-generated method stub
    }
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
            Object o) throws Exception {
        String baseUrl =request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort() + request.getContextPath();
        request.setAttribute("URL", baseUrl);//网站根目录变量
        return true;
    }前端引用js:
<script type="text/javascript" src="${URL}/js/jquery.js"></script>1
全部回答
  • 1楼网友:北方的南先生
  • 2021-02-13 17:20
spring mvc 拦截器怎么拦截jsp页面
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯