??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲色偷偷av男人的天堂,亚洲国产综合91精品麻豆,国产成人综合亚洲绿色http://www.tkk7.com/LiuTing/category/22603.htmlzh-cnMon, 21 May 2007 01:23:59 GMTMon, 21 May 2007 01:23:59 GMT60DWRUtils API 使用Ҏhttp://www.tkk7.com/LiuTing/archive/2007/05/20/118676.htmlLiuTingLiuTingSun, 20 May 2007 04:46:00 GMThttp://www.tkk7.com/LiuTing/archive/2007/05/20/118676.htmlhttp://www.tkk7.com/LiuTing/comments/118676.htmlhttp://www.tkk7.com/LiuTing/archive/2007/05/20/118676.html#Feedback0http://www.tkk7.com/LiuTing/comments/commentRss/118676.htmlhttp://www.tkk7.com/LiuTing/services/trackbacks/118676.html$("precloneNode1suf") 取得该对?

DWRUtil.selectRange("selectRangeBasic", 5, 15) 选中selectRangeBasic文本框里面从W五个字W到W?5个字W之间的字符.

DWRUtil._getSelection("selectRangeBasic") 得到selectRangeBasic文本框里选中的字W?

var arrayFive = [ 'One', 'Two', 'Three', 'Four', 'Five' ];
DWRUtil.addOptions('addOptionsBasic', arrayFive); 数l添加到下拉菜单里面?

DWRUtil.getValue('addOptionsBasic') 得到 addOptionsBasic 对象的?
DWRUtil.getValue("precloneNode1Inner1suf", { textContent:true }); 后面加个参数,?precloneNode1Inner1suf元素?UL" ?它返回了元素里面得?也就是说L了HTML标签部分.

DWRUtil.getText('addOptionsBasic') 得到下拉?addOptionsBasic 昄的文?

var arrayObject = [
{ name:'One', value:'1' },
{ name:'Two', value:'2' },
{ name:'Three', value:'3' },
{ name:'Four', value:'4' },
{ name:'Five', value:'5' }
];
DWRUtil.addOptions('addOptionsObject1', arrayObject, "name"); 数l添加到下拉菜单里面?后面的参数是定那个是给用户昄的文?同时也是?

DWRUtil.addOptions('addOptionsObject1', arrayObject, "name","value"); 同上,不过后面参数? 3=文本;4=?

var map = { one:1, two:2, three:3, four:4, five:5 };
DWRUtil.addOptions('addOptionsMap1', map); 同上, one 是?1 是文?
DWRUtil.addOptions('addOptionsMap1', map,true); 同上, 1 是?one 是文?

-------------------------------------------------------------------------------------
<ul id="removeItems">
<li>One</li><li>Two</li><li>Three</li><li>Four</li><li>Five</li>
</ul>

如果是列表显C?如上;则上面所有方法和select 下拉框用一?
-------------------------------------------------------------------------------------
DWRUtil.cloneNode('cloneNode1', { idPrefix:'pre', idSuffix:'suf' });克隆一个节?参数一克隆的节点的id,W二个参数是在克隆的节点id前面加pre,后面加suf.(注意:如果该节Ҏ子节点的?子节点的名字也一样加)

DWRUtil.addRows(id, array, cellfuncs, [options]);
原理:

for each member in array
for each function in cellfuncs
create cell from cellfunc(array[i])
循环数组,循环函数,建立单元调用函数;(序军_)

例如:
DWRUtil.addRows('addRowsBasic', arrayFive, [
function(data) { return data; },
function(data) { return data.toUpperCase(); },
function(data) {
var input = document.createElement("input");
input.setAttribute("type", "button");
input.setAttribute("value", "DOM Test");
input.setAttribute("onclick", "alert('" + data + "');");
return input;
},
function(data) { return "<input type='button' value='innerHTML Test' onclick='alert(\"" + data + "\");'>"; }
]);

高部分:
W四个参Cؓ对单元的高操作,主要下面的两个方?
function defaultRowCreator(options) {
return document.createElement("tr");
};

