【工具类】SpringMVC 拦截器用户登录

前言:Spring Web MVC 的处理器拦截器类似于Servlet 开发中的过滤器Filter,用于对处理器进行预处理和后处理。

1、拦截器的定义

 实现HandlerInterceptor接口

Public class HandlerInterceptor1 implements HandlerInterceptor{

	/**
	 * controller执行前调用此方法
	 * 返回true表示继续执行,返回false中止执行
	 * 这里可以加入登录校验、权限拦截等
	 */
	@Override
	Public boolean preHandle(HttpServletRequest request,
			HttpServletResponse response, Object handler) throws Exception {
		// TODO Auto-generated method stub
		Return false;
	}
	/**
	 * controller执行后但未返回视图前调用此方法
	 * 这里可在返回用户前对模型数据进行加工处理,比如这里加入公用信息以便页面显示
	 */
	@Override
	Public void postHandle(HttpServletRequest request,
			HttpServletResponse response, Object handler,
			ModelAndView modelAndView) throws Exception {
		// TODO Auto-generated method stub
		
	}
	/**
	 * controller执行后且视图返回后调用此方法
	 * 这里可得到执行controller时的异常信息
	 * 这里可记录操作日志,资源清理等
	 */
	@Override
	Public void afterCompletion(HttpServletRequest request,
			HttpServletResponse response, Object handler, Exception ex)
			throws Exception {
		// TODO Auto-generated method stub
		
	}

}

2、拦截器在的配置Springmvc.xml

	<!-- 配置拦截器 -->
	<mvc:interceptors>
		<!-- 多个拦截器的执行顺序等于springMvc.xml中的配置顺序 -->
<!-- 		<mvc:interceptor> -->
			<!-- 拦截请求的路径    要拦截所有必需配置成/** -->
<!-- 			<mvc:mapping path="/**"/> -->
			<!-- 指定拦截器的位置 -->
<!-- 			<bean class="cn.itheima.interceptor.Interceptor1"></bean> -->
<!-- 		</mvc:interceptor> -->
		
<!-- 		<mvc:interceptor> -->
			<!-- 拦截请求的路径    要拦截所有必需配置成/** -->
<!-- 			<mvc:mapping path="/**"/> -->
			<!-- 指定拦截器的位置 -->
<!-- 			<bean class="cn.itheima.interceptor.Interceptor2"></bean> -->
<!-- 		</mvc:interceptor> -->
		
		<mvc:interceptor>
			<!-- 拦截请求的路径    要拦截所有必需配置成/** -->
			<mvc:mapping path="/**"/>
			<!-- 指定拦截器的位置 -->
			<bean class="cn.itheima.interceptor.LoginInterceptor"></bean>
		</mvc:interceptor>
	</mvc:interceptors>

3、拦截器的应用,用户身份的拦截

3.1 Controller层

package cn.chuantao.controller;

import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@RequestMapping("/login")
@Controller
public class UserController {
	@RequestMapping("/login")
	public String login(){
		return "login";
	}
	@RequestMapping("/submit")
	public String submit(String username,String password,HttpServletRequest request){
		if(username!=null && username.trim()!=""){
			request.getSession().setAttribute("username", username);
			
		}
		return "redirect:/list.action";
	}
}

3.2 jsp 页面

<form action="${pageContext.request.contextPath }/login/submit.action" method="post">
<table>
	<tr><td>用户名:<input name="username" type="text"/></td></tr>
	<tr><td>密码:<input name="password" type="text"/></td></tr>
	<tr><td><input value="登录" type="submit"/></td></tr>
</table>
</form>

3.3 拦截器类

	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse arg1, Object arg2) throws Exception {

//		判断是否是login登录页面,若果是则放行
		if(request.getRequestURI().indexOf("login")!=-1){
			return true;
		}
		
//		判断session中是否含有对象,如果含有则放行
		if(request.getSession().getAttribute("username")!=null){
			return true;
		}
//		其余情况返回false
		
		return false;
	}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值