找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 109369|回复: 0

CV程序员,还好有Git仓库帮忙,不然就被强行“拦截”了 ...

[复制链接]

该用户从未签到

发表于 2020-10-7 04:00:23 | 显示全部楼层 |阅读模式

您需要 登录 才可以下载或查看,没有账号?立即注册

×
常在河边走,哪有不湿鞋,这不,开发多年的程序员一小支,因为偷懒,直接使用CV大法,国庆期间,指导亲戚家小朋友做课设的时候,让一个小小的拦截器迷了眼睛,看着大外甥迷离(怀疑)的眼神,我想,最蛋疼的莫过于这个时刻
他的课设中的问题需求很简单,就是希望在未登录状态时,不能访问其他页面,只能访问登录页
这个开发需求难吗?​我刚听到这个问题的时候,我大手一挥,小case。这还不简单,在该项目中添加拦截器不就轻轻松松实现了啊。
  首先新建一个interceptor拦截器。


                               
登录/注册后可看大图

package com.qust.shbz.interceptor;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.web.servlet.HandlerInterceptor;import org.springframework.web.servlet.ModelAndView;import com.qust.shbz.log.entry.LogUser;/*** 配置拦截器,拦截未登录用户* @author bws* @version 2020年10月4日* @since 1.0*/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则不执行拦截 if(LogUser.getTyshxym == null || LogUser.getTyshxym == "") { //登录失败,跳转到登录页 response.sendRedirect(request.getContextPath); return false; }else{ //登陆成功,不拦截 return true; } }}  在上面的拦截器代码中,LogUser.getTyshxym是自己要判断的用户名什么的,也可以放在session里。即登录之后,用户名放到session里。若session里面有用户名,则已登录,不需要拦截。若session里没有该用户名,则需要重定向到登录页。
  然后还需要在springmvc.xml配置文件里配置拦截器。


                               
登录/注册后可看大图

<!-- 配置拦截器 --> <mvc:interceptors> <mvc:interceptor> <!-- 拦截所有ywjb目录下面的页面 --> <mvc:mapping path="/ywjb/**"/> <!-- mvc:exclude-mapping是另外一种拦截,它可以在你后来的测试中对某个页面进行不拦截,这样就不用在 LoginInterceptor的preHandler方法里面获取不拦截的请求uri地址了(优选) --> <mvc:exclude-mapping path="/" /> <bean class="com.qust.shbz.interceptor.LoginInterceptor"></bean> </mvc:interceptor> </mvc:interceptors>  注意:<mvc:mapping path="/**"/>这里如果拦截所有资源的话,会把css等静态资源都拦截到,建议只拦截相应的html或者jsp页面。<mvc:exclude-mapping path="/" />这里是配置不需要拦截的地址。由于我的登录页是根目录,所以根目录不拦截。<bean class="com.qust.shbz.interceptor.LoginInterceptor"></bean>这个就是你第一步创建的拦截器了。
​难吗?实现了之后我只想说一句,星星你个星星,但是,真的,实现的时候我以为就是简简单单的手打了,最后还是请教了我的外援---Git仓库,也幸好,我之前有整理这些小的功能实现的习惯,​不然。。。要是一阵疯狂百度,那我想我的“光辉伟岸”的形象也就基本不存在了
也希望大家在平时的工作或者学习的过程中,如果不涉及公司机密的情况下,可以将一些小的Demo模块提取出来,作为自己的模板,天知道会在什么时候就能用得到
回复

使用道具 举报

网站地图|页面地图|文字地图|Archiver|手机版|小黑屋|找资源 |网站地图

GMT+8, 2024-9-28 06:53

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表