DWR深入理解

这里是一些必须理解的术语 - 参数会被converted,远程Bean会被created。所以如果你有一个叫A的bean,它有一个方法叫A.blah(B) 那么你需要一个A的creator和一个B的converter。


一:<allow>
allow段落里面定义的试DWR可以创建和转换的类。


二:Creators
dwr.xml文件中的create元素的结构如下:
<allow> <create creator="..." javascript="..." scope="..."> <param name="..." value="..."/> <auth method="..." role="..."/> <exclude method="..."/> <include method="..."/> </create> ...</allow> 这里的多数元素都是可选的 - 你真正必须知道的是指定一个creator和一个javascript名字。
creator属性 是必须的 - 它用来指定使用那种创造器。
默认情况下DWR1.1有8种创造器。它们是:
new: 用Java的new关键字创造对象。
none: 它不创建对象,看下面的原因。 (v1.1+)
scripted: 通过BSF使用脚本语言创建对象,例如BeanShell或Groovy。
spring: 通过Spring框架访问Bean。
jsf: 使用JSF的Bean。 (v1.1+)
struts: 使用Struts的FormBean。 (v1.1+)
pageflow: 访问Beehive或Weblogic的PageFlow。 (v1.1+)
如果你需要写自己的创造器,你必须在init部分注册它。
javascript属性 用于指定浏览器中这个被创造出来的对象的名字。你不能使用Javascript的关键字。
scope属性 非常类似servlet规范中的scope。它允许你指定这个bean在什么生命范围。选项有"application", "session", "request" 和"page"。这些值对于Servlet和JSP开发者来说应该相当熟悉了。
scope属性是可选的。默认是"page"。如果要使用"session"需要cookies。当前的DWR不支持ULR重写。
param元素 被用来指定创造器的其他参数,每种构造器各有不同。例如,"new"创造器需要知道要创建的对象类型是什么。每一个创造器的参数在各自的文档中能找到。请查看上面的链接。
include和exclude元素 允许创造器来限制类中方法的访问。一个创造器必须指定include列表或exclude列表之一。如果是include列表则暗示默认的访问策略是"拒绝";如果是exclude列表则暗示默认的访问策略是"允许"。
例如要拒绝防范除了setWibble()以外的所有方法,你应该把如下内容添加到dwr.xml中。
<create creator="new" javascript="Fred"> <param name="class" value="com.example.Fred"/> <include method="setWibble"/></create> 对于加入到create元素中的类的所有方法都是默认可见的。
auth元素 允许你指定一个J2EE的角色作为将来的访问控制检查:
<create creator="new" javascript="Fred"> <param name="class" value="com.example.Fred"/> <auth method="setWibble" role="admin"/></create>
--------------------------------------------------------------------------------
new创造器在DWR中已经默认声明了:<creator id="new" class="uk.ltd.getahead.dwr.create.NewCreator"/> 。你不需要在dwr.xml文件中添加这段话,它已经存在于DWR的内部dwr.xml文件中了。
这个创造器通过类默认的够早函数创造对象实例。用new创造器有一些好处:
安全:DWR创造的对象生存的事件越短,多次调用中间的值不一致的错误机会越少。
内存消耗低:如果你的站点用户量非常大,这个创造器可以减少VM的内存溢出。
你可以通过下面的方式使用new创造器来创造远程调用Bean:
<allow> <create creator="new" javascript="Blah"> <param name="class" value="java.util.Date"/> </create> ... </allow> 这些代码把 java.util.Date 映射成Javascript,并且命名为Blah,所以在Javascript中当你调用Blah.toString(reply) 那么一个新的 java.util.Date 就会通过默认的构造函数创造出来, 然后 toString() 方法被调用,然后结果数据返回给reply方法(在这个例子中date是字符串格式)。
none'创造器不创建任何对象 - 它会假设你不需要创建对象。这有可能是对的,有两个原因。
你可能在使用的scope不是"page"(看上面),并在在前面已经把这个对象创建到这个scope中了,这时你就不需要再创建对象了。
还有一种情况是要调用的方法是静态的,这时也不需要创建对象。DWR会在调用创建器之前先检查一下这个方法是不是静态的。
对于上诉两种情况,你仍然需要class参数,用来告诉DWR它是在操作的对象类型是什么。
scripted创造器在DWR中已经默认声明了:<creator id="script" class="uk.ltd.getahead.dwr.create.ScriptedCreator"/>
这个创造器用BSF来执行脚本得到Bean,例如:
<allow> ... <create creator="script" javascript="EmailValidator"> <param name="language" value="beanshell"/> <param name="script"> import org.apache.commons.validator.EmailValidator; return EmailValidator.getInstance(); </param> </create> ...</allow> script创造器有如下参数:
参数 DWR版本 描述
language 1.0 脚本语言,字符串,例如'beanshell'. (必需)
script 1.0 要执行的脚本。 (必需,除非scriptPath参数存在)
scriptPath 1.1 脚本文件路径。 (必需,除非script参数存在)
reloadable 1.1 是否检测脚本文件的改动,以重新加载 (可选, 默认true)
class 1.0 创造出对象的类型(可选). 如果没有DWR通过创造器得到类型。
需要了解的主题
要使用这个创造器,你需要把一些辅助库放到WEB-INF/lib文件夹下:BSF的jar包,你要用的脚本语言的jar包。
当一个类是用script创造出来的,并且scope是session或application,如果你的脚本改变,session中的类和 script中的类就不一致了。这样会出现错误。虽然web容器不用重启,但是用户需要先登出(或以某种方式清空session),然后再登录。
当clazz参数不为空,并且用来创造新实例,DWR简单的调用 class.newInstance() 方法。这种方法是没问题的,除非脚本正在用某个参数创建一个类,或者调用某个函数来配置这个类。不幸的是,每次请求都要重新运行script并造成上面的问题。
创造器
让DWR和Spring一起工作的步骤
确认你用的是最新版的DWR。Spring创造器已经有了变化,所以你最好检查一下DWR的最新版本。
确认你查看过开始指南中的内容。
确认你的Spring的Bean在DWR外面运行良好。
配置DWR和Spring一起工作。 (看下面)
查看演示页面: http://localhost:8080/[ YOUR-WEBAPP ]/dwr ,检查spring的Bean是否出现。
DWR对于Spring没有运行期依赖,所以如果你不使用Spring那么Spring的支持不会产生任何影响到。
The SpringCreator
这个创造器会查找spring的中配置的Bean,用Spring去创建它们。如果你已经在使用Spring,那么这个创造器会非常有用。
你可以通过下面的方式来创建远程调用的Bean:
<allow> ... <create creator="spring" javascript="Fred"> <param name="beanName" value="Shiela"/> </create> </allow> 寻找你的Spring配置
有三种方式寻找配置文件:
ContextLoaderListener
最简单的方式是使用org.springframework.web.context.ContextLoaderListener。你不必使用 所有的Spring-MVC功能,只需要这个Listener就够了,所以这是个不错的方案。你需要在WEB-INF/web.xml中做如下配置:
<context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/classes/beans.xml</param-value> </context-param> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> 我能找到的ContextLoaderListener的最好的文档就是javadoc。如果你知道还有更好的文档,请告知我。
Rob Sanheim 指出还有一个能深入了解ContextLoaderListener的文档。
使用location*参数
如果你要在dwr.xml中指定使用哪些bean,你可以使用location*参数。你可以指定任意多个文件,只要参数以location开始 并且唯一即可。例如:location-1, location-2。这些location被用做Spring的ClassPathXmlApplicationContext的参数:
<allow> ... <create creator="spring" javascript="Fred"> <param name="beanName" value="Shiela"/> <param name="location" value="beans.xml"/> </create> </allow> 直接设置BeanFactory
SpringCreator有一个静态方法 setOverrideBeanFactory(BeanFactory) 用来通过编程的方式直接设置BeanFactory。
配置DWR和Spring
Bram Smeets写了一个有意思的blog,教你配置DWR使用beans.xml代替WEB-INF/web.xml。
我也对于如何在beans.xml中指定dwr.xml很感兴趣,尽管这看上去有些Spring传染病的感觉。有人知道如何实现吗?请加入邮件列表并告诉大家。

