SSM 拦截器的配置和具体实现

来源:互联网 发布:宿舍神器 知乎 编辑:程序博客网 时间:2024/06/05 04:28

Spring-MVC.xml配置

<!-- 拦截器 --><mvc:interceptors><!-- 多个拦截器,顺序执行 --><mvc:interceptor><!-- /**表示所有url包括子url路径 --><mvc:mapping path="/**"/><!-- 不拦截登录的请求 --><mvc:exclude-mapping path="/loginUser.do"/><bean class="com.jk.login.interceptor.LoginHandlerIntercepter"/></mvc:interceptor><!-- 可以继续写mvc interceptor双标签,执行多个拦截器 --></mvc:interceptors>

interceptor类的写法

package com.jk.login.interceptor;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.web.servlet.HandlerInterceptor;import org.springframework.web.servlet.ModelAndView;public class LoginHandlerIntercepter implements HandlerInterceptor {public void afterCompletion(HttpServletRequest request,HttpServletResponse response, Object arg2, Exception arg3)throws Exception {}public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1,Object arg2, ModelAndView arg3) throws Exception {}public boolean preHandle(HttpServletRequest request, HttpServletResponse arg1,Object arg2) throws Exception {       String requestURI = request.getRequestURI();       //准备跳转前,拦截到请求,先判断session中是否有值,即是用户名密码是否存在的指标         if(requestURI.indexOf("successLogin.do")>0){//requestURI.indexOf("successLogin.do")>0         //mapKey在loginUser方法中已经事先放入session了,这里取出判断,是否为空         //需要注意的是:model.addAttribute放入的数据,在request中get不到         Object attribute = request.getSession().getAttribute("mapKey");         if(attribute!=null){         return true;//非空说明数据库中存在对应帐号         }else{            //没有登陆,转向登陆界面           request.getRequestDispatcher("/login.jsp").forward(request,arg1);       return false;         }         }else{         request.getRequestDispatcher("/login.jsp").forward(request,arg1);     return false;         }}}
Controller层中,在登录时,将判断用户名是否存在的结果,放入了session中,在拦截器作用时,会get出session,根据是否有值判断是否拦截。

package com.jk.login.controller;import java.util.HashMap;import java.util.Map;import javax.servlet.http.HttpServletRequest;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.ResponseBody;import com.jk.login.entity.LoginUser;import com.jk.login.service.UserLoginService;@Controllerpublic class UserLoginController {@Autowiredprivate UserLoginService loginService;//登陆@RequestMapping("loginUser")@ResponseBodypublic Map<String,Object> loginUser(LoginUser lo,HttpServletRequest request){Map<String,Object> map = new HashMap<String, Object>();try {map = loginService.queryByUserId(lo,request);//放入sessionrequest.getSession().setAttribute("mapKey", map);Object attribute = request.getSession().getAttribute("mapKey");System.err.println(attribute.toString()+"█--------------------");} catch (Exception e) {e.printStackTrace();}return map;}}




原创粉丝点击