spring mvc登录拦截器

spring-intercept.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
	xmlns:mvc="http://www.springframework.org/schema/mvc"
	xsi:schemaLocation="
		http://www.springframework.org/schema/mvc 
		http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">

	<!-- 配置spring拦截器 -->
	<mvc:interceptors>
		<mvc:interceptor>
			<mvc:mapping path="/api/*"/>
			<bean class="com.xibo.uuline.web.app.intercept.ServerInfoInterceptor"/>
		</mvc:interceptor>
		
		 <!--一个拦截器多个拦截器的微站配置-->  
	    <mvc:interceptor>  
	    	<!-- 用户中心 -->
	        <mvc:mapping path="/weizhan/member/**" />   <!-- 这里配置微站拦截的/weizhan/member/ -->
	        <mvc:mapping path="/weizhan/orderConfirm.htm" />
	        
	        <bean class="com.xibo.uuline.web.app.intercept.WeizhanLoginInterceptor" />
	    </mvc:interceptor>
		
		<!--一个拦截器多个拦截器的网站配置-->  
	    <mvc:interceptor>  
	    	<!-- 用户中心 -->
	        <mvc:mapping path="/member/**" />
	        <!-- 点击立即预定拦截 -->
	        <mvc:mapping path="/saveOrder.htm" />    
	        <!-- 需排除拦截的地址 -->
			<mvc:exclude-mapping path="/member/registerShow.htm"/>
			<mvc:exclude-mapping path="/member/loginShow.htm"/>
			<mvc:exclude-mapping path="/member/registerDo.htm"/>
			<mvc:exclude-mapping path="/member/loginDo.htm"/>
			<mvc:exclude-mapping path="/member/getCodeDo.htm"/>
	        <bean class="com.xibo.uuline.web.app.intercept.WebLoginInterceptor" />
	    </mvc:interceptor>  
	    
	    
	   
	</mvc:interceptors>
	
</beans>
拦截器的写法

package com.xibo.uuline.web.app.intercept;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

import com.xibo.uuline.alipay.wap.StringUtil;
import com.xibo.uuline.commons.constant.UserConstant;
import com.xibo.uuline.commons.constant.ticketConstant;
import com.xibo.uuline.domain.user.UserBean;

public class WeizhanLoginInterceptor extends HandlerInterceptorAdapter {  
	private static Logger LOGGER = LoggerFactory.getLogger(WebLoginInterceptor.class);
	@Override  
    public void afterCompletion(HttpServletRequest request,  
            HttpServletResponse response, Object obj, Exception err)  
            throws Exception {  
		
    }
	
	@Override
    public  void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView model)throws Exception {
		//这里遇到的问题很多  1.没有正常过滤   2.request.getSession()为null  3.重定向报的错误java.lang.IllegalStateException at org.apache.catalina.connector.ResponseFacade.sendRedirect
		//一开始拦截写到这里 ,其实是错误的    因为他的执行顺序是preHandle——>controller——>postHandle——>afterCompletion
	}  
	
	@Override  
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response,Object handler) throws Exception {  
		if(request.getSession()!=null){
			UserBean user = (UserBean) request.getSession().getAttribute(UserConstant.WEIZHANLOGINUSER);
			String ticketId = request.getParameter("ticketId");
			if(!StringUtil.isBlank(ticketId)){
				//票的id
				request.getSession().setAttribute(ticketConstant.TICKETID, ticketId);
			}
			
			if(user==null   || StringUtil.isBlank(user.getUsername())){
				response.sendRedirect("/weizhan/wzLoginShow.htm"); 
				return false;
			}
			else{
				return super.preHandle(request, response, handler);
			}
		}
		else{
			LOGGER.info("网站登录拦截器request.getSession()为空");
		}
		return super.preHandle(request, response, handler);
    }
	
  
}  


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值