--------------------------------------------------------------------------------


三:Converters
我们必须保证所有的参数都可以被转换。JDK中的多数类型已经有转换器了,但是你需要给DWR转换你的代码的权利。一般来说JavaBean的参 数需要一个<convert ...>定义。默认情况下,如下类型不需要定义就可以转换:所有的原生类型 boolean,int,double, 等等
原生类型的对象类型 Boolean,Integer,等等
java.lang.String
java.util.Date 和SQL中的Date
以上类型组成的数组
以上类型的集合类型 (Lists, Sets, Maps, Iterators, 等)
从DOM, XOM, JDOM 和 DOM4J中的DOM对象 (类似 Element 和 Document)
基础的转换器
原生类型,String,像BigDecimal这样的简单对象的转换器已经有了。你不需要在dwr.xml中<allow>部分的<convert>中定义。它们默认支持。
默认支持的类型包括: boolean, byte, short, int, long, float, double, char, java.lang.Boolean, java.lang.Byte, java.lang.Short, java.lang.Integer, java.lang.Long, java.lang.Float, java.lang.Double, java.lang.Character, java.math.BigInteger, java.math.BigDecimal 和 java.lang.String
Date转换器
Date转换器负责在Javascript的Date类型与Java中的Date类型(java.util.Date, java.sql.Date, java.sql.Times or java.sql.Timestamp)之间进行转换。同基础的转换器一样,DateConverter默认是支持的。
如果你有一个Javascript的字符串 (例如"01 Jan 2010") ,你想把它转换成Java的Date类型有两个办法:在javascript中用Date.parse()把它解析成Date类型,然后用DWR的 DateConverter传递给服务器;或者把它作为字符串传递给Server,再用Java中的SimpleDateFormat(或者类似的)来解 析。


