spring MVC简单拦截器

来源:互联网 发布:淘宝联盟 佣金 冻结 编辑:程序博客网 时间:2024/04/29 18:05
><!-- 声明改变request的拦截器 --><mvc:interceptors>    <mvc:interceptor>        <!-- 声明request的拦截器拦截的url -->         <mvc:mapping path="/origin/**/*"/>        <!-- 声明改变request的拦截器不拦截的url -->        <mvc:exclude-mapping path="/**/static/*"/>       <mvc:exclude-mapping path="/**/*.css"/>       <mvc:exclude-mapping path="/**/*.js"/>         <bean class="com.qxwljs.jxp.sdk.interceptor.ApiGrantValidateInterceptorOrigin"></bean>     </mvc:interceptor> </mvc:interceptors>

origin门户登陆权限验证拦截器java类

public class ApiGrantValidateInterceptorOrigin extends HandlerInterceptorAdapter {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)    throws Exception {    try {        String loginname = (String) request.getSession().getAttribute("LOGIN_SESSION");//获取session中当前登陆者账号        if(StringUtils.isNotBlank(loginname)){            return true;        }else if(request.getRequestURI().contains("/origin/login")){//获取request中的url            return true;        }else if(request.getRequestURI().contains("/origin/ajax")){//获取request中的url            return true;        }else{        //如果未登录通过request转发并带着request,response            request.getRequestDispatcher("/origin/login").forward(request, response);            return true;        }    } catch (Exception e) {        e.printStackTrace();        return false;    }}   

}

>

forward(转发)和redirect(重定向)的区别

  1. 从地址栏显示来说

    forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址.redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL.
  2. 从数据共享来说

    forward:转发页面和转发到的页面可以共享request里面的数据.redirect:不能共享数据.
  3. 从运用地方来说

    forward:一般用于用户登陆的时候,根据角色转发到相应的模块.redirect:一般用于用户注销登陆时返回主页面和跳转到其它的网站等.
  4. 从效率来说

    forward:高.redirect:低

在转发之前,在request中设置值
request.setAttribute(“root”, “123456”);

原创粉丝点击