亚洲自国产拍揄拍,丝袜熟女国偷自产中文字幕亚洲,鲁死你资源站亚洲avhttp://m.tkk7.com/patterns/category/8263.html離離原上草,一歲一枯榮。野火燒不盡,春風(fēng)吹又生。 zh-cnTue, 27 Feb 2007 13:34:51 GMTTue, 27 Feb 2007 13:34:51 GMT60prototype.js + util.js使ajax更加簡(jiǎn)單透明http://m.tkk7.com/patterns/archive/2006/05/14/prototype_util_ajax.html野草野草Sun, 14 May 2006 13:29:00 GMThttp://m.tkk7.com/patterns/archive/2006/05/14/prototype_util_ajax.htmlhttp://m.tkk7.com/patterns/comments/46130.htmlhttp://m.tkk7.com/patterns/archive/2006/05/14/prototype_util_ajax.html#Feedback0http://m.tkk7.com/patterns/comments/commentRss/46130.htmlhttp://m.tkk7.com/patterns/services/trackbacks/46130.html 近一段時(shí)間,學(xué)習(xí)ajax的應(yīng)用,接觸了dwr框架和AjaxTags。總體覺(jué)得dwr使用配置比較復(fù)雜,不太透明,使人有一種不太放心的感覺(jué),且對(duì)struts的支持不夠好。AjaxTags的使用具有頁(yè)面元素的針對(duì)性,不夠自由。故此我想將prototype.js和dwr的util.js結(jié)合起來(lái),使我們的ajax應(yīng)用更加透明和簡(jiǎn)單。

?這樣組合的優(yōu)勢(shì)?

1、? 只是增加了兩個(gè)js文件和處理你頁(yè)面的js,這些東西對(duì)你是透明的,很簡(jiǎn)單。

2、? 不影響服務(wù)器端的架構(gòu),不管你是只使用struts,還是struts + spring + hibernate。


服務(wù)端向客戶端提供了什么?

1、? 簡(jiǎn)單對(duì)象

String、int、Date等類型的單一數(shù)據(jù),返回給客戶端顯示都是字符串。

2、? 復(fù)雜對(duì)象

用戶自定義POJO對(duì)象。

3、? 列表對(duì)象

List對(duì)象,里面放的是同一POJO對(duì)象。

客戶端可以解析什么?

1、? 簡(jiǎn)單對(duì)象沒(méi)有問(wèn)題。

2、? 復(fù)雜對(duì)象可以使用類似于map對(duì)象來(lái)代替,例如:

public class Person {

??? private int id;

?

??? private String name;

?

??? private String gender;

?

??? private int age;

?

??? public void setId(int id) {

??????? this.id = id;

??? }

?

??? public String getName() {

??????? return name;

}

。。。

}

可使用如下形式來(lái)表示:

var person = { id:'001', name:'test1', gender:'男', age:'15' };

3、? 列表對(duì)象,可以使用array對(duì)象中放置map對(duì)象表示,例如:

var people =[{ id:'001', name:'test1', gender:'男', age:'15' },{ id:'002', name:'test2', gender:'女', age:'13' } ]

客戶端怎么解析?

這時(shí)就可以發(fā)揮util.js的功能了,在dwr網(wǎng)站上可以詳見(jiàn)。

ajax在哪里?

ajax的應(yīng)用在prototype.js中,它針對(duì)ajax提供了好多方法,詳細(xì)可見(jiàn)prototype開(kāi)發(fā)筆記

struts怎么返回?

我想代碼你一看就明白:

public ActionForward excute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {

??? try {

??????? String text = null;

?

??????? // 用戶登錄名

??????? String logonName = request.getParameter("logonName");

???????

??????? logonName = StringUtil.convertEncoding(logonName,"ISO8859_1");

?

??????? // 到數(shù)據(jù)庫(kù)中進(jìn)行檢驗(yàn)...

??????? System.out.println("logonName:" + logonName);

?

??????? // 該用戶已經(jīng)存在

??????? text = logonName;

?

??????? // 將結(jié)果返回頁(yè)面

??????? response.setContentType("text/xml; charset=UTF-8");

??????? response.setHeader("Cache-Control", "no-cache");

??????? PrintWriter pw = response.getWriter();

??????? pw.write(text);

??????? pw.close();

???????

??? } catch (Exception e) {

??????? e.printStackTrace();

?? ?}

???????

??? //注意

??? return null;

}

到底怎么用?

1、? 客戶端使用get方式發(fā)送數(shù)據(jù),如果要發(fā)送的是form數(shù)據(jù)可以使用prototype.js中的方法生成參數(shù),例如:var pars = Form.serialize(document.all.personForm)。代碼片斷如下:

/*

增加人員

*/

function writePerson() {

??? var url = 'ajax.do?method=showTableRows';

? var pars = Form.serialize(document.all.personForm);

?

? ?? new Ajax.Request(

????? url,

????? {method: 'get', parameters: pars, onComplete: personResult}

? );

}

?

function personResult(result){

??? fillTable(eval(result.responseText));

}

