`
我想我是海
  • 浏览: 213656 次
社区版块
存档分类
最新评论

关于DWR与Servlet、安全

阅读更多
使用DWR做Remote,完全绕过传统的MVC框架,如Struts、Webwork,单用一个DWRServlet来做控制器。DWR向客户端 暴露了服务端的服务接口,很有可能有没有任何限制的情况下被客户端调用所暴露的接口。如果使用传统的MVC框架,可以很方便地解决很多问题诸如身份验证、 权限控制等。而DWR提供的功能是给客户端暴露服务接口。上面所涉及的问题却少有牵涉。不过,解决方案还是有的。其中之一就是使用AOP,自已实现一些拦 截功能,例如结合Spring,使用DWR的Spring整合功能,给客户端提供一个Spring的Bean,而这个Bean是经过代理的 (Proxy)。实际上已经保证了身份认证等动作完成了。而我们要多做的是,写一些Spring的Bean来作拦截器。再在原有的服务上再加上一些 AOP。当然,DWR对于安全的还是提供了些设施的,基于J2EE的安全策略之上。感觉不是十分良好,所以没用,也没深入研究。:P

        很多时候,在做身份验证及授权的时候可能会用到应用的环境,如ServletContext,Session等。那么在DWR中的服务或拦截器需要用到Session这些东西的时候,获取是一件很简单的事。通常有两个办法
        一、使用DWR的API。其实是一个静态的方法,极其不推荐。所以示例也就免了。
        二、让DWR自已注入需要的元素,这里讲的元素仅限于:

  • HttpServletRequest
  • HttpServletResponse
  • HttpSession
  • ServletContext
  • ServletConfig

        做法是在服务里定义方法的时候,把以上的元素作为参数。在方法体内直接使用即可。而不必担心它的来源,来源是DWR会自已根据参数的类型注入。在客户端调 用的时候不需要提供这个参数。ServletContext之类的东西作为ThreadLocal的变量保存起来的。简单的示例。

1、服务代码 

package net.jf.ajax.session;

import javax.servlet.http.HttpSession;

public class Store {
  public void setAttribute(String name,String value,HttpSession session){
    session.setAttribute(name,value);
  }
  public String getAttribute(String name,HttpSession session){
    return (String) session.getAttribute(name);
  }
}

2、spring配置文件

      <beans>
            <bean id="store" class="net.jf.ajax.session.Store">
            </bean>
        </beans>

3、dwr.xml 

<dwr>
  <allow>
    <create creator="spring" javascript="store">
        <param name="beanName" value="store"/>
    </create>
  </allow>
</dwr>

以 上的代码及配置文件可以达到目的:DWR与Spring结合,DWR直接使用Spring管理的Bean作为服务,当然,受Spring管理的Bean功 能一点都不减,复杂的如有着事务管理的Bean同样有用。 而且尽管是Spring管理的Bean,方法的参数中有Servlet相关的参数,DWR同样自动注入。

         现在去调试页面看看我们暴露的接口及效果如何!在调试页面找到store的服务,点击进去,可以见到暴露的方法有两个:

         一个是SetAttribute("","",AUTO),第三个参数表明自动注入,客户端只需要提供前两个参数即可。

        一个是GetAttribute(“”,AUTO),第二个参数表明自动注入,客户只需要提供一个名字参数取值即可。

        在测试页面提供的输入框中测试两个函数,SetAttribute填入name,jeff提交成功,在GetAttribute函数中填入name获得一个返回值,正是jeff。至此,尝试成功!
分享到:
评论
1 楼 accphc 2011-03-19  
一、使用DWR的API。其实是一个静态的方法,极其不推荐。所以示例也就免了。
为什么不推荐呢?!

相关推荐

    dwr结合servlet使用

    **使用DWR与Servlet的步骤**通常包括以下几个部分: 1. **引入DWR库**:在项目中添加DWR的jar包,并在web.xml中配置DWRServlet。 2. **创建Remote Java类**:这些类是服务器端暴露给JavaScript调用的,通常包含一些...

    DWR + Servlet 实现文件上传功能

    本文将深入探讨如何利用DWR与Servlet实现在Web应用程序中添加文件上传功能,并且特别关注如何实现进度条展示。 DWR是一种JavaScript库,它允许在浏览器和服务器之间进行双向通信,使得动态更新页面变得更加容易。...

    DWR与SPRING 集成

    博文链接提供的 `https://json20080301.iteye.com/blog/1892385` 可能是一个关于DWR与Spring集成的教程或经验分享,可以进一步深入学习。 总之,DWR与Spring的集成是提升Web应用交互体验的有效手段,通过合理的...

    dwr与spring集成的方式

    3. **增强安全性**:Spring框架提供了安全性和事务管理等功能,这些功能可以直接应用于DWR的业务组件中,提高系统的整体安全性。 4. **简化开发**:Spring和DWR的集成可以减少重复代码,简化开发流程。 #### 三、...

    springJdbc+springMVC和dwr以及servlet的整合

    `Spring Jdbc`、`Spring MVC`、`DWR`(Direct Web Remoting)和`Servlet`是四个关键的技术组件,它们各自扮演着不同的角色,共同为开发高质量的Web应用提供支持。下面将详细介绍这些技术及其整合方式。 首先,`...

    关于dwr的视频

    标题中的“关于dwr的视频”表明我们即将讨论的是DWR(Direct Web Remoting)在开发Web应用程序,特别是与AJAX交互方面的应用。DWR是一款开源Java库,它允许JavaScript和Java在Web浏览器与服务器之间进行实时通信,...

    DWR与界面开发 资料大全

    2. **签名与认证**:DWR可以通过签名来验证请求的来源,提高安全性。 六、DWR与界面开发实战 1. **创建动态表单**:利用DWR实现实时验证和动态加载数据。 2. **构建富客户端应用**:结合DWR和JavaScript库(如...

    Spring与DWR集成

    **Spring与DWR集成** Spring框架是Java领域中极为重要的轻量级应用框架,它提供了丰富的功能,包括依赖注入、AOP(面向切面编程)、事务管理等,用于简化企业级应用开发。Direct Web Remoting (DWR) 是一个开源...

    DWR中文文档DWR

    - **web.xml**:在Web应用的部署描述符中配置DWR的Servlet,如`dwr-servlet.xml`,设置过滤器等。 - **dwr.properties**:配置DWR的行为,如错误处理、缓存策略等。 - **XML配置**:可使用XML文件定义允许客户端...

    DWR简单测试例子

    DWR(Direct Web Remoting)是一种JavaScript库,它允许Web应用程序在客户端与服务器之间进行实时的、异步的通信,而无需使用XMLHttpRequest(Ajax)或其他插件。DWR简化了JavaScript与Java后端之间的交互,使开发者...

    dwr3.0搭建与讲解

    DWR (Direct Web Remoting) 是一个开源的Java库,它允许JavaScript在浏览器端与服务器端的Java对象进行交互,从而实现动态、实时的Web应用。在本教程中,我们将深入探讨DWR 3.0的搭建过程以及其基本概念。 ### 1. ...

    DWR与后台异步交互简单例子

    `dwr.jar`包含了DWR的所有核心类和库,而`servlet-api.jar`则提供了Servlet API,使得DWR可以与Web服务器进行交互。 **配置文件**在DWR中扮演着重要角色。有两个主要的配置文件:`dwr.xml`和`web.xml`。 1. **dwr....

    dwr与ssh框架整合源码

    6. **错误处理与安全性**:整合后的系统需要考虑错误处理机制,确保当DWR调用失败时,能够提供合适的反馈。此外,由于DWR直接暴露了服务器端方法,安全问题不容忽视,如防止跨站脚本攻击(XSS)和跨站请求伪造(CSRF...

    关于dwr及使用

    综上所述,"关于dwr及使用"的学习资料将涵盖DWR的基本概念、配置、使用方法、安全性和性能优化等方面,对于想要入门DWR或者提升DWR技能的开发者来说,是一份非常有价值的资源。通过研究"dwrhell"o项目,可以直观地...

    DWR2.0中文文档

    - **DWR与Servlet**:DWR可以通过Servlet上下文获取资源和信息,实现更紧密的集成。 - **DWR与Spring**:利用SpringCreator可以方便地将Spring管理的bean作为DWR服务提供。 - **DWR与JSF**:通过JSFCreator可以将JSF...

    DWR技术文档、快速使用DWR、java技术

    由于DWR是一个基于Servlet的框架,因此它可以方便地与任何支持Servlet的Web服务器集成,包括Tomcat。在Tomcat中,只需将DWR的Servlet配置到server.xml或web.xml中,设置相应的URL映射,即可启动DWR服务。 **总结** ...

    关于dwr简单设计总结

    - 虽然DWR提供了方便的服务器与客户端通信,但也要注意安全问题。默认情况下,DWR会对所有允许的Java方法进行白名单控制,只有在`dwr.xml`中明确列出的方法才能被JavaScript调用。因此,确保只暴露必要的方法,避免...

Global site tag (gtag.js) - Google Analytics