`
jeasony
  • 浏览: 200016 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

DWR2.0的调用前拦截

    博客分类:
  • ajax
阅读更多
我在做公司某个框架时有这么一个需求。每次调用dwr的方法前要检查用户是否已经登录,否则就不能执行并且退到首页。

当然了,做拦截器有很多方式,但经过研究发现DWR自带很多插件,其中就有一个调用处理的插件。具体做法如下。

在web.xml里的DWR配置中加入一个参数:
<init-param>
            
<param-name>
                org.directwebremoting.extend.Remoter
            
</param-name>
            
<param-value>com.xxx.base.framework.web.MyDWRRemoter</param-value>
        
</init-param>

然后自己创建这个实现类。
public class MyDWRRemoter extends DefaultRemoter
{

    
public Replies execute( Calls calls )
    
{
        HttpSession session 
= WebContextFactory.get().getSession();
        ISessionContainer sc 
= ( ISessionContainer ) session.getAttribute( ISessionContainer.SESSION_CONTAINER_KEY );

        
//session检查
        if ( sc == null || sc.getUserInfo() == null )
        
{
            logOut();
            
return super.execute( new Calls() );
        }

        
else
        
{
            IUserInfo userInfo 
= sc.getUserInfo();
            
if(!SecurityFactory.getInstance().isOnline( userInfo.getUserID(), session.getId() ))
            
{
                logOut();
                
return super.execute( new Calls() );
            }

        }

        
return super.execute( calls );
    }


    
private void logOut()
    
{
        WebContext wct 
= WebContextFactory.get();
        Util utilThis 
= new Util(wct.getScriptSession());
        utilThis.addScript( 
new ScriptBuffer("logOut()"));
    }

}

其中,检查用户是否登录,如果没有登录就返回一个空的super.execute( new Calls());, 不能返回null否则会报错。
检查通过就调用super.execute( calls );  其实calls里还能获得很多信息。

最后大家注意logOut方法,这里用到了DWR2.0新功能:DWR反向调用,就是DWR调用javascript,具体用法大家网上可以查到,需要配置的,我这里就不多说了。补充一下,addScript调用的是html里的function logOut().

这样的话,如果用户session超时,或被管理员踢掉,一旦他做任何dwr操作就会被强迫登出到首页了。
分享到:
评论

相关推荐

    DWR2.0 整合Spring2.0

    《DWR2.0与Spring2.0整合详解》 Direct Web Remoting (DWR) 是一个开源的Java库,它允许在JavaScript和Java之间进行实时的、安全的、跨域的通信,使得Web应用程序可以像桌面应用一样具有丰富的用户交互体验。DWR2.0...

    dwr2.0整合Struts1.3+hibernate3.1+spring2.5的项目

    标题 "dwr2.0整合Struts1.3+hibernate3.1+spring2.5的项目" 涉及的是一个经典的Java Web开发技术集成,这其中包括Direct Web Remoting (DWR) 2.0、Struts 1.3、Hibernate 3.1和Spring 2.5。这个项目可能是为了展示...

    struts1.2+ibatis+DWR2.0+MySql5.0增删改查的小例子

    DWR2.0提供了远程调用服务,使得前端可以直接调用后端的Java方法,减少了服务器与客户端的交互成本。在增删改查的应用中,DWR可以用于实时更新数据显示,提供更流畅的用户体验。 **MySql5.0** 是一个流行的开源关系...

    struts2.0与dwr开发实例

    5. **在Action中调用服务**: 如果需要在Struts2.0的Action中使用DWR服务,可以将DWR的调用封装到Action中,然后通过Action返回的结果驱动页面更新。 6. **在JSP中使用DWR**: 使用生成的JavaScript接口,实现AJAX的...

    关于dwr的api的中文官方文档

    DWR2.0是其第二个主要版本,引入了许多新特性和改进,以提升性能和易用性。 **DWR的主要特点:** 1. **自动处理AJAX请求**:DWR自动处理AJAX请求的生成和响应解析,开发者无需关心底层细节。 2. **安全防护**:DWR...

    Struts2.0+dwr的分页

    Struts2.0和DWR(Direct Web Remoting)是两个在Web开发中广泛使用的开源框架,它们分别在MVC(Model-View-Controller)架构和远程方法调用上发挥着重要作用。Struts2.0作为Java EE平台上的一个强大MVC框架,提供了...

    Struts2.0+dwr无刷新分页

    将Struts2.0与DWR结合,可以创建出高效的、用户体验良好的分页应用。 **Struts2.0的核心概念:** 1. **Action类**:它是业务逻辑的载体,接收用户的请求并处理。 2. **配置文件**:`struts.xml`是Struts2的核心配置...

    Struts2.0+dwr检测用户名

    Struts2.0是一个基于MVC(Model-View-Controller)模式的Java Web框架,它继承了Struts1的优点并解决了其局限性,提供了更灵活的控制结构和强大的拦截器机制。Struts2的核心在于Action类,它负责处理用户请求并调用...

    Spring2.5+Struts2.0+DWR完成拥护登陆

    3. Struts 2.0拦截请求,将数据转发到对应的Action类。 4. Action类通过Spring管理的UserService进行验证,如查询数据库确认用户名和密码是否匹配。 5. 验证结果返回给Action,Action根据结果决定执行哪种逻辑,如...

    struts2.0 hibernate 3.2 spring 2.0(dwr jquery)所需文件包

    标题中的“struts2.0 hibernate 3.2 spring 2.0(dwr jquery)所需文件包”提到了四个关键的技术栈组件,它们在Java Web开发中扮演着重要的角色。下面将分别介绍这些技术及其相关知识点: 1. **Struts 2.0**: ...

    Struts2 + spring + hibernate + dwr 完美整合代码

    **DWR (Direct Web Remoting)** 是一种JavaScript到Java的远程调用技术,允许在浏览器端直接调用服务器端的Java方法,从而实现Ajax无刷新更新页面的效果。在用户注册和多级下拉联动功能中,DWR起到了关键作用,它...

    Struts2-Webwork2-DWR

    Struts2、Webwork2 和 DWR 是三个在 Web 开发领域中至关重要的技术,尤其在构建企业级的 WEB2.0 应用程序时。接下来,我们将详细探讨这三个技术的核心概念、工作原理以及它们之间的关系。 **Struts2** 是一个基于 ...

    dwr.rar_ajax_ajax jar

    7. **集成DWR**:将DWR库加入项目中,通常需要在Web应用的部署描述符(web.xml)中配置DWR拦截器,然后在服务器端创建可远程访问的类和方法,最后在客户端JavaScript中使用DWR生成的API。 8. **AJAX的安全性和兼容...

    Struts2 + Spring + Hibernate + DWR 项目布署笔记

    4. 创建并配置DWR的配置文件dwr.xml,指定允许客户端调用的服务器端方法。 5. 将所有相关库(如以上提到的jar文件)添加到项目的类路径中。 6. 编写Action、Service、DAO层的代码,实现业务逻辑。 7. 使用Struts2的...

    Strut2.0 与AJAX(第一部分)

    Struts2.0借助DWR实现了更简单的AJAX调用。 #### JSON插件的应用 为了更好地支持AJAX请求,Struts2.0引入了一个名为JSON插件的功能,这使得开发者能够更轻松地处理JSON格式的数据。 ##### JSON插件特点 1. **...

    ssh2整合一个web项目

    `DwrServlet`处理所有以`/dwr/*`开头的URL,使得前端JavaScript可以直接调用后端Java方法。`debug`参数设置为`true`,意味着在开发阶段,DWR会开启调试模式,方便调试和问题排查。 整合这四个框架,通常的步骤是: ...

    创新客户关系管理系统.rar

    4. Direct Web Remoting (DWR):DWR允许JavaScript在浏览器端直接调用服务器端的Java方法,实现了Ajax无刷新的用户体验。在CRM系统中,DWR可以提升用户体验,比如实时更新客户信息,无需每次操作都刷新整个页面。...

    springMVC综合实例

    DWR允许在浏览器端直接调用服务器端的Java方法,实现Ajax的双向通信。在SpringMVC项目中,首先需要在web.xml中配置DWR的ContextLoaderListener和Servlet。然后,定义RemoteJavaObjects(RJOs)并生成相应的...

Global site tag (gtag.js) - Google Analytics