`
kyvin
  • 浏览: 32810 次
  • 性别: Icon_minigender_1
  • 来自: 福州
文章分类
社区版块
存档分类
最新评论

关于拦截器中对接口方法的使用的请教

阅读更多
    我们知道每个用户登录都会相应的产生一个session,在webwork中我们经常是把对象直接put该user对象进session.我们也可以通过这个session获取的该对象所有数据.
    但是在该session中存在的对象是put()时的对象,而不是与数据库同步更新的对象,即当我们update数据库中的数据该session中的数据会保持不变.我所遇到的问题就是由此产生的。
     我这两天发了一篇帖子关于单用户登录,具体算法与实践都已经实施完成。并且在单独的action中也测试过这个单用户登录的功能。可是当我准备把它写成拦截器时,因为上述的那个问题,致使拦截器中代码条件永远满足
	public String intercept(ActionInvocation invocation) throws Exception {

	        Customer customer =(Customer) invocation.getInvocationContext().getSession().get("customer");
	        
	        if(customer!=null){
				HttpServletRequest request = ServletActionContext.getRequest();
				HttpSession session = request.getSession();		
				String hashcode=session.getId();	        	
	        	if(hashcode!=null){

	        		String hashcodetemp=customer.getPointcode();
	        		if(hashcodetemp.equals(hashcode)){
	        	        ThreadLocalUser.set(customer);

	        	        String result = invocation.invoke();
	        	        ThreadLocalUser.set(null);
	        	        return result;
	        		}
	        		ActionContext.getContext().getSession().clear();
					ActionSupport action = (ActionSupport) invocation.getAction();
					action.addActionError("^o^你的账号已经在其它地方登录^o^");

		            return Action.LOGIN;
	        	}
				ActionSupport action = (ActionSupport) invocation.getAction();
	            return Action.LOGIN;	            
	        }
		return Action.LOGIN;
	}


这就是我的拦截器代码 最主要的错误出现在这里

	        		String hashcodetemp=customer.getPointcode();

由于上述session中的问题,致使这个条件基本上永远满足。
因为只有这个customer对象是从数据库中查阅的,那么才能使得这个条件有判断作用。我也尝试过使用接口中的方法通过这个customerid来获得数据库中该对象.可一直达不到满足情况。另外我在测试action中测试过这个算法,具体代码如下,(效果成功)

                    HttpServletRequest request=(HttpServletRequest)ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST);//获得requset                        
	        		HttpSession session = request.getSession();
	        		session.getId();
	        		if(!session.getId().equals(customer.getPointcode())){
		        		ActionContext.getContext().getSession().clear();		        		
	        			this.addActionMessage("^o^当前账户已经在其他地方登录,请重新登录^o^");
	        			return INPUT;
	        		}

希望有兴趣或有这种经验的一起来探讨解决下
分享到:
评论
1 楼 uffeng 2007-08-20  
我也遇到和你一样的问题!!
主要问题是 调用DAO (我是调用DAO)层的时候!数据库的链接实例没有打开!!
拦截器有参数!<param></param> 中间有一个@符号!我在找这是什么意思!

相关推荐

    springboot利用拦截器打印各个接口的响应时间.rar

    springboot利用拦截器打印各个接口的响应时间,快速统计各接口执行速度,方便接口优化。springboot利用拦截器打印各个接口的响应时间,快速统计各接口执行速度,方便接口优化。springboot利用拦截器打印各个接口的响应...

    SpringBoot拦截器原理解析及使用方法

    然后,要将拦截器加入到SpringBoot的配置中,需要使用WebMvcConfigurer接口的addInterceptors方法。具体配置代码如下: ```java import org.springframework.context.annotation.Configuration; import org.spring...

    理解拦截器用于在某个方法或字段被访

    在Struts 2中,拦截器的配置主要通过XML配置文件进行,例如在struts-default.xml中,可以定义全局拦截器堆栈,也可以在特定Action的配置中指定局部拦截器。通过这种方式,开发者可以根据需求自定义拦截器链,实现...

    struts2拦截器的使用方法

    ### Struts2拦截器的使用方法 #### 一、Struts2拦截器概述 Struts2框架中的拦截器(Interceptor)是一种重要的机制,用于在Action执行前后进行一系列处理,比如参数验证、数据预处理等。它能够帮助开发者更加灵活...

    CXF使用EndpointImpl发布WebService加入拦截器

    拦截器在CXF中的工作原理基于JAX-WS规范,可以分为两种类型:`InInterceptors`(入站拦截器)和`OutInterceptors`(出站拦截器)。入站拦截器处理从客户端到服务器的消息,而出站拦截器则处理从服务器返回到客户端的...

    拦截器解决中文乱码问题

    1. **创建拦截器类**:首先,我们需要创建一个实现了Spring MVC的HandlerInterceptor接口的拦截器类。在这个类中,我们需要重写`preHandle`、`postHandle`和`afterCompletion`这三个方法。 2. **配置拦截器**:在...

    请求拦截器和响应拦截器.docx

    在上面的代码中,我们可以看到请求拦截器的使用方法: ``` axios.interceptors.request.use(function (config) { // 在发送请求之前做些什么 // ... return config }, function (error) { // 对请求错误做些什么...

    java代理实现webservice接口拦截器功能

    本文根据java代理实现CXF拦截器异常时只能进入fault拦截器而不能继续向下执行的问题。 利用java代理让RMI具有拦截器的功能。

    mybatis拦截器实现通用权限字段添加的方法

    要使用MyBatis拦截器,我们需要在Spring配置文件中添加拦截器的配置。 ```xml &lt;value&gt;classpath*:xmlmapper/*.xml &lt;value&gt;classpath*:resources/xmlmapper/*.xml ``` 注意事项 在使用...

    axios封装,使用拦截器统一处理接口,超详细的教程(推荐).docx

    在request.js文件中,作者使用了axios.create方法创建了一个axios实例,并在其中添加了拦截器,以便统一处理接口。在api.js文件中,作者定义了一个getPersonInfo函数,该函数使用axios实例来调用接口。然后,在index...

    拦截器的使用示例Interceptor

    通过`addInterceptors(InterceptorRegistry registry)`方法添加自定义的拦截器,然后使用`registry.addInterceptor(interceptor)`方法将拦截器实例注册到注册表中。配置完成后,拦截器会按照添加的顺序依次执行。 5...

    防止SpringMVC拦截器拦截js等静态资源文件的解决方法

    在本文中,我们讨论了三种解决SpringMVC拦截器拦截静态资源文件的方法,并对这些方法的优劣进行了分析。 方案一是在拦截器中排除静态资源路径。在SpringMVC的配置文件中(通常是spring-mvc.xml),可以通过配置元素...

    CXF3.0+Spring3.2 自定义拦截器

    5. **自定义逻辑**:在自定义拦截器的`handleMessage`或`handleFault`方法中,你可以添加任何你需要的业务逻辑,例如验证请求头、修改消息内容或记录操作日志。 6. **调试和测试拦截器**:为了确保拦截器按预期工作...

    struts2中拦截器的使用

    在压缩包文件`Struts2_Interceptor`中,可能包含了关于Struts2拦截器使用的示例代码、解释文档或者教程,你可以进一步研究这些资源,以便更深入地理解并掌握Struts2拦截器的用法。学习如何创建自定义拦截器,以及...

    Castle AOP 系列(二):对接口方法调用的拦截(可运行源码)

    在这个系列的第二部分,我们将深入探讨如何使用 Castle AOP 对接口方法调用进行拦截。首先,我们需要理解 Castle AOP 的核心组件,即拦截器(Interceptor)和代理(Proxy)。拦截器是执行特定任务的类,而代理则是被...

    微信小程序请求拦截器 ,响应拦截器

    微信小程序请求拦截器 ,响应拦截器,结合微信小程序二次封装request 一起使用

    使用拦截器解决中文乱码

    ### 使用拦截器解决中文乱码 ...在Struts2框架中,使用自定义拦截器解决中文乱码问题是一种高效且实用的方法。通过本教程的学习,开发者能够快速掌握如何实现这一功能,从而提升Web应用程序的用户体验。

    SpringBoot拦截器实现对404和500等错误的拦截

    如果你希望在拦截器中处理404错误,你可以在`preHandle`或`postHandle`方法中检查请求路径,如果找不到对应的Controller方法,可以手动设置响应状态码为404并返回自定义的错误信息。 对于500错误,SpringBoot同样...

Global site tag (gtag.js) - Google Analytics