DWR配置详解

DWR是一种AJAX(Asynchronous JavaScript and XML)的JAVA实现,它提供了一种能在web浏览器端采用JavaScript语言直接调用后台业务商业组件的解决方案。DWR通过JavaScript直接调用远程组件可以减少Web开发的时间,特别对于那些具有和用户频繁交互的Web应用程序。DWR使得浏览器不用刷新页面就可以从远程Web服务器取得用户需的数据,这种无刷新页面的交互方式大大提高Web页面的响应时间。至少用户不会感觉到刷新页面带来的等待响应心理感觉。DWR采用浏览器端采用纯JavaScript实现,并且会自动根据浏览器类型采用最高效率的远程组件调用机制。DWR目前最新发布的稳定版本为1.0。本次项目中采用的也是目前的最新发布版本1.0。
1、建立dwr.xml 配置文件
任何一个dwr.xml的文件都需要包含DWR DOCTYPE的声明行,格式如下:
<!DOCTYPE dwr PUBLIC
"-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN"
"http://www.getahead.ltd.uk/dwr/dwr10.dtd">
整个配置文件的大体结构如下:
<dwr>
<init>
<creator id="..." class="..."/>
<converter id="..." class="..."/>
</init>
<allow>
<create creator="..." javascript="..." scope="...">
<param name="..." value="..."/>
</create>
<convert convertor="..." match="..."/>
</allow>
<signatures>
...
</signatures>
</dwr>
有几个术语有必要理解,参数叫做converted,远程Bean叫做created.如果远程Bean A有个方法A.blah(B),那么你需要为A建立一个created,为B建立一个converted.

