struts2.0拦截器的用法:
配置文件:
<package name="default" extends="struts-default">
<interceptors>
<!-- 定义拦截器 loginInterceptor 继承default的package中action都可以引用该拦截器-->
<interceptor name="loginInterceptor" class="com.cetc.util.CheckLoginInterceptor" />
<!-- 定义拦截器堆栈 loginInterceptorStack -->
<interceptor-stack name="loginInterceptorStack">
<!-- 引用默认拦截器 defaultStack -->
<interceptor-ref name="defaultStack" />
<!-- 引用自定义拦截器 loginInterceptor -->
<interceptor-ref name="loginInterceptor" />
</interceptor-stack>
</interceptors>
<!-- 重定义默认拦截器堆栈 这里不要使用,若定义后凡是继承了default的package都回执行该拦截器-->
<!--<default-interceptor-ref name="loginInterceptorStack"/>-->
</package>
<package name="login" extends="default">
<action name="login" class="com.cetc.struts.action.t00hy.LoginAction" method="login">
<result name="input">/pages/home/login.jsp</result>
<result name="to_zbr">/pages/t02qy/util/index_zbr.jsp</result>
<result name="to_tbr">/pages/t02qy/util/index_tbr.jsp</result>
<result name="to_zj">/pages/t01zj/util/index_zj.jsp</result>
<result name="to_admin">/pages/home/index_admin.jsp</result>
<!-- 引用拦截器 loginInterceptorStack -->
<interceptor-ref name="loginInterceptorStack"></interceptor-ref>
</action>
<action name="qyLogin" class="com.cetc.struts.action.t00hy.LoginAction" method="qyLogin">
<result name="input">/pages/home/login.jsp</result>
<result name="to_zbr">/pages/t02qy/util/index_zbr.jsp</result>
<result name="to_tbr">/pages/t02qy/util/index_tbr.jsp</result>
<result name="to_zj">/pages/t01zj/util/index_zj.jsp</result>
<result name="to_admin">/pages/home/index_admin.jsp</result>
<!-- 引用拦截器 loginInterceptorStack -->
<interceptor-ref name="loginInterceptorStack"></interceptor-ref>
</action>
<action name="logout" class="com.cetc.struts.action.t00hy.LoginAction" method="logout">
<result name="success">/pages/home/login.jsp</result>
</action>
<action name="goLogin" class="com.cetc.struts.action.t00hy.LoginAction" method="goLogin">
<result name="success">/pages/home/login.jsp</result>
</action>
</package>
<package name="t00hy" namespace="/t00hy" extends="default">
<action name="updateTWzHyzh" class="com.cetc.struts.action.t00hy.TWzHyzhAction" method="updateTWzHyzh">
<result name="success" type="dispatcher">/pages/home/modifySuccess.jsp</result>
<result name="input" type="dispatcher">/pages/home/modify_password.jsp</result>
<!-- 引用拦截器 loginInterceptorStack -->
<interceptor-ref name="loginInterceptorStack"></interceptor-ref>
</action>
<action name="goModifyPassword" class="com.cetc.struts.action.t00hy.TWzHyzhAction" method="goModifyPassword">
<result name="success" type="dispatcher">/pages/home/modify_password.jsp</result>
<!-- 引用拦截器 loginInterceptorStack -->
<interceptor-ref name="loginInterceptorStack"></interceptor-ref>
</action>
</package>
抽象类:
import com.opensymphony.xwork2.interceptor.Interceptor;
import com.opensymphony.xwork2.ActionInvocation;
public abstract class AbstractInterceptor implements Interceptor {
public void destroy() {
// TODO Auto-generated method stub
System.out.println("LoginInterceptor.destroy()!");
}
public void init() {
// TODO Auto-generated method stub
System.out.println("LoginInterceptor.init()!");
}
public abstract String intercept(ActionInvocation invocation) throws Exception;
// TODO Auto-generated method stub
}
自定义拦截器:
import java.util.Map;
import com.cetc.struts.action.t00hy.LoginAction;
import com.opensymphony.xwork2.ActionInvocation;
public class CheckLoginInterceptor extends AbstractInterceptor {
private static final long serialVersionUID = -8624767071049356602L;
public static final String LOGIN_KEY = "LOGINED";
public static final String LOGIN_PAGE = "login";
public String intercept(ActionInvocation actionInvocation) throws Exception {
System.out.println("begin check login interceptor!");
// 对LoginAction不做该项拦截
Object action = actionInvocation.getAction();
if (action instanceof LoginAction) {
System.out.println("exit check login, because this is login action.");
return actionInvocation.invoke();
}
// 确认Session中是否存在LOGIN
Map session = actionInvocation.getInvocationContext().getSession();
String login = (String) session.get(LOGIN_KEY);
if (login != null && login.length() > 0) {
// 存在的情况下进行后续操作。
System.out.println("already login!");
return actionInvocation.invoke();
}else{
// 否则终止后续操作,返回LOGIN
System.out.println("no login, forward login page!");
return LOGIN_PAGE;
}
}
}
分享到:
相关推荐
总结来说,Struts2.0的拦截器提供了一种灵活的方式来扩展和控制应用程序的行为,而CRUD操作则通过Action类实现。理解这些核心概念对于有效地利用Struts2开发Web应用至关重要。通过熟练掌握这些知识,开发者可以更...
### Struts2.0拦截器详解 #### 一、拦截器概述 在Struts2框架中,拦截器(interceptor)是一种非常重要的机制,用于在执行Action前后进行一系列预处理或后处理的操作。拦截器可以用来执行如参数拦截、类型转换、输入...
下面我们将深入探讨Struts2.0拦截器的完整知识体系。 1. **拦截器的概念** 拦截器类似于AOP(面向切面编程)中的通知,它是在Action执行前或执行后进行拦截,并可以修改Action的执行流程。在Struts2中,拦截器是...
配置方面,Struts2.0使用XML文件(如struts.xml)来描述框架的行为,包括包、Action、拦截器、结果等元素。这些配置文件不仅能够清晰地描述框架结构,还提供了高度的可定制性,开发者可以根据项目需求调整框架的行为...
Struts 2.0 是一个基于MVC设计模式的Java Web框架,它的核心功能之一是拦截器(Interceptor),这是实现业务逻辑控制和增强应用程序功能的重要组件。在Struts 2中,拦截器扮演着中间人的角色,它们在Action调用前后...
Struts2.0 jar包是Java Web开发中的一个重要组件,它是Apache Struts框架的一个特定版本。Struts2是一个基于MVC(Model-View-Controller)设计模式的开源框架,用于构建可维护性高、结构清晰的Java应用。该框架极大...
五、Struts2.0拦截器 拦截器是Struts2.0实现业务逻辑的重要手段,如ValidationInterceptor进行数据校验,ExceptionMappingInterceptor处理异常,LoginInterceptor实现登录控制等。拦截器可以自由组合,形成拦截器栈...
2. **拦截器(Interceptor)**:拦截器是Struts2.0的一大特色,它可以实现通用的功能,如日志、权限检查等,无需在每个Action中重复编写。通过配置拦截器栈,可以灵活地控制请求的处理流程。 3. **OGNL(Object-...
本入门案例将带你逐步了解如何使用Struts2.0来创建一个简单的Web应用。 一、Struts2.0框架基础 Struts2.0是Struts1的升级版,它在功能和易用性上都有显著提升。框架的核心组件包括Action、Result、Interceptor等,...
Struts2.0框架整合了多种开源项目,如FreeMarker或JSP作为视图技术,OGNL(Object-Graph Navigation Language)作为表达式语言,以及拦截器机制来处理请求。框架的核心部分包括Action类,它是业务逻辑的载体;配置文件...
- 配置了所有的 Action、拦截器等组件。 - 用于映射 URL 到对应的 Action 类。 4. **模型(Model)** - 包含了应用的数据和业务逻辑。 - 通常使用 POJO 来表示。 #### 四、Struts 2.0 的工作流程 当用户通过...
拦截器是Struts 2.0的一个核心特性,它们在Action执行前后执行,可以用于日志记录、权限验证、数据校验等。开发者可以通过自定义拦截器扩展框架功能。 6. **OGNL(Object-Graph Navigation Language)** Struts ...
Struts2.0内置了多种拦截器,同时支持自定义拦截器,使得开发者可以根据应用需求定制不同的执行流程。 八、在Struts2.0中实现IoC 依赖注入(IoC)是现代软件架构的重要组成部分,Struts2.0通过其内部的IoC容器,...
在"struts2.0源代码"中,你可以看到框架的核心组件、拦截器、配置解析、动作执行等核心功能的实现。以下是一些主要的知识点: 1. **ActionInvocation**:这是Struts2的核心接口,代表了一个动作的执行流程。它负责...
5. **配置与拦截器**:讨论Struts2.0的核心配置文件,如struts-default.xml、struts-plugin.xml和自定义的struts.xml,以及拦截器的原理和使用,包括预定义的拦截器栈和自定义拦截器的实现。 6. **OGNL(Object-...
这个都市供求信息系统全面展示了Struts2.0的使用,包括模型-视图-控制器的设计、数据库交互、用户认证、国际化支持等多个方面,为学习和实践Struts2.0提供了一个良好的平台。通过分析和重构这个项目,开发者可以深化...
在开发Struts2.0项目时,开发者需要理解Action、拦截器(Interceptor)、结果(Result)和配置文件(如struts.xml)的工作原理。Action是业务逻辑的载体,拦截器则提供了在Action执行前后进行额外处理的能力,如登录...
这份文档通常会涵盖Action、拦截器(Interceptor)、结果(Result)和配置文件(struts.xml)等内容,是了解Struts2.0的第一步。此外,它可能还会讲解Struts2.0如何与Spring、Hibernate等其他框架集成,以实现更高效...
2. 拦截器:拦截器是Struts2.0的一大亮点,可以实现如日志记录、权限验证、事务管理等通用功能,提高了代码复用性。 3. 结果类型:Struts2.0支持多种结果类型,如Redirect、RedirectAction、Stream等,可以灵活地...