function defaultCellCreator(options) {
return document.createElement("td");
};

例子:
DWRUtil.addRows( "demo2",[ 'Africa', 'America', 'Asia', 'Australasia', 'Europe' ] , cellFuncs, {
rowCreator:function(options) {
var row = document.createElement("tr");
var index = options.rowIndex * 50;
row.style.color = "rgb(" + index + ",0,0)";
return row;
},
cellCreator:function(options) {
var td = document.createElement("td");
var index = 255 - (options.rowIndex * 50);
td.style.backgroundColor = "rgb(" + index + ",255,255)";
td.style.fontWeight = "bold";
return td;
}
});

其中 options 参数的属性可用的?(没试q?自己试试?

rowData: the element value from the array (the same for all cells in a row)
rowIndex: the key (if map) or index (if array) from the collection
rowNum: The row number counting from 0 in this section (so if you are using tbody, it counts rows in the tbody and not the whole table)
data: The 'computed' data value for the cell (cellCreators only)
cellNum: The cell number that we are altering counting from 0 (cellCreators only)


DWRUtil.setValues(); 扚w讄?
var settings = {
setValuesDiv:"setValuesDiv",
setValuesSpan:"setValuesSpan",
setValuesSelect:"two",
setValuesText:"setValuesText",
setValuesPassword:"AB",
setValuesTextarea:"setValuesTextarea",
setValuesButton1:"B1-Two",
setValuesButton2:"B2-Two",
setValuesRadio1:true,
setValuesRadio2:false,
setValuesRadio3:"one",
setValuesRadio4:"two",
setValuesCheckbox1:true,
setValuesCheckbox2:false
};
DWRUtil.setValues(settings);

DWRUtil.getValues(empty);扚w获取?
var empty = {
setValuesDiv:null,
setValuesSpan:null,
setValuesSelect:null,
setValuesText:null,
setValuesPassword:null,
setValuesTextarea:null,
setValuesButton1:null,
setValuesButton2:null,
setValuesRadio1:null,
setValuesRadio2:null,
setValuesRadio3:null,
setValuesRadio4:null,
setValuesCheckbox1:null,
setValuesCheckbox2:null
};
DWRUtil.getValues(empty);

DWRUtil.useLoadingMessage("Ping");//cMgmail那个样子,在右上角昄加蝲"ping";可用自定样式,具体查询;http://getahead.ltd.uk/dwr/browser/util/useloadingmessage

DWRUtil.toDescriptiveString("id",数字);弹出调试信息,数字?,1,2.一U比一U高.

DWRUtil.onReturn(event, submitFunction);一般在form表单里面,防止在文本框上按回R提交表?
例如:
<input type="text"
onkeypress="DWRUtil.onReturn(event, submitFunction)"/>
<input type="button" onclick="submitFunction()"/>

LiuTing 2007-05-20 12:46 发表评论
]]>
DWR框架实现Ajaxhttp://www.tkk7.com/LiuTing/archive/2007/05/20/118675.htmlLiuTingLiuTingSun, 20 May 2007 04:45:00 GMThttp://www.tkk7.com/LiuTing/archive/2007/05/20/118675.htmlhttp://www.tkk7.com/LiuTing/comments/118675.htmlhttp://www.tkk7.com/LiuTing/archive/2007/05/20/118675.html#Feedback0http://www.tkk7.com/LiuTing/comments/commentRss/118675.htmlhttp://www.tkk7.com/LiuTing/services/trackbacks/118675.html      Ajax是时下比较流行的一Uweb界面设计新思\,其核心思想是从览器获取XMLHttp对象与服务器端进行交? DWRQDirect Web RemotingQ就是实Cq种Ajax技术的一Uweb框架. 最q做的项目中我也它用上?感觉很是方便,比如动态生成javascript代码,隐藏的http协议,java代码和javascript交互的是javascript的对?或字W串).  下面是我整理的文?
  DWR主要׃部门l成。javascript与web服务器通信q更新web;q行在web服务器的Servlet处理hq把响应发回览器?br>
   1  .  配置web.xml
<servlet>
  <servlet-name>dwr-invoker</servlet-name>
  <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
