本文为菠萝大象原创,如要转载请注明出处。
通过之前的 Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解系列文章,我们已经成功将这三种框架整合到了一起, 这次大象将在此基础上用一个小实例来说明,怎么利用 Struts2 的拦截器特性实现登录验证,以及超时后的跳转问题。
大象在这里假设你已经弄清楚了Struts2拦截器的基本概念,可以进入实际运用了。那么我们在之前的基础上只需要做下小小的改变,就可以使用Struts2的拦截器机制实现登录的验证。
修改数据库
user表中增加password字段,将初始密码都设为123,因为是示例所以采用明码,实际开发中,当然不能这样做,需要进行加密处理。再将name改为username,其实name字段可以不用改名,我这样做是为了命名规范,请注意,如果字段改为usernameUser类中的对应属性也要进行相应变化(如果你加注释写法可以不用改),还有TestTestHibernateDao中的getName()都要改为getUsername()
修改index.jsp
hello.action改为login!welcome.action
增加登录类
web包下创建LoginAction类,在其中添加welcomelogin方法,前者为index.jsp的跳转方法,它将转向到login.jsp页面。而后者则用来处理登录事件,如果成功将进入到主页面,失败则返回到登录页面。最后面有源码下载,这里省略。
增加拦截器
要实现登录拦截的功能,最关键的就是要实现拦截类了,在common包下面再增加一个interceptor包,创建AuthorityInterceptor类,并继承MethodFilterInterceptor,为什么继承它呢?因为它是对方法进行拦截,而在这个应用中,我们是对绝大部分的方法进行拦截,而对个别例外的方法排除。
session中取得当前登录用户,如果存在,就继续执行后面的拦截器;否则,就跳转到登录页面。所以这样实现了代码后,还要在struts.xml中进行相应的设置。
增加拦截器配置
做好这一步之后,那么登录验证拦截器将会对除了welcomelogin之外的所有方法进行拦截了。另外我想说下,拦截器的实现还有一种注解的方式,它不需要实现拦截器类,只需要指定一个注解类型和一个拦截方法就可以了,具体的请自己去查相关资料。这里我没采取注解方式是因为它只能应用到方法级别,不能进行代码复用,如果有多个Action都需要执行拦截操作,那么就得把同样的注解方法复制到不同的Action中,这无疑是很糟糕的。而使用拦截器类就简单多了,只需要在配置文件中指定它,并引用它,就可以在任意的Action中生效,也没有侵入式代码,这就是常说的AOP切面,struts2的拦截器就是AOP的一个具体实现。
增加全局转向配置
还记得拦截器里面的return Action.LOGIN 这句吧,当程序执行完这一行后,就会到struts.xml文件中去找namelogin全局转向配置,因此这里我设置为一个jsp页面,而没有定义成/login!welcome.action就是因为如果按这样做了,那么转向后,登录页面将显示在iframe框架中,这肯定不是我们希望看到的。解决这个问题,网上有很多方法,我查了一下,再结合实际,其实没那么复杂,一句话就可以搞定。如果使用frameset这种做法也有效,大象同样测试过,只不过例子中的代码没有这样写而已。
增加jump.jsp
增加login.jsp
登录页面,输入用户名与密码,因为是例子,所以我没加验证码,在正式开发中应该加上。
增加login-index.jsp
这是登录成功后转向的页面,在这里,我用iframe框架来显示内容。
到这里,所有工作都已经完成,已经可以登录登出了,并且拦截器也可以正常工作,超时登出也没问题,大家下载例子运行看看吧!
 
本文为菠萝大象原创,如要转载请注明出处。