配置文件init部分声明那些用于建立远程bean和在方法调用中转换bean的类.这部分是可选择性配置的,多数情况下可以不必使用它,如果你想定义一个新的creator或者converter那么就必须在这部分中声明,but do double check on the ones that are currently available first.
在init部分的作用是告诉DWR一些类实例和关于这些类怎样运行的信息.实际上并不会使用.这有点像java中的import语句,多数类在使用之前需要引入,但引入了类并不意味着这些在使用,每个creator和converter需要有个id属性来允许以后进行引用.
配置文件的allow部分定义哪些类可以建立和转换,每个被准许的类都可以有一个'create'或者'convert'配置行.下面列出的类的转换在默认情况下不需要进一步的设置.
1、所有基本类型,boolean,int,double等等
2、基本类型的对象形式实现的类,Boolean,Integer等等
3、java.lang.String
4、java.util.date 和三个SQL形式的派生类
5、以上所有类型的数组形式
6、以上所有类型的集合,List,Set,Map(有些局限性)
However nothing is added to the list of classes that can be created (i.e. put up for remoting) without you declaring it.
虽然你没有声明它,没有东西会加到类的创建列表中。
2、The Converters
DWR已经默认定义和初始化了常用的Converter,他们分别如下:
<converter id="null"
class="uk.ltd.getahead.dwr.convert.NullConverter"/>
<converter id="primitive"
class="uk.ltd.getahead.dwr.convert.PrimitiveConverter"/>
<converter id="bignumber"
class="uk.ltd.getahead.dwr.convert.BigNumberConverter"/>
<converter id="string"
class="uk.ltd.getahead.dwr.convert.StringConverter"/>
<converter id="date"
class="uk.ltd.getahead.dwr.convert.DateConverter"/>
<converter id="array"
class="uk.ltd.getahead.dwr.convert.ArrayConverter"/>
<converter id="map"
class="uk.ltd.getahead.dwr.convert.MapConverter"/>
<converter id="collection"
class="uk.ltd.getahead.dwr.convert.CollectionConverter"/>
<converter id="bean"
class="uk.ltd.getahead.dwr.convert.BeanConverter"/>
<converter id="hibernate"
class="uk.ltd.getahead.dwr.convert.HibernateBeanConverter"/>
<converter id="dom"
class="uk.ltd.getahead.dwr.convert.DOMConverter"/>
<converter id="dom4j"
class="uk.ltd.getahead.dwr.convert.DOM4JConverter"/>
<converter id="jdom"
class="uk.ltd.getahead.dwr.convert.JDOMConverter"/>
<converter id="xom"
class="uk.ltd.getahead.dwr.convert.XOMConverter"/>
<converter id="servlet" class="uk.ltd.getahead.dwr.convert.ServletConverter"/>
这里仅仅是定义了Converter并且简单的放在<converter….>元素之内,任何的<converter….>元素内容都有两个必须定义的属性.是对converter引用的定义和converter能够转换的类的定义.例如最简单的converter是null converter,它作用是把null和void值转换成javascript的null和undefined值.它是所有converter中最简单的,就象调用java的静态方法一样,所以并不需要创建对象.
默认的时候DWR将java void值转换成javascript的null值就是这样设置<convert converter="null" match="void"/>. 有时java.lang.Void也需要进行这样的转换,所以设置也是相似的<convert converter="null" match="java.lang.Void"/>.从java中传递null值到javascript是没有任何危险性的,所以DWR将这个作为默认的converter,所以你自己不用再把这个converter添加到配置文件的<allow>部分中去.
基本类型的converter转换int,boolean,double等.当然还包括对应的对象形式Integerv,Boolean等等.DWR中在allow预定义了16个配置项目分别用于所有基本类型的转换.就象这样
<convert converter="primitive" match="java.lang.Long"/><convert converter="primitive" match="long"/>.
String类型和Date同样预先定义了Converter,这些converter都没有办法进行改变的,所有的String,Date和数值类型都统一采用默认的converter.
2.1 Array Converters
Array的配置项目没有上面介绍的那么直观,默认情况下DWR装载所有的基本类型和可装载的对象,这些包括String,Date等先前介绍的类型.java高级程序员可能会理解为什么match的这行有点奇怪.
<convert converter="array" match="[Z"/>
<convert converter="array" match="[B"/>
<convert converter="array" match="[S"/>
<convert converter="array" match="[I"/>
<convert converter="array" match="[J"/>
<convert converter="array" match="[F"/>
<convert converter="array" match="[D"/>
<convert converter="array" match="[C"/>
<convert converter="array" match="[L*"/>
*符号在上面没有提到,其实这是个可以表示任何字符的通配符号.这些数组可装载的的类型和其他可装载的类型是一样的.
2.2 Bean Converters
一种不能采用默认方式定义的converter就是Bean Converter,这个是将POJO对象转换成javascript相关的数组,反向也一样.基于安全因素的考虑这种类型的converter不能采用默认的方式实现.
假设有个bean并且通过<create ...>语句设置成远程可用,有种类型的参数他本身是一个带有setter的java bean,但setter会产生严重的隐患.攻击者可能促使这隐患的发生.通过下面的语句就可以设置但个类的bean converter
<convert converter="bean" match="your.full.package.BeanName"/>
要想允许转换指定包或子包下所有类的转换可以按照下面的设置
<convert converter="bean" match="your.full.package.*"/>
很明显,可以采用下面的方式来转换所有的java bean
<convert converter="bean" match="*"/>
2.3 Restricting Property Conversion(指定属性转换)
将象用exclude和incluce来通知DWR隔离creator的方法一样,converter也有一个类似的配置方法.因为指定属性转换只有针对bean才有效(基本类型的转换没有必要指定属性),这个功能只能应用与特定的converter即BeanConverter和从次类派生的所有类.相关配置语法如下
<convert converter="bean" match="com.example.Fred"/>
<param name="exclude" value="property1, property2"/>
</convert>
这样就可以限定DWR不能调用Fred对象的getProperty1()和getProperty2()方法,通常这被成为拒绝访问方式,当然你也可以采用下面的方式配置可以访问的方法(授权访问方式)
<convert converter="bean" match="com.example.Fred"/>
<param name="include" value="property1, property2"/>
</convert>
较好的安全控制大部分都是采用授权访问方式.
2.4 Collection Converters
DWR最后两个默认的converter是Maps和Collections
<convert converter="collection" match="java.util.Collection"/>
<convert converter="map" match="java.util.Map"/>
通常converter是采用递归方法转换集合中的所有对象.
这里有两个地方需要注意:
仅仅通过反射方法没有办法知道集合元素中的类型,所以上面的两个converter能将任何集合转换成相对javascript而言有意义的对象.然而没有办法将不同的集合类类型分别采用不同的转换方法.因为没有办法完全自动进行转换,我们可以应用dwr.xml文件的special signatures syntax配置部分设置类型的转换处理过程.
2.5 DOM Objects
DWR 自动将DOM、DOM4J、JDOM和XOM转换成DOM树,前面这几种类型都仅仅返回Document,Element,Node.DWR会自动将这些转换成浏览器DOM对象.通常在启动JDOM Converter时会有一个提示信息,除非你想采用JDOMconverter否则可以忽略.
INFO: Missing classdef for converter 'jdom'. Failed to load uk.ltd.getahead.dwr.convert.JDOMConverter. Cause: org/jdom/Document
因为DWR没有办法知道你是否采用jdom converter,所以提示信息是info级别.如果你想采用jdom converter,你必须很清楚地知道jdom converter是否可以被加载.这就是DWR保留上面的提示信息的原因.
3 The Creators
DWR共有三种Creator,最简单的”new”是调用bean的默认构造函数创建实例.”scripted”允许采用其他脚本语言创建实例.如BeanShell.在远程bean的默认构造函数不能进行进一步配置的情况下这种类型的creator比较有用.”Spring”类型允许你通过spring创建实例.
下面是关于creator的参考资料和配置参数说明.
Creator Parameter User
new class 类的全名称(包括包路径)
scripted language BSF框架支持的脚本语言名称(BSF为apache项目)
scripted script 返回远程对象的脚本,脚本可以指定一些属性,多数情况下一般只设置param节点配置.属性很少设置.
spring Location* 任何以location开头的参数,每个参数都是指定一个spring的配置文件,在参数没有设置的情况下DWR会去读取spring的全局的配置文件.
spring beanName 从配置文件中读取的bean的名称