2、? 服務(wù)器端的action接受數(shù)據(jù)可以使用ActionForm(ActionServlet會(huì)自動(dòng)封裝數(shù)據(jù)字串的),也可以使用:String personId = request.getParameter("personId")這樣的方法單獨(dú)得到數(shù)據(jù)。

3、? 在服務(wù)器端使用AjaxUtil(我寫的一個(gè)工具類),將結(jié)果轉(zhuǎn)變成map或array,再返回給客戶端。

import java.lang.reflect.Field;

import java.lang.reflect.InvocationTargetException;

import java.util.List;

?

import org.apache.commons.beanutils.BeanUtils;

?

public class AjaxUtil {

??? /**

???? * 將list結(jié)構(gòu)轉(zhuǎn)變成js的array結(jié)構(gòu),要求list中包含的是model

???? * 例如:[{id:'1001',name:'test1'},{id:'1002',name:'test2'},{id:'1003',name:'test3'}]

???? *

???? * @param list

???? *??????????? List結(jié)構(gòu)

???? * @return js的array結(jié)構(gòu)

???? *

???? * @throws IllegalAccessException

???? * @throws InvocationTargetException

???? * @throws NoSuchMethodException

???? */

??? public static String list2StrArray(List list) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException {

??????? StringBuffer strMap = new StringBuffer();

?

??????? strMap.append("[");

??????? int listSize = list.size();

??????? for (int i = 0; i < listSize; i++) {

??????????? Object obj = list.get(i);

?

??????????? if (i != listSize - 1)

?? ?????????????strMap.append(model2StrMap(obj)).append(",");

??????????? else

??????????????? strMap.append(model2StrMap(obj));

??????? }

??????? strMap.append("]");

?

??????? return strMap.toString();

??? }

?

??? /**

???? * 將model的結(jié)構(gòu)轉(zhuǎn)變成js的map結(jié)構(gòu)

???? * 例如:{id:'1001',name:'test'}

???? *

???? * @param obj

???? *??????????? 任一對(duì)象

???? * @return js的map結(jié)構(gòu)

???? *

???? * @throws IllegalAccessException

???? * @throws InvocationTargetException

???? * @throws NoSuchMethodException

???? */

??? public static String model2StrMap(Object obj) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException {

??????? StringBuffer strMap = new StringBuffer();

?

??????? // 獲得model的屬性字段

??????? Class clazz = obj.getClass();

??????? Field[] fields = clazz.getDeclaredFields();

?

??????? // 取出mode的屬性值

??????? strMap.append("{");

??????? for (int i = 0; i < fields.length; i++) {

??????????? String fieldName = fields[i].getName();

??????????? String fieldValue = BeanUtils.getProperty(obj, fieldName);

?

??????????? if (i != fields.length - 1)

??????????????? strMap.append(fieldName + ":'" + fieldValue + "',");

??????????? else

??????????????? strMap.append(fieldName + ":'" + fieldValue + "'");

??????? }

??????? strMap.append("}");

?

??????? return strMap.toString();

??? }

?

}


4、? 客戶端得到map或array后,使用dwr的util.js提供的方法向頁(yè)面元素填充數(shù)據(jù)。

例程下載

simpleAjaxDemo



野草 2006-05-14 21:29 發(fā)表評(píng)論
]]>
在DWR中調(diào)用Http Servlet 對(duì)象http://m.tkk7.com/patterns/archive/2006/04/07/dwr_access_servletobjects.html野草野草Fri, 07 Apr 2006 14:09:00 GMThttp://m.tkk7.com/patterns/archive/2006/04/07/dwr_access_servletobjects.htmlhttp://m.tkk7.com/patterns/comments/39926.htmlhttp://m.tkk7.com/patterns/archive/2006/04/07/dwr_access_servletobjects.html#Feedback0http://m.tkk7.com/patterns/comments/commentRss/39926.htmlhttp://m.tkk7.com/patterns/services/trackbacks/39926.html 我們?cè)趯?shí)際的 web 應(yīng)用開(kāi)發(fā)過(guò)程中,在用戶登錄后會(huì)向 session 中塞入一些信息(例如用戶信息,菜單信息等),在頁(yè)面提交后,會(huì)從 session 中取出這些信息,拼成完整的業(yè)務(wù)記錄,保存到數(shù)據(jù)庫(kù)中。此時(shí)就要求 DWR 可以與 Servlet 對(duì)象通信。

其實(shí) DWR 已經(jīng)考慮好了,在 DWR1.1 中可以利用 uk.ltd.getahead.dwr.WebContext uk.ltd.getahead.dwr.WebContextFactory 來(lái)和 Http Servlet 的標(biāo)準(zhǔn)對(duì)象進(jìn)行通信,包括:

l???????? HttpServletRequest

l???????? HttpServletResponse

l???????? HttpSession

l???????? ServletContext

l???????? ServletConfig

?????? 具體的使用方法如下:

import javax.servlet.http.HttpServletRequest;

import uk.ltd.getahead.dwr.WebContext;

import uk.ltd.getahead.dwr.WebContextFactory;

