常在河边走,哪有不湿鞋,这不,开发多年的程序员一小支,因为偷懒,直接使用CV大法,国庆期间,指导亲戚家小朋友做课设的时候,让一个小小的拦截器迷了眼睛,看着大外甥迷离(怀疑)的眼神,我想,最蛋疼的莫过于这个时刻
他的课设中的问题需求很简单,就是希望在未登录状态时,不能访问其他页面,只能访问登录页。
这个开发需求难吗?我刚听到这个问题的时候,我大手一挥,小case。这还不简单,在该项目中添加拦截器不就轻轻松松实现了啊。
首先新建一个interceptor拦截器。
packagecom.qust.shbz.interceptor;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importorg.springframework.web.servlet.HandlerInterceptor;
importorg.springframework.web.servlet.ModelAndView;
importcom.qust.shbz.log.entry.LogUser;
/**
* 配置拦截器,拦截未登录用户
*@authorbws
*@version2020年10月4日
*@since1.0
*/
publicclassLoginInterceptorimplementsHandlerInterceptor{
@Override
publicvoidafterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
throwsException{
//执行完毕,返回前拦截
}
@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则不执行拦截
if(LogUser.getTyshxym() == null || LogUser.getTyshxym() == "") {
//登录失败,跳转到登录页
response.sendRedirect(request.getContextPath());
return false;
}else{
//登陆成功,不拦截
return true;
}
}
}
在上面的拦截器代码中,LogUser.getTyshxym()是自己要判断的用户名什么的,也可以放在session里。即登录之后,用户名放到session里。若session里面有用户名,则已登录,不需要拦截。若session里没有该用户名,则需要重定向到登录页。
然后还需要在springmvc.xml配置文件里配置拦截器。
<!-- 配置拦截器 -->
<!-- 拦截所有ywjb目录下面的页面 -->
<!-- mvc:exclude-mapping是另外一种拦截,它可以在你后来的测试中对某个页面进行不拦截,这样就不用在
LoginInterceptor的preHandler方法里面获取不拦截的请求uri地址了(优选) -->
注意:<mvc:mapping path="/**"/>这里如果拦截所有资源的话,会把css等静态资源都拦截到,建议只拦截相应的html或者jsp页面。<mvc:exclude-mapping path="/" />这里是配置不需要拦截的地址。由于我的登录页是根目录,所以根目录不拦截。<bean class="com.qust.shbz.interceptor.LoginInterceptor"></bean>这个就是你第一步创建的拦截器了。
难吗?实现了之后我只想说一句,星星你个星星,但是,真的,实现的时候我以为就是简简单单的手打了,最后还是请教了我的外援---Git仓库,也幸好,我之前有整理这些小的功能实现的习惯,不然。。。要是一阵疯狂百度,那我想我的“光辉伟岸”的形象也就基本不存在了
也希望大家在平时的工作或者学习的过程中,如果不涉及公司机密的情况下,可以将一些小的Demo模块提取出来,作为自己的模板,天知道会在什么时候就能用得到
—END—
你点的每个关注,我都认真当成了喜欢
关注公众号:Java架构师联盟,每日更新技术好文
网友评论