【学习笔记】struts2框架自定义拦截器(检查用户登录为例)
来源:互联网 发布:友德医网络医院怎么样 编辑:程序博客网 时间:2024/06/15 18:48
struts2中的拦截器接口:<<interface>> Interceptor,方法有:void destroy(),void init(),String intercept(ActionInvocation invocation),其中init方法和destroy方法是用于初始化和销毁的,只会执行一次。所以拦截器时单例的。intercept方法是拦截器的核心方法,执行任何动作方法都会经过该方法。
Iterceptor接口又有一个抽象的实现类<<class>> AbstractInterceptor,自定义接口时,可以继承此类,再重写String intercept(ActionInvocation invocation)方法,但是不推荐。
<<class>> MethodFilterInterceptor又有一个子类:<<class>> MethodFilterInterceptor,其方法中有一个protected abstract String doIntercept(ActionInvocation invocation) 。我们自定义拦截器时
一般选择继承这个类,并重写doIntercept,下面上一段拦截器代码(以检查用户是否登录为例)
public class CheckLoginInterceptor extends MethodFilterInterceptor {public String doIntercept(ActionInvocation invocation) throws Exception {//1.获取HttpSessionHttpSession session = ServletActionContext.getRequest().getSession();//2.获取session域中的登录标记Object obj = session.getAttribute("user");//3.判断是否有登录标记if(obj == null){//用户没有登录return "input";}//4.用户登录了,放行String rtValue = invocation.invoke();return rtValue;}}
之后在struts的配置文件中,配置需要拦截哪些方法,和需要放过哪些方法。(下面代码中的配置方法只要给出不需要拦截的方法)
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""http://struts.apache.org/dtds/struts-2.3.dtd"><struts><constant name="struts.devMode" value="true" /><package name="p1" extends="struts-default"><interceptors><!-- 配置自定义拦截器,name=拦截器命,class=包名+类名--><interceptor name="checkLoginInterceptor" class="com.helloDev.web.interceptor.CheckLoginInterceptor" /> <interceptor-stack name="myDefaultStack"><!--自定义拦截器栈--><interceptor-ref name="defaultStack"></interceptor-ref><interceptor-ref name="checkLoginInterceptor"></interceptor-ref></interceptor-stack></interceptors> <!--修改struts2默认的拦截器栈为我们自定义的拦截器栈--> <default-interceptor-ref name="myDefaultStack"></default-interceptor-ref><global-results><!--设置出错回显页面--><result name="input">/login.jsp</result></global-results><action name="login" class="com.helloDev.web.action.Demo2Action" method="login"><interceptor-ref name="myDefaultStack"><!-- 在引用自定义拦截器栈的时候,为了给登录方法设置为不拦截,给指定的拦截器注入参数。方式就是:拦截器名称.属性名称 --><param name="checkLoginInterceptor.excludeMethods">login</param></interceptor-ref><result type="redirectAction">showMain</result></action><action name="showMain" class="com.helloDev.web.action.mainAction" ><result>/main.jsp</result></action><action name="showOther" class="com.helloDev.web.action.otherpageAction" ><result>/otherpage.jsp</result></action></package></struts>
阅读全文
0 0
- 【学习笔记】struts2框架自定义拦截器(检查用户登录为例)
- Struts2自定义拦截器,检查用户是否登录
- Struts2自定义拦截器,实现登录检查。
- struts2定义拦截器(Interceptor)检查用户是否已经登录
- Struts2拦截器—自定义拦截器验证用户登录
- J2EE系列之Struts2学习笔记(十三)--自定义拦截器示例之登录功能实现
- Struts2学习笔记之自定义拦截器
- Struts2学习笔记之自定义拦截器
- struts2拦截器--拦截未登录用户
- Struts2自定义拦截器:登录拦截
- struts2学习笔记(9)——自定义拦截器
- 【Struts2学习笔记(10)】自定义拦截器管理权限访问
- struts2学习笔记(5)---自定义拦截器
- Struts2自定义拦截器案例:验证用户是否登录拦截器
- Java学习笔记 Struts2拦截器实现权限登录
- struts2第十五讲学习笔记,登录拦截器的使用
- struts2 拦截器控制用户登录权限
- struts2用户登录拦截器测试
- 深度剖析八大经典排序算法—C++实现
- 内存以及/proc/介绍
- 面试题
- Mike and palindrome
- 2015NOIP普级组第一题--扫雷游戏(参考洛谷题解)
- 【学习笔记】struts2框架自定义拦截器(检查用户登录为例)
- 关于求无向图的连通分量的个数
- JVM内存区域划分
- 分享Maven项目依赖jar包
- 互联网舆情系统功能调研和详细点调研
- 前端需要掌握的基础技术
- Python读取大规模TXT数据
- Java基础-01运行的环境及变量的定义
- ORB_SLAM2初学习——RGBD