><!-- 声明改变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 { @Override public 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(重定向)的区别
从地址栏显示来说
forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址. redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL.
从数据共享来说
forward:转发页面和转发到的页面可以共享request里面的数据. redirect:不能共享数据.
从运用地方来说
forward:一般用于用户登陆的时候,根据角色转发到相应的模块. redirect:一般用于用户注销登陆时返回主页面和跳转到其它的网站等.
从效率来说
forward:高. redirect:低
在转发之前,在request中设置值
request.setAttribute(“root”, “123456”);