四:<init>
可选的init部分用来声明创造bean的类和转换bean的类。多数情况下你不需要用到他们。如果你需要定义一个新的Creator [JavaDoc] 和 Converter [JavaDoc] ,那么你就需要在这里定义他们。但是建议你现检查一下DWR是不是已经支持了。
在init部分里有了定义只是告诉DWR这些扩展类的存在,给出了如何使用的信息。这时他们还没有被使用。这中方式很像Java中的import 语句。多数类需要在使用前先import一下,但是只有import语句并不表明这个类已经被使用了。每一个creator和converter都用id 属性,以便后面使用。
五:多个dwr.xml文件
可以有多个dwr.xml文件(详细信息见web.xml文档)。每个文件中的定义会被加在一起。DWR用这个功能来加载基础配置文件。我们可以看看标准被配置文件来了解dwr.xml的内容。



Bean Converter

<convert converter="bean" match="your.full.package.BeanName"/>

指定属性转换只有针对bean才有效

<convert converter="bean" match="com.example.Fred"/>
  <param name="exclude" value="property1, property2"/>
</convert>

授权访问方式

<convert converter="bean" match="com.example.Fred"/>
  <param name="include" value="property1, property2"/>
</convert>

Maps和Collections converter

<convert converter="collection" match="java.util.Collection"/>
<convert converter="map" match="java.util.Map"/>

creator

Creator    Parameter    User   
new    class    类的全名称(包括包路径)   
scripted    language    BSF框架支持的脚本语言名称(BSF为apache项目)   
scripted    script    返回远程对象的脚本,脚本可以指定一些属性,多数情况下一般只设置param节点配置.属性很少设置.   
spring    Location*    任何以location开头的参数,每个参数都是指定一个spring的配置文件,在参数没有设置的情况下DWR会去读取spring的全局的配置文件.   
spring    beanName    从配置文件中读取的bean的名称   
           
           
           
fan访问权限           
           
如果要设置除了setWibble方法之外的所有方法都不可访问可以采用下面的设置.
<create creator="new" javascript="Fred">
  <param name="class" value="com.example.Fred"/>
  <exclude method="setWibble"/>
