您的位置:首页 > 编程语言 > Java开发

springMVC拦截器的使用

2014-07-17 16:48 316 查看
之前在网上找了好久,比如百度,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页面显示数据

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息