</servlet>
<servlet-mapping>
  <servlet-name>dwr-invoker</servlet-name>
  <url-pattern>/dwr/*</url-pattern>
</servlet-mapping>

  2    当我们想看dwr自动生成的测试页?可在java代码
servlet中加
<init-param>
  <param-name>debug</param-name>
  <param-value>true</param-value>
</init-param>

q个参数DWR默认是false.如果选择true.我们可以通过url http://localhost:port/app/dwr ,你就可以看到你部|的每个DWR class。ƈ且可以测试java代码的每个方法是否运行正常。ؓ了安全考虑Q在正式环境下你一定把q个参数设ؓfalse.

3  log信息配置

我喜Ƣ用log4j输出日志,那么在log4j.properties下加Qlog4j.logger.uk.ltd.getahead.dwr = debug。这样可以看DWR的调试日志?

4  配置dwr.xml (和web.xml同目?
 
<create creator="new" javascript="JDate">
<param name="class" value="java.util.Date"/>
</create>

q里的多数元素都是可选的 - 你真正必ȝ道的是指定一个creator和一个javascript名字?/p>

creator属?/strong> 是必ȝ - 它用来指定用U创造器?/p>

默认情况下DWR1.1?U创造器。它们是Q?/p>

  • new: 用Java的new关键字创造对象?
  • none: 它不创徏对象Q看下面的原因?(v1.1+)
  • scripted: 通过BSF使用脚本语言创徏对象Q例如BeanShell或Groovy?
  • spring: 通过Spring框架讉KBean?
  • jsf: 使用JSF的Bean?(v1.1+)
  • struts: 使用Struts的FormBean?(v1.1+)
  • pageflow: 讉KBeehive或Weblogic的PageFlow?(v1.1+)

javascript属?/strong> 用于指定览器中q个被创造出来的对象的名字。你不能使用Javascript的关键字?/p>

scope属?/strong> 非常cMservlet规范中的scope?它允怽指定q个bean在什么生命范围。选项?application", "session", "request" ?page"。这些值对于Servlet和JSP开发者来说应该相当熟悉了?/p>

scope属性是可选的。默认是"page"。如果要使用"session"需要cookies。当前的DWR不支持ULR重写?/p>

param元素 被用来指定创造器的其他参敎ͼ每种构造器各有不同。例如,"new"创造器需要知道要创徏的对象类型是什么。每一个创造器的参数在各自的文中能找到。请查看上面的链接?/p>

include和exclude元素 允许创造器来限制类中方法的讉K。一个创造器必须指定include列表或exclude列表之一。如果是include列表则暗C默认的讉K{略?拒绝"Q如果是exclude列表则暗C默认的讉K{略?允许"?/p>


5 dwr.jar下蝲后放lib?br>
源码析

dwr的设计很象webwork2的设?隐藏http协议,扩展性,兼容性及强?/p>

通过研究uk.ltd.getahead.dwr.DWRServletq个servlet来研I下dwr到底是如何工作的?br>
<servlet>
  <servlet-name>dwr-invoker</servlet-name>
  <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
</servlet>
<servlet-mapping>
  <servlet-name>dwr-invoker</servlet-name>
  <url-pattern>/dwr/*</url-pattern>
</servlet-mapping>

q样/dwr/*下的所有的h都是p个servlet来处?到底生理了什么呢,我们q是以例子来说明?

1 web服务器启动,DWRServlet init()Ҏ调用Qinit主要做了以下工作?
讄日志U别、实例化DWR用到的单例类Q这些类在jvm中只有一个实例对象)、读去配|文Ӟ包括dwr.jar包中的dwr.xml,WEB-INF/dwr.xml. config*.xmlQ?br>2 h处理
DWRServlet.doGet, doPostҎ都调用processor.handle(req, resp)Ҏ处理。Processor对象在init()Ҏ中已l初始化了?nbsp;

代码
public void handle(HttpServletRequest req, HttpServletResponse resp)  
        throws IOException  
    {  
        String pathinfo = req.getPathInfo();  
        if(pathinfo == null || pathinfo.length() == 0 || pathinfo.equals("/"))  
        {  
            resp.sendRedirect(req.getContextPath() + req.getServletPath() + '/' + "index.html");  
        } else 
        if(pathinfo != null && pathinfo.equalsIgnoreCase("/index.html"))  
        {  
            doIndex(req, resp);  
        } else 
        if(pathinfo != null && pathinfo.startsWith("/test/"))  
        {  
            doTest(req, resp);  
        } else 
        if(pathinfo != null && pathinfo.equalsIgnoreCase("/engine.js"))  
        {  
            doFile(resp, "engine.js", "text/javascript");  
        } else 
        if(pathinfo != null && pathinfo.equalsIgnoreCase("/util.js"))  
        {  
            doFile(resp, "util.js", "text/javascript");  
        } else 
        if(pathinfo != null && pathinfo.equalsIgnoreCase("/deprecated.js"))  
        {  
            doFile(resp, "deprecated.js", "text/javascript");  
        } else 
        if(pathinfo != null && pathinfo.startsWith("/interface/"))  
        {  
            doInterface(req, resp);  
        } else 
        if(pathinfo != null && pathinfo.startsWith("/exec"))  
        {  
            doExec(req, resp);  
        } else 
        {  
            log.warn("Page not found. In debug/test mode try viewing /[WEB-APP]/dwr/");  
            resp.sendError(404);  
        }  
    } 

dwr/*处理的请求也p几种?br>
Q?Qdwr/index.htmlQdwr/test/q种只能在debug模式下用,调试用?
dwr/engine.jsQdwr/util.jsQdwr/deprecated.js当这个请求到达,从dwr.jar包中d文g,响应回去。(重复h有缓存)
Q?Q当dwr/interface/q种h到来Q(例如我们在index.html中的 <script type='text/javascript' src='dwr/interface/JDate.js'></script>QDWR做一件伟大的事。把我们在WEB-INF/dwr.xml中的
<create creator="new" javascript="JDate">
<param name="class" value="java.util.Date"/>
</create>
java.util.Date转化为javascript函数?
http://localhost:port/simpledwr/dwr/interface/JDate.js看看吧?
l节也比较简单,通过java反射Q把Ҏ都写成javascript特定的方法。(我觉得这些{换可以放到缓存里Q下ơ调用没必要再生成一遍,不知道作者ؓ什么没q样做)?
Q?Qdwr/exec
javascript调用Ҏ时发送这U请求,可能是XMLHttpRequest或IFrame发送?
当然Qjavascript调用的方法签名与java代码一_包括参数Q还有javascript的回调方法也传到了服务器端,在服务器端很Ҏ实现。回调方法的java的执行结?q回cM <script>callMethod(l果)<script>的javascript字符?在浏览器执行。哈Q一切就q么单,巧妙?br>
我这里还有DWR中文文. http://www.tkk7.com/Files/LiuTing/DWR中文文.rar







LiuTing 2007-05-20 12:45 发表评论
]]>
վ֩ģ壺 ޾Ʒsuvһ88| ŷպٲ| ֻѵAVߵӰ| Ʒһ| Ļһҳ| ƷŮþþ| ͵ľƷ| ¾þþþa| 벻޳?Ƭ| ˳Ƶۿ | Ʒ鶹123| ȫƵѹۿ߿| ɫͼС˵ר| aëƬƵѹۿӰԺ| þþƷAV鶹| 99re6ƵƷ| ޹һ| վɫƵѹۿ| fuli߹ۿ| ƷСƵ| ѸԴվƵ| ɫһëƬ| þþþAVרվ| ޵Ƶѹۿ1000| ˿wwwѸ| һۿƵ߲ | ߹ۿѹۿ| ޾ƷŮþþ | ߹ۿƵվɫ| AVһ| 2019Ļ6| ۺavһ | 99߹ۿ| 77777ҹ| ޹˾þһҳ| Ů߲վ| һҹ| һƬѲŵӰ| ҵijdzӪѹۿ| Ƶѹۿ| һƬѿ|