</create>
如果采用j2ee访问角色控制的模式
<create creator="new" javascript="Fred">
  <param name="class" value="com.example.Fred"/>
  <auth method="setWibble" role="admin"/>
</create>

DWR的引擎文件,他承担着把后台自动生成的javascript接口与前台调用之间的衔接责任

<script type='text/javascript'
    src='/[YOUR-WEB-APP]/dwr/engine.js'>
</script>

Java组件的编写和发布以及客户端引用

Java组件必须是一个具体类(因为接口、抽象类反射机制无法实例化)
实体类必须遵循Java Bean规范即实现Getter和Setter
配置文件中Allow部分的Create元素的JavaScript属性的值要唯一
如果存在Java Bean需要转换则要配置Allow部分的Convert元素
客户端引用业务组件要以dwr/interface/xxx.js的路径引用JS文件

DWR前台引擎(Engine.js)的主要职责:

截取每个后台组件的请求实现客户端的统一入口
将用于组件调用的JS参数对象重新包装组合
检测客户端浏览器的环境并选择最佳的数据提交方案
处理后台执行结果并通过执行回调函数通知客户

后台控制器(DWRServet)的主要职责

装载Servlet时初始化DWR配置参数
实现后台业务组件调用的服务器端统一入口
分发各种不同类型的请求 JS文件请求 业务调用请求等
输出组件执行结果(JavaScript语句)到客户端浏览器

业务组件执行器的主要职责

根据配置文件的参数确定后台组件的访问规则和生命周期
拆包前台传入的参数 包装组件执行结果
按参数类型匹配数据类型转换器
采用反射机制执行业务组件方法处理客户端请求
处理与其他系统的接口和协作 如:Spring Hibernate等

dwr.xml的业务组件发布和调用规则配置部分Allow

Create配置元素详细说明:
属性:
Creator 
配置业务组件的创建类型。主要有四种:Spring、New、 none 、Scripts。
JavaScript
前台页面javascript引用此组件的名称。名称需要唯一。
scope
组件的作用范围或则叫做生命周期。这个和Servlet的生命周期的作用是 一样的。共Session、request、application、page四个选项。
子节点:
Param 
配置业务组件的创建参数。Name属性设置名称,value属性设置业务组件的具体路径(类全名称)。
Include
授权方式保护业务组件方法的可见性。属性method可以访问的方法名称。如果没有配置则默认为所有方法都可以访问。
exclude
排除方式保护业务组件方法的可见性。属性method设置不可以访问的方法名称。除此之外的都可以访问。如果有需要控制业务组件方法的访问权限时建议采用这种方式。
Auth
采用EJB的角色访问控制方式。Method属性设置可以访问的方法名称,role属性设置访问角色。

Convert配置元素详细说明:

属性:
converter 
配置数据类型的转换器。一般是设置bean转换器,因为基本类型的转换器DWR默认设置。
match
设置要使用此转换器的java实体对象。如:
<convert converter="bean" match="demo.entity.*"/>
子节点:
Param对象属性的转换规则,name属性设置规则有include和exclude选项,作用和组件方法控制的一样。Value属性设置实体对象的属性。默认是所有属性都进行转换。

dwr.xml的业务组件方法签名配置部分Signatures

Signatures是用来配置Java Bean数据类型转换时遇到不能确定转换类型的情况。如:
Bean.setList(List a)方法,DWR设置集合a的时候就无法确定a这个集合里需要填充哪种数据类型。所以针对有输入集合对象的情况就需额外设置Signatures配置节点来设置。这个节点的配置如下:
<signatures>
  <![CDATA[
    import java.util.List;
    import demo.entity.*;
    import demo.busi.*;
   
    Customer.setAccounts(List<Account> accounts);
    DemoBusinessObject.getListSet(List<Contact> inList);
   ]]>
</signatures>

Signatures主要有两个部分:


Import部分 和java文件的作用一样


另一部分对方法的签名进行范型的设定。返回结果的集合元素类型不需要设置,因为可以在运行时确定。


JS开发注意事项

