spring MVC拦截器01

spring MVC拦截
作用:身份校验,权限检查,防止非法访问.
场景:一个bbs系统,用户没有登录就无法发帖或者删除评论;
一个博客系统,没有登录就无法发表博文,无法增加分类,无法删除博文.

spring MVC 拦截实现分为2步
(1)编写拦截器类,必须继承org.springframework.web.servlet.HandlerInterceptor
核心方法:

public boolean preHandle(HttpServletRequest request,
            HttpServletResponse response, Object arg2) throws Exception {

在该方法中进行权限校验,说白了,就是检查是否已成功登录,核心代码:

@Override
    public boolean preHandle(HttpServletRequest request,
            HttpServletResponse response, Object arg2) throws Exception {
        response.setCharacterEncoding("UTF-8");
        HttpSession session = request.getSession(true);

        String loginFlag = (String) session
                .getAttribute(Constant2.SESSION_KEY_LOGINED_FLAG);
        if (loginFlag == null
                ||( !loginFlag.equalsIgnoreCase(Constant2.FLAG_LOGIN_SUCCESS))) {
            String path=request.getRequestURI();//"/demo_channel_terminal/news/list"
            System.out.println("您无权访问:"+path);
            String contextPath=request.getContextPath();

            request.setCharacterEncoding("UTF-8");
            response.setStatus(401);
            response.sendRedirect(contextPath);
            return false;
        }
        return true;
    }

(2)配置spring MVC配置文件
我的spring MVC配置文件名称叫spring2-servlet.xml
拦截器相关配置:

<mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/bbs/json_add_bbs"></mvc:mapping>
            <mvc:mapping path="/news/json_add_tips"></mvc:mapping>
            <bean class="com.web.controller.intercept.MemberInterceptor">
            </bean>
        </mvc:interceptor>
    </mvc:interceptors>


解释:当访问/bbs/json_add_bbs和/news/json_add_tips 时就会应用拦截器类com.web.controller.intercept.MemberInterceptor(自定义的)
访问其他路径时不会应用该拦截器!!!

(3)项目结构
项目采用maven 构建

注意:
preHandle方法中返回false,就会终止request过程,即不会执行action;

时间: 2024-09-17 04:46:43

spring MVC拦截器01的相关文章

Spring MVC拦截器实现分析

Spring MVC拦截器实现分析 一.Servlet Filter与Spring interceptor的执行顺序 Filter有顺序吗?我们怎么控制filter的执行顺序.通过Tomcat的代码分析,servlet在Filter执行完成后才调用,如有多个filter怎么控制执行顺序,首先会想到在web.xml配置某个参数,例如order之类的,但查找一下一番,servlet并没有这个参数.试试filter Mapping的配置的先后顺序,果然有效,原来filter的执行顺序就考filter

Spring MVC拦截器+注解方式实现防止表单重复提交

原理:在新建页面中Session保存token随机码,当保存时验证,通过后删除,当再次点击保存时由于服务器端的Session中已经不存在了,所有无法验证通过. 1.新建注解: ? /**  * <p>  * 防止重复提交注解,用于方法上<br/>  * 在新建页面方法上,设置needSaveToken()为true,此时拦截器会在Session中保存一个token,  * 同时需要在新建的页面中添加  * <input type="hidden" name

自定义 spring mvc 拦截器(近期项目需求实现)

          需求背景:特定文件夹下任何文件不经过登录,全部拦截强制跳转登录,并客户端禁止下载服务器定制文件夹文件           经过1天多时间的各种尝试,自定义式的强大拦截器实现了,废话不说了,直接贴代码啦.    demo:       1>   根目录下 index.html 内容:               <a href="html/index.html">index</a><br/>              <

spring mvc拦截器无法拦截DWZ的请求,求指点。。。

问题描述 拦截器是这样配置的: <mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/*" > </mvc:mapping>如果不配置或/*,将拦截所有的Controller <bean class="com.hangzhou.controller.interceptor.LoginInterceptor"></bean> </m

spring mvc 拦截器路径问题,只拦截固定后缀

拦截固定后缀  匹配url正确配置为 /**/*.htm     错误:**.htm    /**.htm   *.htm  <mvc:interceptors> <!-- <bean class="com.host.app.web.interceptor.AllInterceptor"/> --> <mvc:interceptor> <mvc:mapping path="/**/*.htm" /><

spring mvc拦截器页面不跳转问题

问题描述 就是不跳转到我指定的Controller上.请教大神.publicbooleanpreHandle(HttpServletRequestrequest,HttpServletResponseresponse,Objectobject)throwsException{StringrequestPath=ResourceUtil.getRequestPath(request);//用户访问的资源地址System.out.println(requestPath+"--->访问路径&qu

spring mvc-SpringMvc拦截器配置怎么配置拦截一个网站

问题描述 SpringMvc拦截器配置怎么配置拦截一个网站 我想拦截一个网址,比如页面的地址是www.XXXX.com.配置文件怎么配? 不拦截全部,只拦截单个网址的那种 解决方案 在controller层中来配置拦截的URL @RequestMapping("configSettRule") public class SettRuleController extends BaseController{ @Resource private SettRuleManager settRul

path-spring Mvc 拦截器拦截不成功

问题描述 spring Mvc 拦截器拦截不成功 拦截不成功,各位大神帮忙看下配置有没错.这样配置可不可以拦截 解决方案 你这样太麻烦了,用springMVC的统一拦截器,然后在controller层中加注解就行了 过程如下:http://blog.csdn.net/evankaka/article/details/45501811 解决方案二: spring MVC - Inteceptors(拦截器)spring MVC - Inteceptors(拦截器) 解决方案三: ,用springM

spring mvc拦截jsp文件,jsp未被解析

问题描述 spring mvc拦截jsp文件,jsp未被解析 采用spring mvc 对jsp文件进行拦截,在preHandle方法里面返回true,结果页面展示的是jsp的源码,而不是我要展示的内容,这是什么原因?如下所示: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib pre