`

Struts2day04对Action的方法进行过滤拦截

 
阅读更多

1.写一个Action类 UserManagerAction extends ActionSupport

package com.jsu.struts2.action;

import com.opensymphony.xwork2.ActionSupport;

public class UserManagerAction extends ActionSupport {
	public String update() {
		System.out.println("update.....");
		return SUCCESS;
	}

	public String select() {
		System.out.println("select.....");
		return SUCCESS;
	}

	public String del() {
		System.out.println("del.....");
		return SUCCESS;
	}
	public String modify() {
		System.out.println("modify.....");
		return SUCCESS;
	}
}

 2.在拦截器中写一个类MethodDemoInterceptor extends MethodFilterInterceptor

package com.jsu.struts2.interceptor;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor;

public class MethodDemoInterceptor extends MethodFilterInterceptor {
	/*实现拦截逻辑*/
	@Override
	public String doIntercept(ActionInvocation invocation) throws Exception {
		ActionContext ctx = invocation.getInvocationContext();
		String flag =(String)ctx.getContext().getSession().get("flag");
		if("ok".equals(flag)){
			System.out.println("已经登录、、、");
			return invocation.invoke();
		}else{
			ctx.put("err_msg", "你还没有登录,请登录、、、");
			return "error";
		}
	}

}

 3.在错误页面error.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head> </head>
  <body>
    Error ${err_msg} <br>
  </body>
</html>

 4.在struts.xml文件中配置

<struts>
	<package name="loginDemo" namespace="/" extends="struts-default">
      <interceptor name="methodFilter" class="com.jsu.struts2.interceptor.MethodDemoInterceptor">                    </interceptor>
	<!-- 定义全局的Result -->
	<global-results>
		<result name="error">/error.jsp</result>
	</global-results>
		
    <action name="login" class="com.jsu.struts2.action.LoginAction">
		<interceptor-ref name="defaultStack"></interceptor-ref>
		<result>/index.jsp</result>
    </action>
    <action name="manager" class="com.jsu.struts2.action.UserManagerAction">
	<interceptor-ref name="methodFilter">
	<!-- 不需要拦截的方法 -->
	<param name="excludeMethods">select</param>
	<!-- 需要拦截的方法 -->
	param name="includeMethods">update,del,modify</param>
	</interceptor-ref>
	<result>/index.jsp</result>
    </action>
  </package>
</struts>

 5.在地址栏发请求

 1.http://localhost:8080/struts2_04/manager!select.action  没有被拦截,直接跳转到index.jsp

 2.http://localhost:8080/struts2_04/manager!update.action  或者modify 或者 del 都被拦截器拦截

分享到:
评论

相关推荐

    Struts2Day2

    `Struts2Day2_method`可能涉及到如何在Action类中定义和调用不同的业务处理方法。Struts2允许根据HTTP请求参数动态选择要执行的方法,这通过在Action类中定义多个以`execute`命名的重载方法实现。这种方法增强了...

    黑马程序员_struts2框架开发2016版讲义和笔记资料_day01_day02_day03_day04

    Day02的内容可能会深入到Struts2的配置文件,如struts.xml,它用于定义Action、结果类型和拦截器链。同时,Action的编写和执行流程也会被讲解,包括Action类的注解配置,以及如何通过ActionSupport类处理请求和响应...

    struts day01

    Struts 2 使用 XML 配置文件(通常命名为 `struts.xml` 或 `struts-default.xml`)来定义 Action、结果类型、拦截器栈等。配置文件可以指定 Action 的映射路径、接收的参数、执行的业务方法以及返回的结果视图。 **...

    struts2框架2016版资料day01

    2. **核心组件**:Struts2的核心组件包括Action类、配置文件(struts.xml)、拦截器(Interceptors)和结果(Results)。Action类是处理用户请求的业务逻辑,配置文件定义了Action与URL的映射关系,拦截器可以对请求...

    黑马Struts2视频(day1)

    - 使用Struts2的注解进行简化配置,例如`@Action`和`@Result`。 - 拦截器的使用,比如`params`拦截器用于自动将请求参数绑定到Action属性。 - 视图渲染,可能是通过JSP页面显示数据。 掌握Struts2框架对于Java Web...

    struts2day02

    1. **Dynamic Method Invocation (DMI)**:Struts2支持动态方法调用,意味着你可以通过URL直接调用Action类的某个方法,而无需在配置文件中显式定义每个方法的映射。 五、 strut2的插件和扩展性 1. **插件系统**:...

    黑马Struts2视频(day2)

    通过“黑马Struts2视频(day2)”,学习者可以进一步理解并掌握这些核心概念,同时通过实际操作加深对Struts2的理解,从而提高开发效率,创建出更加稳定和高效的Web应用。在day01视频中,通常会涵盖基础的环境搭建和...

    传智播客struts2.1视频教程_介绍struts2及struts2开发环境的搭建

    5. **配置web.xml**:在web.xml中引入Struts2的过滤器,配置过滤器的映射,并指定Struts2的配置文件位置。 6. **添加Struts2库**:将下载的Struts2库(包括struts2-core等依赖库)添加到项目的类路径中。 7. **...

    达内培训机密资料_struts2_day04(3)

    掌握级别的作业则更进一步,要求学生能够运用Struts2框架编写简单的Web应用程序,例如实现用户登录功能、表单验证等功能,这需要学生熟练掌握Struts2的核心配置文件(struts.xml)以及Action类的设计方法。...

    Struts2项目案例

    - **struts2day04.xml**:Struts2配置文件,定义了Action和Result的映射。 - **实体类(Entity class)**:如User、Product等,对应数据库中的表结构。 - **DAO(Data Access Object)**:与数据库交互的接口或类,...

    黑马Struts2视频(day3)

    2. **注解配置**:Struts2支持在Action类或方法上使用注解进行配置,减少XML配置的繁琐。 3. **动态方法调用**:允许通过URL直接调用Action方法,增强了路由的灵活性。 **Struts2的生命周期:** 1. **请求到达**:...

    黑马程序员_struts2框架2016版视频_struts2_day01笔记

    2. **解析请求**:过滤器解析请求,并根据配置文件(通常是`struts.xml`)确定应该调用哪个Action。 3. **执行Action**:Action执行具体的业务逻辑,并返回一个结果对象,指示视图应该如何呈现。 4. **返回视图**:...

    达内培训机密资料_struts2_day05(3)

    - **使用Action级验证**:在Action类中实现`validate()`方法来进行验证。 - **使用拦截器**:通过自定义拦截器进行验证。 #### 5. **文件上传** Struts2支持文件上传功能,主要步骤如下: - 在配置文件中启用文件...

    struts2课件第四天

    在"day04.txt"和"struts2_04、struts2_05"的文件中,可能包含了具体的案例分析和实践操作,比如创建Action类、编写配置文件、使用拦截器、处理表单提交等。通过这些实例,你可以更好地理解Struts2框架的使用方式,...

    达内培训机密资料_struts2_day04(2)

    拦截器(Interceptor)是Struts2框架中的一个核心组件,它可以在执行Action之前或之后进行一些预处理或后处理工作,如验证、记录日志等。拦截器的设计模式为AOP(面向切面编程),通过这种方式可以使得业务逻辑更加...

    超详细Struts2教程及源代码

    教程分为6个部分,从基础到深入,分别是day01、day02、day03、day04、day05和day06,这表明教程按照学习路径进行组织,帮助你在一周内掌握Struts2的关键知识。 首先,day01可能涵盖了Struts2的基本概念,包括MVC...

    struts2课件第二天

    - 使用Struts2的Mock测试框架进行单元测试,确保Action和拦截器的功能正确。 - 调试技巧和工具的使用也是学习的一部分。 以上是对"struts2课件第二天"内容的概括,具体内容会涉及更多的代码示例、实战练习以及对...

    黑马Struts2视频(day4)

    3. **Interceptor**:拦截器是Struts2的一个重要特性,它允许开发者在Action执行前后插入自定义的逻辑。拦截器可以用于日志记录、权限验证、数据校验等多种功能,增强了框架的灵活性。 4. **配置文件**:在Struts2...

    传智168期JavaEE struts2杜宏 day 29~day31笔记.pdf

    标题中的“传智168期JavaEE struts2杜宏 day 29~day31笔记”暗示了文档是一系列关于JavaEE技术栈中的Struts2框架的课程笔记,由杜宏教授,并且特别强调了是从29天到31天的学习内容。JavaEE(Java Platform, ...

Global site tag (gtag.js) - Google Analytics