“scope参数允许你配置creator的生命周期,共有以下几个选项:application,session,request,page.这些参数对于用过jsp或servlet的开发人员并不陌生.
3.1 Uing static methods
如果你想远程调用一个creator的静态方法,并且creator是new类型.因为调用远程bean的方法前DWR不会检测将要执行的方法是不是静态方法,如果是静态方法那么creator就不用创建.这种机制可以适用任何类型的creator,但new类型的creator是最简单配置的.
3.2 Security
Creator可以配置类的成员函数的访问权限.creator有授权访问(指明可以被访问的方法)和拒绝访问(指明不允许访问的方法)两种配置方式.
如果要设置除了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>
3.3 The 'spring' Creator
3.4 The 'new' Creator
DWR已经默认定义了new creator.
<creator id="new" class="uk.ltd.getahead.dwr.create.NewCreator"/>
DWR已经将这配置到了内置的dwr.xml文件中,并不需要进行额外的配置.
Creator通过调用类的默认的构造方法创建实例.应用new creator有以下几个优点:
Ø 安全性
生命周期比较短的creator可以得到更好的安全性,通过不同的应用情况设置适合的生命周期.
Ø 低内存开销
在访问量比较大的情况下,可以不用担心发生内存泄露的情况.
配置一个creator的创建和远程方法调用设置:
<allow>
<create creator="new" javascript="Blah">
<param name="class" value="java.util.Date"/>
</create>
...
</allow>
上面的配置信息表示将java.util.date提供给客户端调用,并且引用名称是Blash.当你在客户端调用Blash.toString(reply)时,后台将采用java.util.date的默认构造方法创建一个实例.然后调用实例的tostring方法.客户端的javascript将返回给reply对象(此时reply是java.util.date的字符串形式)
3.5 The 'scripted' Creator
DWR 已经默认配置了scripted creator配置,
<creator id="script" class="uk.ltd.getahead.dwr.create.ScriptedCreator"/>这种类型的creator采用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>
4 Signatures in dwr.xml
Signatures部分用于配置Collections中装载对象元素的类型.举个例子来说:下面的java代码没有办法对List集合中的对象进行转换.
public class Check
{
public void setLotteryResults(List nos)
{
...
}
}
Singatures配置允许我们对DWR要操作的对象类型进行配置.对于了解JDK5泛型编程的开发人员来说下面的格式是很容易理解的.
<signatures>
<![CDATA[
import java.util.List;
import com.example.Check;
Check.setLotteryResults(List<Integer> nos);
]]>
</signatures>
DWR有个专门用于解析上面配置语句的解析器,虽然上面的是JDK5中才有的特性,因为有解析器的原因这也可以应用与JDK5之前的版本.
解析规则是不可见的,但有两种例外情况.
一种情况是因为DWR1.0的解析器中有个Bug,在有些场合会无法处理返回值的类型.所以应该要避免这种情况的发生.
一种情况是因为解析器是一个语法宽松的解析器,他不象编译器一样对语法有非常严格的要求,所有有时可能一些重要的语句没有配置而无法事先发现.
<signatures>
<![CDATA[
import java.util.List;
Check.setLotteryResults(List<Integer>);
]]>
</signatures>
DWR的将来版本可能会采用符合java官方规范的解析器,这样可以避免许多出错的情况.
Signature部分只用于泛型参数到基本类型参数的转换,对于其他的类型DWR采用反射机制或运行时类型来确定.在没有泛型参数的情况下可以不配置Signature.
public void method(String p);
public void method(String[] p);
下面的就需要配置,因为反射机制无法完成次类功能.
public void method(List<Date> p);
public void method(Map<String, WibbleBean> p);
下面可以不用配置,DWR可以自动完成转换.
public void method(List<String> p);
public void method(Map<String, String> p);
下面可以不用设置,DWR可以采用运行时转换.
public List<Date> method(String p);
有一个值得注意的地方是在javascript中所有对象的keys都是一个字符串,你也可以把其他对象作为keys.他们在使用之前都会转换成字符串形式.DWR1.x将采用这个特性来转换成String.以后对象的转换将会在服务器端完成.
5 Scripting Introduction
DWR生成的javascript代码和java代码很相似并通过dwr.xml配置输出.相比普通java异步调用之下,通过ajax生成远程接口和java 代码的最大挑战是AJAX异步功能.
DWR通过引入一个回调函数,当数据从服务返回数据是调用这个函数。有两种推荐的方法使用回调函数。一在参数列表加入回调功能。二增加调用元数据对象调用。
也可以将回调的功能放在参数列表的前头,但是不建议使用这样的用法,因为在处理自动HTTP对象时候会出现问题。这些方法一般会保持向后兼容。
5.1 Simple Callback Functions
假设有个下面的java方法。
public class Remote
{
public String getData(int index) { ... }
}
在javascript中就可以以下面的方式引用。
<script type="text/javascript"
src="[WEBAPP]/dwr/interface/Remote.js"> </script>
<script type="text/javascript"
src="[WEBAPP]/dwr/engine.js"> </script>
...
function handleGetData(str)
{
alert(str);
}
Remote.getData(42, handleGetData);
“42”只是一个传给getdata方法的参数。当然你可以采用下面的写法。
Remote.getData(42, function(str) { alert(str); });
5.2 Call Meta-Data Objects
另一种使用回调功能的方法是指定一个回调功能选项或其他可选项。上面的例子就变成下面的形式。
Remote.getData(42, {
callback:function(str) { alert(str); }
});
这个方法具有以下几个优点:可以依照你的编码习惯来编写程序,更重要的是允许你增加额外的调用选项。
5.3 Timeouts and Handling Errors
除了使用回调功能你还可以指定超时时限和错误处理方法。例如:
Remote.getData(42, {
callback:function(str) { alert(str); },
timout:5000,
errorHandler:function(message) { alert("Oops: " + message); }
});
5.4 Finding the callback method
下面有几个实例来说明回调功能各个参数选项的配置,因为javascript是不支持函数重载的。
Remote.method({ timeout:3 }, { errorHandler:somefunc });
上面的两个参数一个是bean的参数一个是回调元数据对象。但是没有方法去区别这两种参数选项。在抛开特定的浏览器环境,我们假设null==undefined,所以具有以下规则:
一、如果一个函数的每个调用都是回调函数,那么他就没有调用元数据对象,所有的参数都是普通java参数。
二、如果一个最后一个参数具有一个回调功能,那么这个参数就是调用元数据对象。其余的就是普通java参数。
三、如果第一个参数为null,我们就认为没有回调功能。其余的就是普通java参数。此外还要检查最后一个参数是否为null,如果是则会给予提示信息。
四、如果最后一个参数为null,则没有回调功能。
五、还有一个不是很好的约定格式,要表示错误信息。
6 Engin.js文件
这个文件是DWR的引擎文件,他承担着把后台自动生成的javascript接口与前台调用之间的衔接责任。所以任何使用DWR的地方都需要这个文件。
每个使用DWR的页面都必须引入这个文件:
<script type='text/javascript'
src='/[YOUR-WEB-APP]/dwr/engine.js'>
</script>
6.1 Call Batching
应用批量功能可以一次性调用多个远程bean方法,因为他是将多个调用做为一次请求,这就减少了与服务器的交互。可以减少许多的开销。
一个批量方法调用以DWREngine.beginBatch()开始WREngine.endBatch()结束。当DWREngine.endBatch()被调用时就说明开始调用批量方法,DWR就将这些方法打包在一起作为一次请求发送给服务器。
DWR会确保所有的方法都回被调用,所以使用批量功能是要注意是否提交了批量调用,如果没有提交批量调用那么这些需要调用的方法将永远排在调用队列中直到提交批量调用。
注意:批量调用方法会有一些缺点,比如他不能在那些已经帮定在一起的方法调用顺序不能保证同步。
例如所有的调用元数据对象的接管函数,超时设定,错误处理等的调用都是在批量的级别上,而不是在调用的级别上。如果一个批量调用含有两个不同超时时间设定的方法,那么除了最后一个之外的所有其他方法的超时设定都被忽略。
6.2 Call Ordering
因为AJAX是个普通的异步远程方法调用模式,所以远程调用的返回结果的顺序可能和你发送请求的顺序不一致。DWREngine.setOrdered(boolean)方法允许你设置远程调用返回结果的顺序和你发送调用请求的顺序保持一致。DWR是通过一个远程方法调用已经结束后在发送下一个调用请求来实现这个功能的。
一般情况我们并不需要返回结果顺序和发送请求顺序保持一致。DWR默认是不保持一致的。
提示:因为保持上面的顺序会对应用程序的性能和响应时间,如果其中的一个消息发生丢失那么浏览器可能会有意想不到以外情况发生。在使用这个功能的时候必须认真考虑是否真的有必要使用。通常比较好的方法是使用异步模式调用。
6.3 Handling Errors and Warnings
对于一些服务器端发生的错误或警告情况DWR都回调用默认的错误和警告方法并且传递一个相关信息,通常这些发生的错误和异常对于用户来说是不可见的。
下面这个方法主要用于以消息框的方式或者在状态栏里显示一个错误或警告的消息。
要改变错误的处理方法可以使用这个方法:DWREngine.setErrorHandler(function),
改变警告的处理方法可以使用这个方法:DWREngine.setWarningHandler(function).
6.4 Remoting Hooks
参考 DWREngine.setPreHook(function) and DWREngine.setPostHook(function).
如果你想在执行远程方法调用之前或之后进行一些处理的话,你可以使用上面的两个方法。上面参数中设置的目标方法必须是没有参数的。如果你想限制特定的组件在一次方法调用没有结束之前不允许再次调用,那么使用上面的方法将很有用。
Post 执行Hooks通常是设置pre-hooks,一般用来撤消先前的操作。关于Hooks的例子可以参照;DWRUtil.useLoadingMessage() 函数。
6.5 Remoting Options(远程调用设置)
关于DWR处理远程调用有若干个设置选项,Method和Verbs对于用户来说是透明的,但对于不同的浏览器可能会有影响。通常DWR会选择正确的方法处理,如果想饶过某些浏览器产生的影响这些参数设置将非常有用。
DWREngine.setMethod(newmethod)
设置Method的实际执行方法,但被设置的方法不能确保被调用。只是DWR首先会尝试调用这个方法。newmethod 必须是DWREngine.XMLHttpRequest 或着 DWREngine.IFrame.
DWREngine.setVerb(verb)
允许设置iframe 和 XMLHttpRequest提交数据时的方式,必须是POST或者GET,如果浏览器不支持POST形式,DWR会自动切换到GET方式。
专有钉钉小程序(浙政钉)开发搭建流程总览 最近公司有一个项目要做浙政钉,让我来负责做。靠,我一脸懵,开发了两年多不知道浙政钉是啥,感觉我眼界还是低了。然后就去百度、同事问了一圈才知道就是个钉钉小程序嘛,然后发布到浙政钉上了。就搭建项目跑起来我都肥了很多事,中间走了很多坑。正好领导让我写《钉钉小程序前端开发流程》,这想着也写个博客吧。下面就是整个流程及我所遇到的坑! 阅读详情