1、要注意DWR异步机制带来的数据可能不同步问题
2、返回结果只能是一个值所以要详细设计返回结果类型
3、要注意Java引用传递和JavaScript值传递的差异
4、连续多次后台请求尽量采用批量调用
5、尽量将JavaScript的逻辑处理代码抽取成一个独立的文件

J2EE环境中DWR框架的Ajax实现视频教程 本文还有配套的精品资源,点击获取 简介:DWR(Direct Web Remoting)框架为J2EE提供了一种高效的Ajax实现方法,使得Java服务器端代码能与客户端JavaScript进行无缝交互。它包含远程调用、自动类型转换、异步通信等核心功能,并通过安全控制、批量更新和智能缓存策略提升Web应用性能。本视频教程将详细介绍DWR框架的组成部分、配置步骤、创建可调用的... 阅读详情

相关推荐

综合IT技术实验代码包:SSH2, DWR, EXT3, Struts2, Spring3, JSON, 分布式Ehcache

本文还有配套的精品资源,点击获取 简介:本压缩包提供了与多个IT技术相关的实验代码,包括但不限于SSH2协议的安全连接和数据传输,DWR库实现AJAX通信,EXT3文件系统的基本操作,Struts2和Spring3框架的MVC设计模式应用,JSON数据交换格式的处理,以及分布式Ehcache缓存系统的设计和应用。通过这些实验,学生和开发者可以深入理解这些技术的实际应用,并在...

weixin_36059856的博客 789

dwr学习深入理解

 这段时间较闲,研究了一番dwr.发现dwr实现的AJAX有些地方确实很是先进.比如动态生成javascript代码;隐藏的http协议;javascript于java代码交互的是javascript对象(或字符串)等. 以下是我临时译的一些东西.本来想全译,发现dwr实在是简单,就随便写了.英文居差,现一把. 1、DWR: Easy AJAX for JAVA 作为一个java open sou

lg312200538的专栏 751

Spring+Struts+Hibernate+jbpm+DWR整合开发的OA办公系统源码分析

Struts框架是MVC设计模式的实现之一,其组件主要包括::Struts的控制器组件,用于处理来自客户端的所有请求。Action:用于业务逻辑的处理。一个Action类对应一个业务逻辑操作。ActionForm:用来封装来自HTTP请求的表单数据,并在Action之间传递。:定义请求转发的目标URL。:包含了请求URL和Action之间的映射关系。

weixin_35752645的博客 718

dwr配置文件dwr.xml详解

本人对dwr 中文文档关于dwr.xml做的一个整理,纯粹体力活,有用得着的朋友别忘顶一下,留个联系方式一起交流学习!dwr.xml是DWR的配置文件。默认情况下,应该把它放到WEB-INF目录(web.xml的目录)下dwr.xml文件的结构如下:<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0/...

u014712365的博客 180

几率大的Redis面试题(含答案)

本文的面试题如下: Redis 持久化机制 缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题 热点数据和冷数据是什么 Memcache与Redis的区别都有哪些? 单线程的redis为什么这么快 redis的数据类型,以及每种数据类型的使用场景,Redis 内部结构 redis的过期策略以及内存淘汰机制【~】 Redis 为什么是单线程的,优点 如何解决redis的并发竞争key问题 Red...

睶 38万+

数学分析五领域全景:实分析、复分析、泛函分析、傅里叶分析、凸分析

五种分析,五种视角,同一个目标。理解一个系统,首先要找到它的不变量。

li880862的博客 191

DWR 反推

DEMO 1:[url]http://yanda20056.blog.163.com/blog/static/5650193120094182215449/[/url] DEMO 2:[url]http://songdi.iteye.com/blog/368835[/url] DEMO 3: [url]http://coolzhi.iteye.com/blog/552409[/url]...

iteye_9264的博客 186

别再手动算考勤了!教你用Python+企业微信API自动生成月度报表

