配置拦截器

为了数据安全,有时候需要对用户的一些操作进行拦截,可以通过拦截器实现。过滤器一样有效。

配置spring_MVC.xml

<mvc:interceptors>
		<mvc:interceptor>
			<!-- 拦截所有mvc控制器 -->
			<mvc:mapping path="/**"/>
			<mvc:exclude-mapping path="/user/add.do" /> //不拦截 
			<bean class="com.LoginInterceptor"></bean>  //引入vo文件
		</mvc:interceptor>
	</mvc:interceptors>

***这里的exclue-mapping为不拦截配置,有时用户需要不登录进行某些操作。在这里配置比较方便,也可以下面的vo实例中配置不进行拦截的uri

LoginInterceptor.java文件:

public class LoginInterceptor implements HandlerInterceptor {
		 
		@Override
		public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
				throws Exception {
			// 执行完毕,返回前拦截		
		}
	 
		@Override
		public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
				throws Exception {
			// 在处理过程中,执行拦截		
		}
	 
		@Override
		public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object arg2) throws Exception {
			// 在拦截点执行前拦截,如果返回true则不执行拦截点后的操作(拦截成功)
			// 返回false则不执行拦截
			HttpSession session = request.getSession();
			String uri = request.getRequestURI(); // 获取登录的uri,这个是不进行拦截的
			//if(session.getAttribute("LOGIN_USER")!=null || uri.indexOf("system/login")!=-1) {// 说明登录成功 或者 执行登录功能
			if(uri.indexOf("user/login")>0){
				return true;
			}
			if(session.getAttribute("loginUser")!=null){
				// 登录成功不拦截
				return true;
			}
			// 拦截后进入登录页面
				
				request.getRequestDispatcher("/user/login.jsp").forward(request, response);  
				return false;
			}
		}

over.

猜你喜欢

转载自blog.csdn.net/qq_37333151/article/details/84847942
今日推荐