相关推荐

深度学习-算法工程师岗位面试常见问题及解答

一、相关的问题 深度学习优化学习方法(一阶、二阶) 一阶方法:随机梯度下降(SGD)、动量(Momentum)、牛顿动量法(Nesterov动量)、AdaGrad(自适应梯度)、RMSProp(均方差传播)、Adam、Nadam。 二阶方法:牛顿法、拟牛顿法、共轭梯度法(CG)、BFGS、L-BFGS。 自适应优化算法有哪些?(Adagrad(累积梯度平方)、RMSProp(累积梯度平方的滑动平均)、Adam(带动量的RMSProp,即同时使用梯度的一、二阶矩))。 梯度下降陷入局部最优有什么解决

nobles007820的博客 2924

DWR的使用,配置,例子,详解整理

DWR的原理:在安装DWR时会在web.xml中配置一个servlet,这个servlet负责把前台的JS参数封装成JAVA,去调用你的JAVA类,然后将返回结果(JAVA类型)再翻译成JS生成到你的JSP页面上,给你的错觉就是你用JS直接调用了JAVA方法 实际:JAVA类实现了js与java类之间的接口(DWR根据Java类来动态生成JavaScrip代码,是不是有些像JSP是由servle

洪文聊架构 5279

告别玄学:手把手配置EtherCAT从站PDI接口与同步采样(含Sync/Latch信号实战)

本文详细解析了EtherCAT从站PDI接口配置与同步采样技术,涵盖微处理器通信与直接驱动IO模式选择、同步采样四大触发模式(SOF、Latch_in、Sync0/Sync1)及输出触发实战。通过伺服驱动器实例,帮助工程师突破配置难点,实现高精度同步控制,提升工业自动化系统性能。

weixin_30667649的博客 483

DWR详细配置

DWR是一种AJAX(Asynchronous JavaScript and XML)的JAVA实现,它提供了一种能在web浏览器端采用JavaScript语言直接调用后台业务商业组件的解决方案。DWR通过 JavaScript直接调用远程组件可以减少Web开发的时间,特别对于那些具有和用户频繁交互的Web应用程序。DWR使得浏览器不用刷新页面就可以 从远程Web服务器取得用户需的数据,这种无刷新

zhtch_123的专栏 599

01. VBA从入门到精通——录制宏、窗口、快捷键

excel表功能区右击→常用→选择显示开发工具选项→确定Visual Basic:打开VBA窗口宏:查看要录制的宏录制宏:准备录制宏使用相对引用:录制宏的时候对单元格的引用做一个设置宏安全性:对宏的使用做安全设置,一般设置为禁用所有宏,并发出通知,此时打开带有宏代码的工作薄时会出现警告标记,如果宏可信就选择启动。

weixin_43812198的博客 1696

COD论文笔记VSCode: General Visual Salient and Camouflaged Object Detection with 2D Prompt Learning

VSCode模型通过引入领域特定提示和任务特定提示,结合提示区分损失,成功地在单一模型中处理多个显著目标检测和伪装目标检测任务。这种方法不仅提高了模型的性能,还展示了其对未见任务的泛化能力。作者使用 Visual saliency transformer ICCV 2021 作为baseline model这张图展示了VSCode模型的整体框架,特别强调了2D提示学习方法。

985小菜鸡 1627

DWR基本配置

DWR基本配置DWR——Direct Web Remoter Servlet供给那些想要以一种简单的方式使用Ajax和XMLHttpRequest的开发者。它具有一套JavaScript功能集,它们把从HTML页面调用应用服务器上的Java对象的方法简化了。它操控不同类型的参数,并同时保持了HTML代码的可读性。DWR不是对一个设计的插入,也不强迫对象使用任何种类的继承结构。它和servlet框架...

Zuo__Z的博客 394

动态时间规整(Dynamic Time Warping,DTW):让时间序列分析不再枯燥和代码全分析

动态时间规整(DTW)是一种用于比较时间序列相似性的算法,特别适用于处理长度不同或时间轴不对齐的序列。本文介绍了DTW的核心概念,包括其通过非线性对齐解决时间扭曲问题的能力,以及在语音识别、金融分析等领域的应用。通过Python代码示例,演示了如何计算两个模拟时间序列的DTW距离,并可视化最优对齐路径。结果显示,DTW能够有效捕捉序列间的相似模式,即使它们在时间轴上存在偏移或伸缩。该算法通过最小化累积距离来评估相似性,得分越低表明序列间相似度越高。

此星光明博客 162

DWR(2):DWR配置详情

下面我们通过一个简单的入门项目来讲解DWR的配置。 首先新建一个maven项目,结构如下: 1 引入依赖 <dependency> <groupId>org.directwebremoting</groupId> <artifactId>dwr</artifactId> <version>3.0.0-RELEASE</version> </depen.

u013938578的博客 988

【OpenClaw企业级智能体实战】第13篇:1+N架构实战!OpenClaw多Agent数字员工军团搭建指南(含完整配置+路由策略+代码落地)

单Agent因“记忆负担重、Token消耗高、响应不精准”已难以满足复杂场景需求,而多Agent团队通过“1个编排者+N个执行者”的分工协作模式,能让效率提升300%以上。本文基于OpenClaw 2026稳定版,结合阿里云开发者社区实战案例,从核心认知、准备工作、实操流程、协作机制、安全配置五大维度,完整拆解多Agent团队搭建全流程。文中包含可直接复制执行的代码、详细配置模板、路由策略设置及常见问题排查,新手可在1-2小时内落地属于自己的“数字员工”军团,覆盖内容创作、技术支持、多平台运营等多场景。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 745

论文阅读:ICLR 2023 FINE-TUNING ALIGNED LANGUAGE MODELS COMPROMISES SAFETY, EVEN WHEN USERS DO NOT INTEND

对大型语言模型(LLMs)进行微调以适应特定用例通常涉及对预训练的LLMs进行进一步的定制。Meta公开发布Llama模型和OpenAI的API允许在自定义数据集上微调GPT-3.5 Turbo,也鼓励这种做法。但是,这种自定义微调与安全成本有何关联?我们注意到,尽管现有的安全对齐基础设施可以在推理时限制LLMs的有害行为,但它们并未涵盖将微调权限扩展到最终用户时的安全风险。我们的红队研究发现,即使是只有几个设计有敌意的训练示例进行微调,也可以破坏LLMs的安全对齐。

CSPhD-winston的博客 811

dwr配置大全及需要注意的地方,Struts2与DWR在项目中的共存解决方案

今天被他折磨半天,查了各大神的配置,这里就做个小总结;概念那些就不讲了;这里讲流程跟几点大家容易犯错的点: 配置步骤: 一、在官网下载dwr.jar、commons-logging-1.1.3.jar http://directwebremoting.org/dwr/downloads/index.html http://commons.apache.org/proper/commons-...

Tony_96的博客 568

倍福CX9020(WINCE 7)控制器使用方法和操作

CX9020系列是倍福控制器中较为经济的,操作系统为Windows Embedded Compact 7(简称WINCE7或WINEC7),相对高端控制器(WINES7以上系统),操作系统古老而简洁,上位机软件的编写困难很多,本文是笔者在使用过程中摸索的流程,旨在为CX9020系列的新用户提供参考,也可供其他CE系统的控制器参考。本文中大部分截图采用倍福中国的培训文档,这是由于笔者是在流程走通后再写这篇文章,不想再恢复出厂设置走一遍截图。因笔者在写这篇文章时使用倍福控制器经验并不丰富,难免有纰漏,请读者批评

weixin_41883890的博客 4287

dwr配置dwr.xml配置详解

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

用人生编写程序 用程序编写人生—— 程序人生 950

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

DWR之dwr.xml配置详解

DWR之dwr.xml配置详解

IT 巨人 3102

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

DWR之DWR的dwr.xml配置

DWR之DWR的dwr.xml配置 ---------- 下面,我们讨论dwr.xml文件中的DWR配置事项。实际上,DWR提供了两种配置方法:Java5(或更高版本)注解和dwr.xml文件。两者完全可以互相替代,并且相互补充。简要说明一下dwr.xml文件的基本结构,如例,dwr.xml文件: <!DOCTYPE dwr PUBLIC "-//GetAhead Limit

fhd001的专栏 1515

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

dwr.xml配置详解

感觉dwr很实用,所以想多了解一下。dwr的核心就是这个dwr.xml。在网上收集整理了一些dwr.xml的配置信息。现拿出来与大家分享。

崔成龙 . 勇往直前 1万+

dwr配置文件dwr.xml详解

java代码:   dwr-invoker   uk.ltd.getahead.dwr.DWRServlet   dwr-invoker   /dwr/* 2、当我们想看DWR自动生成的测试页(Using debug/test mode)时,可在java代码: servlet中加   debug   true 这个参数DWR默认是false.如果选择true.我们可以通过url http:

ProgrammingRoad 1020

DWR配置文件详解

dwr.xml是DWR的配置文件。默认情况下,应该把它放到WEB-INF目录(web.xml的目录)下 创建dwr.xml文件 dwr.xml文件的结构如下: "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" "http://www.getahead.ltd.uk/dwr/dwr10.dtd" >

u010395804的专栏 1026

配置DWR - dwr.xml

配置DWR - dwr.xmldwr.xml是DWR的配置文件。默认情况下,应该把它放到WEB-INF目录(web.xml的目录)下。DTD这里还有一个dwr.xml对应的DTD文档以及一个用DTDDoc生成的参考手册。创建dwr.xml文件dwr.xml文件的结构如下:<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//

小肖的专栏 1132

dwr配置

dwr配置篇web.xml1、最小配置 java代码: dwr-invoker uk.ltd.getahead.dwr.DWRServlet dwr-invoker /dwr/* 2、当我们想看DWR自动生成的测试页(Using debug/test mode)时,可在 java代码: servlet中加 ...

liujinzs的博客 181

DWR配置

引入包dwr.jar a)    web.xml配置:           dwr-invoke         org.directwebremoting.servlet.DwrServlet                dwr-invoke         /dwr/*   b)   dwr.xml配置(文件放入WEB-INF目录下):  标签中

菜鸟一个,欢迎大家来吐槽…… 686

dwr.xml是DWR的配置详细

dwr.xml是DWR的配置详细 博客分类:  J2SE/J2EE/J2ME/AJAX 技术 DWRXMLSpringBeanJavaScript  [/size][size=medium][size=large][/size][align=center][/align]本人对dwr 中文文档关于dwr.xml做的一个整理,纯粹体力活,有用得着的朋友别忘顶一下,留个联系方式

沉心听雨 427
上一篇: DWR整合Spring之小例子
下一篇: 如何用JavaScript取得Radio被选中的值
danwind
博客等级 码龄19年 6粉丝 118原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值