本文介绍如何利用Python和企业微信API构建自动化考勤分析系统,实现从数据获取到可视化报表生成的全流程自动化。通过企业微信打卡接口获取数据,使用Pandas进行高效清洗和分析,并生成Excel和HTML格式的报表,大幅提升考勤统计效率。系统支持智能判定考勤状态,如迟到、早退等,并可通过定时任务实现月度自动化运行。

weixin_27875131的博客 288

DWR问题

同样的web.xml,dwr.xml在本机的resin3.0,Tomcat5下始终不能配置成功,而放到内网却可以。不管内网还是本机,始终提示那个js文件没有找到,没有生成。以下摘录工作原理:通过研究uk.ltd.getahead.dwr.DWRServlet这个servlet来研究下dwr到底是如何工作滴。代码 web.xml配置    &lt;servlet&gt;    ...

Bob1228的专栏 361

研究生课程笔记:软件包在流行病学中的应用(三)——STATA软件

关键词:STATA软件基本操作、STATA对于流行病学研究的实现、STATA对复杂抽样设计样本量计算的实现 一、STATA软件基本操作 这部分网上教程有很多,也可以直接根据stata自带的help功能进行自学,在此只记录课程中提及的功能项。 1. 变量编辑 1.1 赋值:label type(按精度区分) 1) 整型:int(32), short(16), long(32) 2) 实型:flo...

weixin_45463530的博客 2432

Spring WebFlux响应式编程实战(三):优雅处理异常与高效调试技巧

本文深入探讨了Spring WebFlux响应式编程中的异常处理与调试技巧。文章通过电商订单流处理场景,详细解析了Reactor核心操作符onErrorReturn、onErrorResume和onErrorMap的实战应用,并介绍了如何构建@ControllerAdvice和WebExceptionHandler全局异常处理防线。同时,提供了使用.log()操作符、Hooks.onOperatorDebug()及BlockHound进行高效调试的方法,旨在帮助开发者构建健壮、可维护的响应式应用。

weixin_29252171的博客 65

DWR的学习文档(Hello World,类型转换,Spring,Annotation)

DWR的学习文档(Hello World,类型转换,Spring,Annotation) http://www.iteye.com/topic/40313  

wenzi_li的专栏 113

上位机1000条/秒数据不丢不卡:SQLite持久化队列最优方案实战

在上位机每秒1000条、1MB数据的场景下,SQLite做持久化队列是最优解可靠性拉满,ACID事务+WAL模式保证绝对不丢数据;性能完全够用,优化后每秒几千条没问题;轻量无依赖,只有一个.db文件;C#/.NET原生支持,代码简单易维护。只要按照上面的优化点和代码实现,完全能满足工业现场的需求,不用再担心数据丢失、存储卡采集的问题。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 483

菜鸟调错——Spring与DWR集成,配置文件报错

背景简介: 该项目是市信用办的一个系统,之前好像是一个石家庄的公司负责的。我属于是半路接手。拿到源码后,根据他们给的简(shao)单(de)明(ke)了(lian)的说明把项目搭起来。结果可想而知,项目文件一片红。于是就开始解决这些错误,好在很多错误都是类似的。经过一番捣鼓,大部分的错误都解决了,有一个Spring跟DWR集成配置的错误,错误信息如下: Multiple annotations...

纸上得来终觉浅,绝知此事要躬行 4631

从零开始讲DDR(8)——AXI 接口MIG 使用(1)

我们简单拆解了MIG AXI接口中测试文件的整体框架,首先在sim_tb_top.sv文件中例化了DDR模型和example_top。在example_top中,又例化了MIG IP和一个流量产生器ddr4_v2_2_8_axi_tg_top。在ddr4_v2_2_8_axi_tg_top中的主要功能是分别例化了boot_mode_gen,prbs_mode_gen,custom_mode_gen和axi_opcode_gen。

apple_53311083的博客 1587

【00】虹软2023届校招专场 ,计算机类笔试攻略(笔试考试时间、考察范围、笔试难度 等说明)