?

///

WebContext ctx = WebContextFactory.get();

HttpServletRequest req = ctx.getHttpServletRequest();

?????? WebContext 是使用 ThreadLocal 保存的,你可以看一下 uk.ltd.getahead.dwr.impl.DefaultWebContextBuilder 源碼,所以可以在任何地方使用它,例如在上一篇的 demo 中進(jìn)行測(cè)試如下:

index.html 頭部增加如下代碼并改名為 index.jsp

<%@ page contentType="text/html; charset=GBK" %>

?

<%

System.out.println("This is DWR servlet object!");

?

session.setAttribute("dwr","love dwr");

%>

修改 MessageDao.java 的代碼如下

package test.dwr;

?

import javax.servlet.http.HttpServletRequest;

?

import uk.ltd.getahead.dwr.WebContext;

import uk.ltd.getahead.dwr.WebContextFactory;

?

public class MessageDao {

??? public Message save(Message message) {

?

??????? WebContext ctx = WebContextFactory.get();

??????? HttpServletRequest req = ctx.getHttpServletRequest();

???????

?

?????? ?System.out.println("========HttpServletRequest Begin=======");

??????? System.out.println("req:" + req.getRemoteHost());

??????? System.out.println("req-session:" + req.getSession().getAttribute("dwr"));

??????? System.out.println("text:" + req.getParameter("text"));

??????? System.out.println("from:" + req.getParameter("from"));

??????? System.out.println("=========HttpServletRequest End========");

?

??????? System.out.println("========Lucky DWR Begin=======");

??????? System.out.println("text:" + message.getText());

??????? System.out.println("from:" + message.getFrom());

??????? System.out.println("=========Lucky DWR End========");

?

??????? return message;

??? }

?

??? public Message get() {

??????? return new Message("This is the first dwr demo!", "test");

??? }

}

?



野草 2006-04-07 22:09 發(fā)表評(píng)論
]]>
DWR使得Java中的AJAX變得簡(jiǎn)單http://m.tkk7.com/patterns/archive/2006/04/02/first_dwr_demo.html野草野草Sun, 02 Apr 2006 12:41:00 GMThttp://m.tkk7.com/patterns/archive/2006/04/02/first_dwr_demo.htmlhttp://m.tkk7.com/patterns/comments/38766.htmlhttp://m.tkk7.com/patterns/archive/2006/04/02/first_dwr_demo.html#Feedback1http://m.tkk7.com/patterns/comments/commentRss/38766.htmlhttp://m.tkk7.com/patterns/services/trackbacks/38766.html閱讀全文

野草 2006-04-02 20:41 發(fā)表評(píng)論
]]>
在Struts中使用AjaxTags解決連動(dòng)問(wèn)題http://m.tkk7.com/patterns/archive/2006/03/08/strutsAjaxLinkage.html野草野草Wed, 08 Mar 2006 13:12:00 GMThttp://m.tkk7.com/patterns/archive/2006/03/08/strutsAjaxLinkage.htmlhttp://m.tkk7.com/patterns/comments/34354.htmlhttp://m.tkk7.com/patterns/archive/2006/03/08/strutsAjaxLinkage.html#Feedback3http://m.tkk7.com/patterns/comments/commentRss/34354.htmlhttp://m.tkk7.com/patterns/services/trackbacks/34354.html閱讀全文

野草 2006-03-08 21:12 發(fā)表評(píng)論
]]>
主站蜘蛛池模板: 亚洲人成色在线观看| 产传媒61国产免费| 亚洲AV无码一区二区三区久久精品 | 黄色免费网址大全| 国产在线精品一区免费香蕉| 国产乱码免费卡1卡二卡3卡| 中文字幕亚洲乱码熟女一区二区| 亚洲一区免费视频| 中国在线观看免费的www| 美女视频黄a视频全免费| 亚洲老妈激情一区二区三区| 亚洲熟妇无码av另类vr影视| 久久国产精品一区免费下载| 亚洲AV无码不卡在线观看下载| 亚洲人成激情在线播放| 国产成人AV免费观看| 国产免费变态视频网址网站| 亚洲色图综合网站| 嫩草在线视频www免费看| 国产亚洲综合久久系列| 久久ww精品w免费人成| 国产亚洲色婷婷久久99精品| 免费h视频在线观看| 老司机亚洲精品影视www| 九九精品国产亚洲AV日韩| 一二三四在线播放免费观看中文版视频 | 亚洲日韩在线中文字幕第一页| 亚洲熟妇无码av另类vr影视| 免费a级毛片永久免费| 亚洲情A成黄在线观看动漫软件 | 七次郎成人免费线路视频| 成人特黄a级毛片免费视频| 亚洲综合激情六月婷婷在线观看| 成人自慰女黄网站免费大全| 亚洲成熟xxxxx电影| 久久精品无码精品免费专区| 亚洲av乱码一区二区三区| 亚洲国产成人久久综合一区77 | 69视频免费观看l| 亚洲AV成人无码久久WWW| 精品亚洲综合在线第一区|