`
- 浏览:
14710 次
- 性别:
- 来自:
青岛
-
日志拦截器
要求:记录请求的IP、请求者、请求类名、方法名
1.struts.xml文件中配置拦截器
<struts>
<package name="package-default" extends="json-default" abstract="true">
<interceptors>
<!-- 登录拦截器-->
<interceptor name="loginInteception" class="org.cric.interceptor.LoginInterceptor" />
<!--日志拦截器-->
<interceptor name="loginfoInteception" class="org.cric.interceptor.LoginfoInterceptor" />
<!-- 定义一个拦截器栈 -->
<interceptor-stack name="myStack">
<!--拦截器-->
<interceptor-ref name="loginInteception">
<!--不需要拦截的请求 -->
<param name="excludeMethods">login</param>
</interceptor-ref>
<interceptor-ref name="loginfoInteception"/>
<!--默认拦截器-->
<interceptor-ref name="defaultStack"/>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="myStack" />
<global-results>
<result name="doLogin" type="redirect">/logincheck.jsp</result>
</global-results>
</package>
<include file="strutsXml/struts_*.xml"></include>
</struts>
2.拦截器类 扩展MethodFilterInterceptor,覆盖方法doIntercept
package org.cric.interceptor;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.apache.log4j.Logger;
import org.apache.struts2.ServletActionContext;
import org.cric.model.Employee;
import org.cric.model.Loginfo;
import org.cric.service.LogService;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor;
@SuppressWarnings("serial")
public class LoginfoInterceptor extends MethodFilterInterceptor{
private Loginfo log;
public Loginfo getLog() {return log;}
public void setLog(Loginfo log) {this.log = log;}
@Resource//依赖注入
private LogService logService;
private static String SESSIONKEY="adminSession";//设置session的key
static Logger logger=Logger.getLogger(LoginInterceptor.class);
HttpServletRequest request=ServletActionContext.getRequest();
@Override
protected String doIntercept(ActionInvocation invocation) throws Exception {
//请求IP
String employeeIp=request.getRemoteHost();
//请求的方法名
String actionName=invocation.getProxy().getActionName();
//请求的类以及包结构
String actionClass=invocation.getProxy().getClass().getName();
log.setLoginfoIp(employeeIp);
log.setLoginfoModule(actionClass);
log.setLoginfoRequest(actionName);
java.util.Map<String,Object>session=ActionContext.getContext().getSession();
Object object=session.get(SESSIONKEY);
//获取发起请求的员工名
if(object==null){//如果在没有登录的情况下 拦截的这个请求是登录请求 所以要从值栈 (Value Stack)中获取数据
String loginfoEmployee=(String)invocation.getStack().findValue("employee.employeeNickName");
log.setLoginfoEmployee(loginfoEmployee);
}else{//登录情况下的操作 直接从session中获得
Employee emp=(Employee)object;
log.setLoginfoEmployee(emp.getEmployeeNickName());
}
invocation.invoke();
logger.debug("进入日志拦截器");
logService.save(log);
return "doLogin";
}
}
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
在Struts2中,拦截器(Interceptors)扮演着核心角色,增强了框架的功能和灵活性。这篇文章将深入探讨Struts2拦截器的概念、工作原理以及如何在实际应用中使用它们。 **一、什么是Struts2拦截器** 拦截器是基于AOP...
在Struts2中,拦截器(Interceptor)是一个至关重要的概念,它允许开发者在动作执行前后插入自定义逻辑,比如权限检查、日志记录、性能监控等。本文将深入探讨如何使用Struts2实现拦截器,以及如何配置拦截器来实现...
2. **拦截器链**:在Struts2中,多个拦截器可以形成一个拦截器链,每个拦截器按照定义的顺序依次执行。如果所有拦截器都允许Action执行,那么Action的结果将被传递到下一个拦截器,直到整个链执行完毕。 ### 二、...
在Struts2框架中,拦截器扮演着至关重要的角色,它们是实现业务逻辑、验证、日志记录等功能的核心组件。下面将详细探讨Struts2拦截器的源码及其工作原理。 首先,理解拦截器的定义:拦截器是AOP(面向切面编程)的...
在Struts2中,拦截器(Interceptor)扮演着至关重要的角色,它允许开发者在动作执行前后插入自定义逻辑,如日志记录、权限验证等。在本案例中,我们将深入探讨如何使用Struts2拦截器实现登录权限验证,同时结合...
在Struts2中,拦截器(Interceptor)扮演着核心角色,它们允许开发者在Action执行前后插入自定义的逻辑,如日志、权限检查、事务管理等。现在我们将深入探讨Struts2的拦截器机制及其实例应用。 ### 一、Struts2拦截...
在Struts2中,拦截器(Interceptor)扮演着核心角色,它们允许开发者在动作执行前后插入自定义的逻辑,如日志、权限检查、数据验证等。本示例将探讨如何在Struts2中使用拦截器。 首先,我们需要理解Struts2拦截器的...
在这个“Struts2拦截器实现权限控制demo”中,我们将深入探讨如何利用拦截器来实现细粒度的用户权限管理。 首先,我们需要了解Struts2中的拦截器工作原理。拦截器是基于Java的动态代理模式实现的,它们按照配置的...
标题“struts2拦截器”指的是Struts2框架中的拦截器机制,这是一个关键的组件,可以让我们在不修改实际业务代码的情况下,实现对请求处理流程的扩展和定制。 描述中提到的“基于struts2的拦截器测试,实现了页面的...
在Struts2中,拦截器是基于Java的动态AOP(面向切面编程)实现的,它可以在Action调用前后插入额外的逻辑,比如日志记录、权限验证、事务管理等。拦截器通过配置文件或者注解与Action关联,形成一个拦截器栈,每个...
在Struts2框架中,拦截器主要用于对Action执行前后的过程进行干预,以便执行一些通用的功能,如验证用户输入、记录日志、事务管理等。 - **拦截器的核心功能**:Struts2拦截器可以动态地拦截发送到指定Action的请求...
标题中的“难经3:Struts2,拦截器拦不住Result?”揭示了这是一个关于Struts2框架中拦截器(Interceptor)与结果(Result)交互问题的讨论。在Struts2框架中,拦截器是实现业务逻辑和控制逻辑之间解耦的重要机制,而...
拦截器是Struts2框架的核心特性之一,它们扮演着处理请求、增强功能和实现业务逻辑的角色。在Struts2中,拦截器就像过滤器一样工作,通过链式调用在动作执行前后进行预处理和后处理。 首先,我们来理解一下拦截器的...
拦截器是Struts2框架的核心组件之一,它们在Action调用前后执行,提供了诸如日志记录、权限验证、数据校验等额外功能,极大地提高了代码的可复用性和可维护性。 在Struts2中,拦截器的使用主要基于两个方面:配置...
2. **作用**:拦截器可以用于日志记录、性能监控、事务管理、权限验证等多种场景。在用户权限登录的场景中,拦截器可以检查用户是否已经登录,如果没有登录,则阻止访问受保护的资源。 ### 二、创建拦截器 1. **...
总结来说,Struts2拦截器是框架的核心部分,它们提供了一种灵活的方式,以实现各种功能,如日志记录、性能监控、权限控制等,同时保持代码的整洁和模块化。通过对`98struts201`文件的深入研究,我们可以更好地掌握...
在Struts2中,拦截器扮演着中间件的角色,它在Action执行前后进行处理,可以进行如日志记录、权限检查、数据验证等操作,极大地提高了代码的复用性和可维护性。 首先,我们需要理解拦截器的工作原理。在Struts2框架...
在Struts2框架中,拦截器扮演着关键角色,它们提供了AOP(面向切面编程)的功能,使得开发者可以在不修改业务逻辑的情况下,对请求处理流程进行增强。本文将深入探讨Struts2的拦截器使用,结合实例和源码分析,帮助...