虹软科技2023校招笔试攻略:三大岗位类别(算法、算法优化、开发)分别于7月24日进行。题型包括选择题、编程题和问答题,其中算法类题目降低难度,编程题改为LeetCode模式。重点考察数学基础、机器学习、编程能力(C/C++/Python)、数据结构和算法优化等。建议根据投递岗位选择问答题,算法优化类注重系统知识和SIMD优化,开发类侧重多线程等实际应用能力。笔试结果将作为校招offer的重要参考。

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 276

菜鸟调错(四)——Spring与DWR集成,配置文件报错

背景简介: 该项目是市信用办的一个系统,之前好像是一个石家庄的公司负责的。我属于是半路接手。拿到源码后,根据他们给的简(shao)单(de)明(ke)了(lian)的说明把项目搭起来。结果可想而知,项目文件一片红。于是就开始解决这些错误,好在很多错误都是类似的。经过一番捣鼓,大部分的错误都解决了,有一个Spring跟DWR集成配置的错误,错误信息如下: Multiple an...

weixin_34054866的博客 185

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

DWR入门笔记

DWR : direct web remoting它允许java server和 JavaScript尽可能简单的相互调用 从DWR2.0开始就需要使用commons-logging包 DWR2.0与DWR3.0差别很大 engine.execute(,,,,callback);一对{}在JS中就表示一个对象,因此JSON——{username:"huangbiao",id:1}就表示一个对...

weixin_30488313的博客 140

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

SSH面试题整理

SSH面试题整理              JAVA   ------SSH 面试题       1.  BeanFactory的作用是什么?   [中]    BeanFactory是配置、创建、管理bean的容器,有时候也称为bean上下文。Bean与bean的依赖关系,也是由BeanFactory负责维护的。    2.  bean在spring的容器中两种

hanfhabc的博客 727

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

SSH面试题

1.  BeanFactory的作用是什么?   [中]    BeanFactory是配置、创建、管理bean的容器,有时候也称为bean上下文。Bean与bean的依赖关系,也是由BeanFactory负责维护的。    2.  bean在spring的容器中两种基本行为是什么? [中]    Singleton:单态    Non-singleton或prototype:原型  

知识的力量 1489

ssh面试题

1.  BeanFactory的作用是什么?   [中]    BeanFactory是配置、创建、管理bean的容器,有时候也称为bean上下文。Bean与bean的依赖关系,也是由BeanFactory负责维护的。    2.  bean在spring的容器中两种基本行为是什么? [中]    Singleton:单态    Non-singleton或prototype:原型

pp_pp1的专栏 1011

关于一些实用工具服务器

RMI远程调用rtti运行时类识别 class类对象dwr服务器推送:点击打开链接http://blog.youkuaiyun.com/threesan333/article/details/12502689http://blog.youkuaiyun.com/pangliang_csdn/article/details/68945872...

花行远的码园 257

dwr3的一些介绍

DWR入门笔记 DWR : direct web remoting 它允许java server和 JavaScript尽可能简单的相互调用 从DWR2.0开始就需要使用commons-logging包 DWR2.0与DWR3.0差别很大 engine.execute(,,,,callback); 一对{}在JS中就表示一个对象,因此JSON——{username:"huangbi...

jsczxy2 205

java 学习笔记

WEB-INF有关的目录路径问题总结:http://a-bin.iteye.com/blog/1114960 关于struts在进入action之前自动跳转到input的result http://silentjesse.iteye.com/blog/870665 id是一个数组String[] id = ServletActionContext.getRequest()

baibaiyuanyuan的专栏 954

读《项目百态-深入理解软件项目行为模式》微博文整理一

这篇博客是我平时读《项目百态-深入理解软件项目行为模式》书,随手发的微博里的感想,呵呵,感觉整理一下还是有必要的。借此做个广告,刚开微博 http://weibo.com/u/1904155902,求关注,呵呵!  《项目百态》真是一本很值得看的书,很多都是现实项目中出现问题,如何避免与预防都给出很好的解答,毕竟作者是大师级的啊! [项目百态-眼神交流]:现在都流行项目分布式合作开发,但是项目团队

jercy的专栏 3635
上一篇: Java IO详解
下一篇: struts2 PreResultListener实现回调
w3053_5fdf588
博客等级 码龄18年 0粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值