在Struts2中,拦截器是核心部分。所以了解拦截器的执行过程以及对它的应用是非常重要的。在这里通过使用自定义拦截器的一个简单例子来剖析Struts2的拦截器,让大家更好地了解。
1、新建一个Action类,代码如下:
public class VerifyAction {
private String message;
……
public String addUI(){
this.message="addUI";
return "message";
}
public String execute() throws Exception{
this.message="execute";
return "message";
}
}
2、再新建一个类,这个类要实现Interceptor接口,代码如下:
public class PermissionInterceptor implements Interceptor {
@Override
public void destroy() { }
@Override
public void init() { }
@Override
public String intercept(ActionInvocation invocation) throws Exception {
// TODO Auto-generated method stub
Object user=ActionContext.getContext().getSession().get("user");
if(user!=null)
return invocation.invoke();
ActionContext.getContext().put("message", "你没有权限执行该操作");
return "message";
}
}
3、用户的登录与退出,代码如下:
user.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
request.getSession().setAttribute("user", "huhui");
%>
用户已经登录
quit.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
request.getSession().removeAttribute("user");
%>
用户已经退出登录
4、struts.xml文件的配置,代码如下:
<package name="base" extends="struts-default">
<global-results><!-- 全局视图 -->
<result name="message">/WEB-INF/page/message.jsp</result>
</global-results>
</package>
<package name="example" namespace="/huhui" extends="base">
<interceptors>
为这类添加拦截器
<interceptor name="permission" class="cn.huhui.Interceptor.PermissionInterceptor"></interceptor>
<interceptor-stack name="permissionStack">
建一个拦截器栈
默认拦截器
<interceptor-ref name="defaultStack"></interceptor-ref>
自定义拦截器
<interceptor-ref name="permission"></interceptor-ref>
</interceptor-stack>
</interceptors>
若直接在action里添加自定义拦截器,则会覆盖默认拦截器,故建个栈
<action name="huhui*" class="cn.huhui.action.VerifyAction" method="{1}">
<interceptor-ref name="permissionStack"></interceptor-ref>
</action>
</package>
在action里设置了name="huhui*"和method="{1}"是使用了通配符,通配符的使用这里简单说明一下:
此时若你访问的路径为:http://localhost:8080/one/test/hui/huhuiadd.action,则执行add()方法,若访问路径为:http://localhost:8080/one/test/hui/huhuidelete.action,则执行delete()方法
分享到:
相关推荐
本项目“Struts2_自定义拦截器_用户权限验证”将深入探讨如何在Eclipse开发环境中,利用Struts2框架自定义拦截器进行用户权限的验证,并处理各个Action之间的跳转。 首先,我们来看自定义拦截器的创建。在Struts2中...
Struts2_3500_my_interceptor这个文件可能包含了一个示例项目的源代码,你可以通过学习和分析其中的代码,更深入地理解如何在Struts2中创建和使用自定义拦截器。通过实际操作,你会发现自定义拦截器是Struts2框架中...
本示例将聚焦于如何在Struts2中实现一个自定义拦截器。 首先,我们需要了解拦截器在Struts2中的作用。拦截器是AOP(面向切面编程)的一个核心概念,它允许开发者在动作执行前后插入额外的逻辑,如日志记录、权限...
本文将深入探讨Struts2的内建自定义拦截器及其配置。 首先,让我们理解什么是拦截器。拦截器是基于AOP(面向切面编程)思想的,它们在Action调用前后执行,形成一个拦截器链。每个拦截器都可以执行特定的任务,并且...
在Struts2中,自定义拦截器是实现业务逻辑控制、数据验证、权限管理等功能的重要手段。下面将详细探讨如何在Struts2中实现自定义拦截器来完成权限拦截。 首先,我们需要了解Struts2拦截器的工作原理。拦截器是在...
自定义拦截器可以极大增强Struts2的功能,通过巧妙地组合和配置,可以实现灵活、高效的应用架构。学习并熟练掌握自定义拦截器的使用,对于提升Java Web开发能力是非常有帮助的。这篇博客文章可能详细讲解了以上步骤...
Struts2自定义拦截器的配置是Struts2框架中一...自定义拦截器是Struts2提供的一种强大机制,能够帮助开发者灵活地扩展和控制应用的行为。在实际项目中,可以根据需要创建多个拦截器和拦截器栈,以实现复杂的功能逻辑。
自定义拦截器可以扩展Struts2的功能,使我们的应用更加灵活和模块化。 首先,要创建一个自定义拦截器,我们需要定义一个新的Java类并实现`Interceptor`接口或继承`AbstractInterceptor`类。这个类需要覆盖`...
在深入探讨自定义拦截器之前,我们先理解一下Struts2拦截器的基本概念。 拦截器(Interceptor)是基于Java的动态代理机制实现的,它可以拦截用户的请求,对请求进行预处理,并且在Action执行后进行后处理。通过在...
在这个"struts2的自定义拦截器例子"中,我们将深入探讨如何创建和使用自定义拦截器。 首先,拦截器的本质是Java的面向切面编程(AOP)思想在Struts2中的体现。它们允许开发者在动作执行前后插入自定义的逻辑,例如...
Struts2是一个强大的Java web框架,它为开发者提供了一种优雅的方式来组织和构建MVC(模型-视图-控制器)应用程序。...通过查看和运行这些代码,开发者可以直观地学习如何在实际项目中应用自定义拦截器。
总之,自定义拦截器是增强Struts2应用功能和灵活性的重要手段。通过上述步骤,你可以根据需求创建自己的拦截器,并在配置文件中对其进行详细配置,以实现诸如权限验证、日志记录等功能。记得在实践中不断调试和优化...
自定义拦截器是Struts2框架中扩展功能的重要手段,让我们深入探讨如何在Struts2中实现自定义拦截器。 首先,创建一个Web项目是基础步骤,这可以通过IDE如Eclipse或IntelliJ IDEA来完成。确保你的项目包含了Struts2...
总之,自定义拦截器是Struts2框架的一大亮点,它极大地提高了代码的可维护性和复用性。理解并熟练掌握自定义拦截器的创建与应用,对于提升Java Web开发能力具有重要意义。在实践中不断探索和优化,你将能够构建出...
总结来说,自定义拦截器是Struts2框架灵活性和可扩展性的体现,它使得开发者能够按照业务需求定制行为,增强应用的功能。通过理解和熟练运用自定义拦截器,开发者可以更好地驾驭Struts2框架,构建高效、可维护的Java...
总结来说,防止重复提交的自定义拦截器在Struts2中起到了关键作用,通过生成和验证令牌,能够在不依赖Struts2标签的情况下,有效地避免了用户意外或恶意的重复提交,保证了应用的稳定性和数据的一致性。
接下来,我们需要在Struts2的配置文件(通常为struts.xml)中声明并配置这个自定义拦截器。这样,当Action被调用时,Struts2会自动应用这个拦截器。 ```xml <struts> ...