1、java监听器代码
package com.yihaodian.pis.util;
import java.util.Map;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
import com.yihaodian.pcs.web.action.LoginAction;
public class UserFilter extends AbstractInterceptor{
@Override
public String intercept(ActionInvocation actionInvocation) throws Exception {
Object action = actionInvocation.getAction(); //获得拦截器对象
//如果获得的拦截器为LoginAction,则不进行拦截
if(action instanceof LoginAction){
return actionInvocation.invoke();
}
//确认session中用户是否存在
Map session = actionInvocation.getInvocationContext().getSession();
Object login = (Object) session.get("admin");
//如果用户不为空,则退出拦截。否则跳入LOGIN
if(login != null){
System.out.println("拦截器:合法用户登录---");
return actionInvocation.invoke();
} else {
System.out.println("拦截器:用户未登录---");
return Action.LOGIN;
}
}
}
2、在web.xml里设置超时时长
<session-config>
<session-timeout> 120 </session-timeout >
</session-config>
3、在struts.xml里进行配置
<interceptors>
<interceptor name = "loginFilter" class = "com.yihaodian.pis.util.UserFilter"></interceptor>
<interceptor-stack name="userstack">
<interceptor-ref name="loginFilter"></interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="userstack"></default-interceptor-ref>
<global-results>
<result name="login" type="redirect">
/webpage/login/login.jsp
</result>
<result name="error">
/webpage/exception/global_err.jsp
</result>
</global-results>
<global-exception-mappings>
<exception-mapping result="error" exception="java.lang.Exception"></exception-mapping>
</global-exception-mappings>
注意先后顺序不能调换
分享到:
相关推荐
当用户登录后,会将一些关键信息(如用户ID)存储在Session对象中。为了判断用户是否已退出,我们需要监听Session结束的事件。在Global.asax文件中,我们可以添加以下代码: ```csharp protected void Session_End...
在Android系统中,AccessibilityService是一种特殊的服务,它允许应用程序获取并响应用户与系统的交互,包括触摸事件、键盘事件等。这种服务主要用于帮助残障人士,提供无障碍功能,但也可以被开发者用于实现特定的...
同时,为了提高用户体验,避免不必要的系统事件监听,建议只针对需要的功能进行精确的事件过滤。 总结来说,通过 AccessibilityService 实现系统按键监听功能主要涉及以下几个步骤: 1. 在 AndroidManifest.xml 中...
对于按键长按事件,我们通常需要监听ACTION_DOWN和ACTION_UP事件,同时设置一个超时时间来判断是否为长按。这个超时时间通常设置为300-1000毫秒,具体可以根据应用需求调整。下面是一个简单的例子: ```java public...
标题和描述中提到的"检测用户是否联网,若没有,跳转到网络设置页"是一个常见且实用的机制,它涉及到以下几个关键知识点: 1. **网络状态检测**:首先,我们需要检测用户的网络状态。这通常通过Android系统的...
会话超时可能导致用户丢失工作或访问权限,因此需要妥善处理。本篇文章将详细介绍如何在JSF中监测和处理session超时,特别是通过监听恢复视图阶段的`ViewExpiredException`异常。 首先,我们需要理解JSF的生命周期...
如果在定时器超时前没有接收到`ACTION_UP`事件,那么就可以判断为长按事件。 ### 五、实现代码示例 以下是一个简单的示例,展示了如何在`OnTouchListener`中同时处理这三种事件: ```java public class ...
开发者可以通过监听这一广播来建议用户清理存储空间或优化应用的存储使用。 #### 二十二、`Intent.ACTION_MEDIA_BAD_REMOVAL` - 未正确移除SD卡 当SD卡未经过正确移除就直接被取出时,系统会发送此广播。开发者...
综上所述,"判断网络是否可用,跳转到设置界面"是一个综合了网络状态检测、网络状态监听、异常处理、用户体验优化等多个技术点的实践过程。在实际开发中,这些知识点的掌握和应用对于提高软件的稳定性和用户体验至关...
- `sessionDestroyed()`方法在用户会话结束时触发,比如会话超时或用户手动退出,此时在线人数减1。 最后,`OnlineCounterServlet.java`处理HTTP GET请求,虽然在这个例子中没有显示具体实现,但通常它会读取并更新...
当用户登录后,服务器会创建一个Session,并将用户的登录信息存储在其中。然而,Session不能永久保持,它有默认的超时时间,超过这个时间如果没有接收到客户端的任何请求,Session就会被视为过期。在本文中,我们将...
为了实现这个功能,通常我们会利用BroadcastReceiver配合自定义的IntentFilter来监听ACTION_PACKAGE_REMOVED广播。 1. 创建BroadcastReceiver: 首先,我们需要创建一个继承自BroadcastReceiver的类,然后重写...
本文将深入探讨如何在Android平台上实现蓝牙的打开、设置为可见、查找设备、管理已绑定设备、等待连接、停止监听以及断开连接等关键步骤。 1. **蓝牙打开**: 在Android中,开发者需要首先获取到`BluetoothAdapter...
综上所述,这个示例展示了如何使用Spring、Struts2和ibatis构建一个基本的Web应用程序,特别是实现了用户登录的功能。通过对这些配置文件的理解,可以进一步扩展功能或者修改现有的配置以适应实际项目的需要。
1. Intent.ACTION_AIRPLANE_MODE_CHANGED:当用户关闭或打开飞行模式时,系统会发送该广播。应用程序可以监听这一事件来响应飞行模式的变化。 2. Intent.ACTION_BATTERY_CHANGED:该广播在电池的充电状态或电量发生...
在登录系统中,我们可以使用会话监听器来处理会话超时或用户注销的情况。 ```java import javax.servlet.*; import javax.servlet.http.*; import java.util.EventObject; public class SessionListener ...
2. **事件监听**:需要监听`onreadystatechange`或`onload`事件,以判断请求是否成功并获取服务器响应。源码中会有如何正确处理这些事件的示例。 3. **异步处理**:AJAX的核心特性就是异步,这意味着JavaScript可以...
《JUnit in Action中文版》是一本深入探讨Java单元测试框架JUnit的专业书籍,旨在帮助开发者熟练掌握使用JUnit进行软件测试的方法和技术。JUnit是Java领域最广泛使用的单元测试框架,它简化了编写、运行和分析测试...
在Android应用开发中,网络连接的检测和...综上所述,Android应用开发中判断网络连接涉及多个层面,包括网络状态的获取、监听、用户提示和设置引导等。理解并熟练运用这些知识点对于开发高质量的Android应用至关重要。
事件(Event)机制是JGroups的重要组成部分之一,它允许用户注册监听器(Listener)来处理特定类型的消息或事件。例如,当新成员加入或离开时,可以通过注册相应的监听器来响应这些变化。 ### 二、安装与配置 #### 2.1...