基于SSH2框架Struts2拦截器的登录验证实现 来自菠萝大象相关推荐

  1. 用struts2的拦截器实现登录验证,同时登录界面加上验证码

    1.验证码实现:AuthorityAction 1 package com.sram.action; 2 3 import java.awt.Color; 4 import java.awt.Font ...

  2. Vue项目使用拦截器和JWT验证 完整案例

    挺详细的一个案例项目,值得参考! 作者:YXi https://juejin.im/post/6844903959883218951) https://gitee.com/gitee_fanjunya ...

  3. 基于struts2拦截器实现用户操作日志记录

    2019独角兽企业重金招聘Python工程师标准>>> 这里基于struts2的拦截器来实现. 使用struts2拦截器拦截所有或者指定的请求,对用户操作过程中的:操作用户,操作时间 ...

  4. Struts2框架之拦截器

    1:拦截器类似web过滤器,在action执行之前或者执行之后去取一些操作 2:拦截器栈就是递归调用 strust2的工作流程: 客户端通过HttpServletRequest向Tomcat容器发送请 ...

  5. struts2 拦截器_Struts 2拦截器示例

    struts2 拦截器 Welcome to Struts 2 Interceptor Example. While working on Struts 2, most of the time you ...

  6. jsp/servlet过滤器和struts2拦截器的有什么区别

    jsp/servlet过滤器和struts2拦截器的有什么区别 542430725 | 浏览 3715 次  问题未开放回答  推荐于2016-11-14 01:43:29 最佳答案 过滤器,是在ja ...

  7. struts2 拦截器和过滤器理解

    学习Struts2时,发现有过滤器和拦截器,他们貌似都是一样的功能,但是为什么会有2个不同的名称呢?肯定是有区别的,所以打算自己整理一下. 过滤器,是在java web中,你传入的request,re ...

  8. struts2拦截器理论知识

    软件设计中DRY规则,即不要写重复的代码,这样可以大大减轻后期维护的工作量!但是问题来了,重复的代码是不可避免的,比如在用户发送请求之前先判断用户是否登录,怎么办呢?于是就把这些重复代码提取出来,封装 ...

  9. Struts2 拦截器(Interceptor )原理和配置

    Struts2 拦截器 拦截器在概念上与servlet过滤器或JDK代理类相同.拦截器允许横切功能,把action以及框架分开实现.你可以使用拦截器实现以下操作: 在调用action之前提供预处理逻辑 ...

最新文章

  1. pybind11回调函数返回指针
  2. BeautifulSoup库使用
  3. 【C++】 C++标准模板库(三) Map
  4. wmware下linux安装vmware tools步骤
  5. [转载] C++ 中的浮点代码优化
  6. 如何学习离散数学和在计算机科学中应用
  7. python抽签小程序
  8. NVIDIA Jetson Xavier NX载板 RTSO-6002使用TF(MicroSD)卡重新刷机
  9. 系统架构图 云架构案例
  10. 数据结构-六度空间(模拟六度分隔理论)
  11. 进军NFT,第三代公链GGC与NFT3.0技术平台BOBO、OKEx NFT深度联合
  12. MT6762/MT6765处理器参数比较/芯片资料介绍
  13. RGB888转RGB565
  14. win10系统安装到服务器失败怎么解决,windows10安装失败怎么办?解决win10安装失败的方法教程[多图]...
  15. uniapp获得经纬度和城市
  16. 【个人网站搭建】GitHub pages+hexo框架下为next主题添加分类及标签
  17. 一步步实现Android MQTT详细步骤,附工程文件
  18. Java中码点和代码单元
  19. 教师编制报名信息计算机等级填错了,教师资格证报名审核通过后发现自己资料填写错误怎么办?...
  20. 【AirTest】从入门到精通

热门文章

  1. 唐志德:AMD打造CPU与GPU强大融合性能
  2. 大佬们:小爱音响添加点灯科技里的灯,语音控制时提示“要操作的设备好像出问题了,等一会再试”这个怎么处理?
  3. 微信一键录音逆向分析
  4. linux网络数据包流程
  5. 1993年图灵奖--尤里斯·哈特马尼斯和理查德·斯特恩斯简介
  6. 用java搭建自己的http服务器
  7. 笔记本电脑点开都是计算机,笔记本有运行声但黑屏 笔记本电脑屏幕打不开只有声音怎么回事...
  8. Workspace的基本结构新增个负一屏
  9. mysql创建数据库和权限设置_mysql创建数据库和用户以及设置用户与权限
  10. 反重力:科幻中的“常客