springMVC拦截器的使用

之前在网上找了好久,比如百度,Google找了好久没有,都没有找到一个完整的例子

下面,使用springmvc的注解模式做一个登录的拦截器,没有登录不能访问,登录成功了能进行访问做一个小例子

springmvc的框架就不搭建了

实现springmvc的拦截器有很多种方法,我这里是实现了HandlerInterceptor接口

一 创建拦截器LoginIntercepto

@Repository
public class LoginIntercepto implements HandlerInterceptor {

@Override
public void afterCompletion(HttpServletRequest request,
            HttpServletResponse response, Object arg2, Exception arg3)
            throws Exception {
    }

@Override
public void postHandle(HttpServletRequest request, HttpServletResponse

    response,Object arg2, ModelAndView arg3) throws Exception {
 
    }

preHandle预处理回调方法,通俗的说就是在调用某一请求之被执行
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse 

   response,Object arg2) throws Exception {   

            System.out.println("拦截器");

            //获得在登录的时候保存在session中的admin对象

            Object object=request.getSession().getAttribute("admin");
            System.out.println("用户名:"+object);

            //判断保存在sesion中的值是否为空(不为空返回true 为空返回false)

            if(object!=null&&!"".equals(object)){
             //true     表示进行执行,比喻说下一个拦截器或者什么...
             return true;    
           }else {

             //打印出错误信息

             request.setAttribute("ErrorMsg", "你还没用登录,请先登录!");

             //使用转发 跳到指定的页面

             request.getRequestDispatcher("../index.jsp").forward(request,

             response);

             //false表示执行流程中断 返回到自己指定的页面
             return false;
            } 
    }
}

二 创建一个Controller的类

@Controller

@RequestMapping("/All.do")//等会这就是拦截的地方

//BaseAction主要是获得session request对象的

//当没有登录的时候不能跳到all.jsp页面宝贝数据显示出来。当登录了就能显示该页面

//还能显示数据

public class AddAction extends BaseAction {

    @Autowired
    private IMerchantServlet merchantServlet;

   @RequestMapping(params = "method=All")

      public String selectAll(){
      List<Merchant> listMerchants=merchantServlet.getByname(null);
      super.getRequest().setAttribute("listMerchants", listMerchants);
      return "all";
    }

}


三 spring-servlet.xml里面的配置

<mvc:interceptors>  
          <mvc:interceptor>   
          <!-- 拦截显示数据的Controller-->

          //拦截指定的请求

          <mvc:mapping path="/All.do"/>

          //调用拦截器

          <bean class="com.bank.Interceptor.LoginIntercepto"></bean>
          </mvc:interceptor>

          //当如果有多个拦截器的时候 就什么多个

          <!--

          <mvc:interceptor> </mvc:interceptor>

         -->

</mvc:interceptors>

四 当直接访问

    http://localhost:8080/XY_Bank/All.do?method=All

    因为你还没有登录 所以就会被拦截器拦截 返回为false 转发到index.jsp页面

    当你登录了再访问那个地址,会跳到all.jsp页面显示数据

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值