我在做公司某个框架时有这么一个需求。每次调用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整合详解》 Direct Web Remoting (DWR) 是一个开源的Java库,它允许在JavaScript和Java之间进行实时的、安全的、跨域的通信,使得Web应用程序可以像桌面应用一样具有丰富的用户交互体验。DWR2.0...
标题 "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。这个项目可能是为了展示...
DWR2.0提供了远程调用服务,使得前端可以直接调用后端的Java方法,减少了服务器与客户端的交互成本。在增删改查的应用中,DWR可以用于实时更新数据显示,提供更流畅的用户体验。 **MySql5.0** 是一个流行的开源关系...
5. **在Action中调用服务**: 如果需要在Struts2.0的Action中使用DWR服务,可以将DWR的调用封装到Action中,然后通过Action返回的结果驱动页面更新。 6. **在JSP中使用DWR**: 使用生成的JavaScript接口,实现AJAX的...
DWR2.0是其第二个主要版本,引入了许多新特性和改进,以提升性能和易用性。 **DWR的主要特点:** 1. **自动处理AJAX请求**:DWR自动处理AJAX请求的生成和响应解析,开发者无需关心底层细节。 2. **安全防护**:DWR...
Struts2.0和DWR(Direct Web Remoting)是两个在Web开发中广泛使用的开源框架,它们分别在MVC(Model-View-Controller)架构和远程方法调用上发挥着重要作用。Struts2.0作为Java EE平台上的一个强大MVC框架,提供了...
将Struts2.0与DWR结合,可以创建出高效的、用户体验良好的分页应用。 **Struts2.0的核心概念:** 1. **Action类**:它是业务逻辑的载体,接收用户的请求并处理。 2. **配置文件**:`struts.xml`是Struts2的核心配置...
Struts2.0是一个基于MVC(Model-View-Controller)模式的Java Web框架,它继承了Struts1的优点并解决了其局限性,提供了更灵活的控制结构和强大的拦截器机制。Struts2的核心在于Action类,它负责处理用户请求并调用...
3. Struts 2.0拦截请求,将数据转发到对应的Action类。 4. Action类通过Spring管理的UserService进行验证,如查询数据库确认用户名和密码是否匹配。 5. 验证结果返回给Action,Action根据结果决定执行哪种逻辑,如...
标题中的“struts2.0 hibernate 3.2 spring 2.0(dwr jquery)所需文件包”提到了四个关键的技术栈组件,它们在Java Web开发中扮演着重要的角色。下面将分别介绍这些技术及其相关知识点: 1. **Struts 2.0**: ...
**DWR (Direct Web Remoting)** 是一种JavaScript到Java的远程调用技术,允许在浏览器端直接调用服务器端的Java方法,从而实现Ajax无刷新更新页面的效果。在用户注册和多级下拉联动功能中,DWR起到了关键作用,它...
Struts2、Webwork2 和 DWR 是三个在 Web 开发领域中至关重要的技术,尤其在构建企业级的 WEB2.0 应用程序时。接下来,我们将详细探讨这三个技术的核心概念、工作原理以及它们之间的关系。 **Struts2** 是一个基于 ...
7. **集成DWR**:将DWR库加入项目中,通常需要在Web应用的部署描述符(web.xml)中配置DWR拦截器,然后在服务器端创建可远程访问的类和方法,最后在客户端JavaScript中使用DWR生成的API。 8. **AJAX的安全性和兼容...
4. 创建并配置DWR的配置文件dwr.xml,指定允许客户端调用的服务器端方法。 5. 将所有相关库(如以上提到的jar文件)添加到项目的类路径中。 6. 编写Action、Service、DAO层的代码,实现业务逻辑。 7. 使用Struts2的...
Struts2.0借助DWR实现了更简单的AJAX调用。 #### JSON插件的应用 为了更好地支持AJAX请求,Struts2.0引入了一个名为JSON插件的功能,这使得开发者能够更轻松地处理JSON格式的数据。 ##### JSON插件特点 1. **...
`DwrServlet`处理所有以`/dwr/*`开头的URL,使得前端JavaScript可以直接调用后端Java方法。`debug`参数设置为`true`,意味着在开发阶段,DWR会开启调试模式,方便调试和问题排查。 整合这四个框架,通常的步骤是: ...
4. Direct Web Remoting (DWR):DWR允许JavaScript在浏览器端直接调用服务器端的Java方法,实现了Ajax无刷新的用户体验。在CRM系统中,DWR可以提升用户体验,比如实时更新客户信息,无需每次操作都刷新整个页面。...
DWR允许在浏览器端直接调用服务器端的Java方法,实现Ajax的双向通信。在SpringMVC项目中,首先需要在web.xml中配置DWR的ContextLoaderListener和Servlet。然后,定义RemoteJavaObjects(RJOs)并生成相应的...