⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 javaeye技术网站.htm

📁 几个运用了DWR框架编写的AJAX代码,
💻 HTM
📖 第 1 页 / 共 5 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<!-- saved from url=(0059)http://zhangljerry.javaeye.com/category/9989?show_full=true -->
<HTML dir=ltr xml:lang="zh-CN" 
xmlns="http://www.w3.org/1999/xhtml"><HEAD><TITLE>zhangljerry - JavaEye技术网站</TITLE>
<META http-equiv=Content-Type content="text/html; charset=UTF-8">
<META content="" name=description>
<META content="zhangljerry zhangljerry" name=keywords><LINK 
href="/images/favicon.ico" type=image/x-icon rel="shortcut icon"><LINK 
title=zhangljerry href="/rss" type=application/rss+xml rel=alternate><LINK 
media=screen href="JavaEye技术网站_files/blog.css" type=text/css 
rel=Stylesheet><LINK media=screen href="JavaEye技术网站_files/purple.css" 
type=text/css rel=Stylesheet>
<SCRIPT src="JavaEye技术网站_files/application.js" type=text/javascript></SCRIPT>

<STYLE>DIV#main {
	BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; PADDING-BOTTOM: 0px; WIDTH: 740px; PADDING-TOP: 0px; BACKGROUND-COLOR: transparent; BORDER-RIGHT-WIDTH: 0px
}
</STYLE>

<META content="MSHTML 6.00.6000.16640" name=GENERATOR></HEAD>
<BODY>
<DIV id=header>
<DIV id=site_logo><A href="http://www.javaeye.com/blogs"><IMG 
title=JavaEye-最棒的软件开发交流社区 alt=JavaEye3.0 
src="JavaEye技术网站_files/logo_small.gif"></A></DIV>
<UL id=user_nav>
  <LI class=last><A href="http://zhangljerry.javaeye.com/index/help">帮助</A> 
</LI>
  <LI><A href="http://zhangljerry.javaeye.com/search">搜索</A> </LI>
  <LI><A href="http://zhangljerry.javaeye.com/signup">注册</A> </LI>
  <LI><A href="http://zhangljerry.javaeye.com/login">登录</A> </LI>
  <LI class=highlight><SPAN>您还没有登录 !</SPAN> </LI></UL></DIV>
<DIV id=page>
<DIV class=clearfix id=branding>
<DIV id=blog_name>
<H1><A href="http://zhangljerry.javaeye.com/">zhangljerry</A></H1></DIV>
<DIV id=blog_preview></DIV>
<DIV id=blog_domain>永久域名 <A 
href="http://zhangljerry.javaeye.com/">http://zhangljerry.javaeye.com/</A></DIV></DIV>
<DIV class=clearfix id=content>
<DIV id=main>
<DIV class=blog_main>
<DIV class=blog_title>
<H5>2007-06-29</H5>
<DIV class=show_full_flag><A 
href="http://zhangljerry.javaeye.com/category/9989?show_full=false">缩略显示</A></DIV>
<H3><A 
href="http://zhangljerry.javaeye.com/blog/95599">ajax的url编码问题</A></H3></DIV>
<DIV class=blog_content>在进行ajax的post数据提交时,中文的c处理方式是urlencode 
<BR>需要二次的javascript的函数encodeURI() <BR>进行提交 <BR><BR>在服务器的jsp和action处理时需要 
<BR>String dd=request.getParamenter("dd"); <BR>Strin 
s=urlDecoder.decode(dd,"UTF-8"); <BR><BR><BR>对javascript的encodeURI()的二次应用是需要注意的 
</DIV>
<DIV class=blog_bottom>
<UL>
  <LI>18:51 </LI>
  <LI>浏览 (309) </LI>
  <LI><A href="http://zhangljerry.javaeye.com/blog/95599#comments">评论</A> (0) 
  </LI>
  <LI>分类: <A href="http://zhangljerry.javaeye.com/category/9989">web2.0</A> 
</LI></UL></DIV></DIV>
<DIV class=blog_main>
<DIV class=blog_title>
<H5>2007-06-06</H5>
<DIV class=show_full_flag><A 
href="http://zhangljerry.javaeye.com/category/9989?show_full=false">缩略显示</A></DIV>
<H3><A 
href="http://zhangljerry.javaeye.com/blog/87328">Javascript变换表格内容</A></H3></DIV>
<DIV class=blog_content>[code&lt;script language="javascript"&gt; <BR>// 
JavaScript Document <BR>var colorArray = new Array; <BR>colorArray[0] = 
"#0066ff" <BR>colorArray[1] = "#105409" <BR>colorArray[2] = "#9a0000" 
<BR>colorArray[3] = "#9f6b39" <BR>colorArray[4] = "#ffab25" <BR>colorArray[5] = 
"#7665e9" <BR>function chh(){ <BR>var obj = window.event.srcElement; <BR>if 
(obj.tagName != "TD"){ <BR>return; <BR>} <BR>index = obj.cellIndex; <BR>var J = 
obj.id <BR>if (J == index){ <BR>return; <BR>} <BR>for (var i=0; 
i&lt;it.cells.length;i++){ <BR>it.cells[i].style.background = colorArray[i]+" 
url(images/menu.gif)"; <BR>it.cells[i].className = "jjk"; <BR>it.cells[i].id = 
index; <BR>} <BR>obj.className = "jk"; <BR>obj.style.background 
=colorArray[index] <BR><BR>for ( i=0; i&lt;content.tBodies.length;i++){ 
<BR>content.tBodies[i].style.display = "none" <BR>} 
<BR>content.tBodies[index].style.display = "block" 
<BR>content.tBodies[index].style.background=colorArray[index] 
<BR>banner.innerHTML = "&lt;img src=images/"+(index+1)+".jpg width=740 
height=190&gt;" <BR>} <BR>function onload(){ <BR>for (i=0; i&lt;it.cells.length; 
i++){ <BR>it.cells[i].style.background = "#ccc url(images/menu.gif)"; <BR>} 
<BR>it.cells[0].style.background =colorArray[0]; 
<BR>it.cells[0].style.borderLeft = "1px solid #ffffff" <BR>} <BR>&lt;/script&gt; 
<BR><BR>&lt;body onLoad="onload();" &gt; <BR>&lt;table width="100%" border="0" 
cellspacing="0" cellpadding="0"&gt; <BR>&lt;tr&gt; <BR>&lt;td width="740" 
height="190" id="banner" &gt;&lt;img src="images/1.jpg" width="740" 
height="190"&gt;&lt;/td&gt; <BR>&lt;/tr&gt; <BR>&lt;tr align="left"&gt; 
<BR>&lt;td&gt; <BR>&lt;TABLE style="COLOR: white" cellSpacing=0 cellPadding=0 
width=740 border=0&gt; <BR>&lt;TBODY&gt; <BR>&lt;TR id=it onmouseover=chh() &gt; 
<BR>&lt;TD class=jk id=ABCEDFGHIJKLMNOPQRSTUVWXYZ width=123 height=41&gt; » 
&lt;A href="#"&gt;测试一&lt;/A&gt; &lt;/TD&gt; <BR>&lt;TD class=jjk width=123 
height=41&gt; » &lt;A href="#"&gt;测试二&lt;/A&gt;&lt;/TD&gt; <BR>&lt;TD class=jjk 
width=123 height=41&gt; » &lt;A href="#"&gt;测试三&lt;/A&gt; &lt;/TD&gt; <BR>&lt;TD 
class=jjk width=123 height=41&gt; » &lt;A href="#"&gt;测试四&lt;/A&gt; &lt;/TD&gt; 
<BR>&lt;TD class=jjk width=123 height=41&gt; » &lt;A href=""&gt;测试五&lt;/A&gt; 
&lt;/TD&gt; <BR>&lt;/TR&gt; <BR>&lt;/TBODY&gt; <BR>&lt;/TABLE&gt; 
<BR>&lt;/td&gt; <BR>&lt;/tr&gt; <BR>&lt;tr&gt; <BR>&lt;td&gt;&lt;TABLE 
id=content cellSpacing=0 cellPadding=0 width=740&gt; <BR>&lt;TBODY 
style="DISPLAY: block"&gt; <BR>&lt;TR bgColor=#0066ff&gt; <BR>&lt;TD class=tbody 
style="HEIGHT: 80px" width=738&gt;&lt;/TD&gt; <BR>&lt;/TR&gt; <BR>&lt;/TBODY&gt; 
<BR>&lt;TBODY style="DISPLAY: none"&gt; <BR>&lt;TR bgColor=#105409&gt; 
<BR>&lt;TD class=tbody style="HEIGHT: 80px"&gt; &lt;/TD&gt; <BR>&lt;/TR&gt; 
<BR>&lt;/TBODY&gt; <BR>&lt;TBODY style="DISPLAY: none"&gt; <BR>&lt;TR 
bgColor=#9a0000&gt; <BR>&lt;TD class=tbody style="HEIGHT: 80px"&gt; &lt;/TD&gt; 
<BR>&lt;/TR&gt; <BR>&lt;/TBODY&gt; <BR>&lt;TBODY style="DISPLAY: none"&gt; 
<BR>&lt;TR bgColor=#9f6b39&gt; <BR>&lt;TD class=tbody vAlign=top 
align=left&gt;&lt;/TD&gt; <BR>&lt;/TR&gt; <BR>&lt;/TBODY&gt; <BR>&lt;TBODY 
style="DISPLAY: none"&gt; <BR>&lt;TR bgColor=#ffab25&gt; <BR>&lt;TD class=tbody 
vAlign=top&gt; &lt;/TD&gt; <BR>&lt;/TR&gt; <BR>&lt;/TBODY&gt; <BR>&lt;TBODY 
style="DISPLAY: none"&gt; <BR>&lt;/TBODY&gt; <BR>&lt;/TABLE&gt; <BR>&lt;/td&gt; 
<BR>&lt;/tr&gt; <BR>&lt;/table&gt; <BR>[code] </DIV>
<DIV class=blog_bottom>
<UL>
  <LI>11:05 </LI>
  <LI>浏览 (257) </LI>
  <LI><A href="http://zhangljerry.javaeye.com/blog/87328#comments">评论</A> (0) 
  </LI>
  <LI>分类: <A href="http://zhangljerry.javaeye.com/category/9989">web2.0</A> 
</LI></UL></DIV></DIV>
<DIV class=blog_main>
<DIV class=blog_title>
<H5>2007-05-25</H5>
<DIV class=show_full_flag><A 
href="http://zhangljerry.javaeye.com/category/9989?show_full=false">缩略显示</A></DIV>
<H3><A href="http://zhangljerry.javaeye.com/blog/83176">struts 
ajax</A></H3></DIV>
<DIV class=blog_content>转贴请保留作者--简单就好,和出处。谢谢! 
<BR>去年初,正好负责一个医药信息系统的设计开发,架构设计时,采用Struts+JDBC(自定义采用适配器模式封装了HashMap动态VO实现的持久层)。后来ajax热潮兴起,正好系统中有很多地方需要和服务器端交互数据,如采购销售系统中的订单头/订单明细等主从表结构的维护。 
<BR>数据交互过程,我们考虑采用xml来组织数据结构,更新/保存:前台封装需要的xml,通过ajax提交---〉action解析xml 
---〉改造原有的持久层实现xml持久化; <BR>查询时:持久层根据实际需要返回xml,document对象,---〉action 处理 
--〉前台自己封装js库来解析xml,并刷新部分页面。 
<BR><BR>ajax:已经有很多方法实现跨浏览器的方式,这里只介绍最简单的方式,同步模式下提交xmlStr给action(*.do)。 
<BR><BR><BR>代码 <BR>/** <BR>* 将数据同步传递给后台请求url <BR>* @return 返回xmlhttp 响应的信息 <BR>* 
@param-url = '/web/module/xxx.do?p1=YY&amp;p2=RR'; <BR>* @param-xmlStr:xml格式的字符串 
&lt;data&gt;&lt;xpath&gt;&lt;![CDATA[数据信息]]&gt;&lt;/xpath&gt;&lt;/data&gt; <BR>* 
@author zhipingch <BR>* @date 2005-03-17 <BR>*/ <BR>function sendData(urlStr, 
xmlStr) { <BR>var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
<BR>xmlhttp.open("POST", urlStr, false); 
<BR>xmlhttp.setRequestHeader("Content-Type", 
"application/x-www-form-urlencoded"); <BR>if (xmlStr) { 
<BR>xmlhttp.send(xmlStr); <BR>} else { <BR>xmlhttp.send(); <BR>} <BR>return 
xmlhttp.responseXml; <BR>} 
<BR><BR><BR>struts中我们扩展了Action,实现了xmlStr转化成document对象(dom4j),并且完善了转发方式。如 
<BR><BR><BR>引用 <BR><BR>1.DispatchAction 
<BR>以一个Controller响应一组动作绝对是Controller界的真理,Struts的DispatchAction同样可以做到这点。 
<BR><BR><BR><BR>&lt;action path="/admin/user" name="userForm" scope="request" 
parameter="method" validate="false"&gt; <BR>&lt;forward name="list" 
path="/admin/userList.jsp"/&gt; <BR>&lt;/action&gt; 
<BR><BR><BR>其中parameter="method" 
设置了用来指定响应方法名的url参数名为method,即/admin/user.do?method=list 将调用UserAction的public 
ActionForward list(....) 函数。 <BR><BR>public ActionForward unspecified(....) 
函数可以指定不带method方法时的默认方法。 <BR><BR><BR>但是这样需要在url后多传递参数method=list 
;并且action节点配置中的parameter="method" <BR>也没有被充分利用,反而觉得是累赘! 
<BR><BR>因此我们直接在BaseDispatchAction中增加xml字符串解析,并充分利用action节点配置中的parameter="targetMethod" 
,使得转发的时候,action能够直接转发到子类的相应方法中,减少了url参数传递,增强了配置信息可读性,方便团队开发。 
<BR>同样以上述为例,扩展后的配置方式如下: <BR><BR><BR>引用 <BR><BR>&lt;action path="/admin/user" 
scope="request" parameter="list" validate="false"&gt; <BR>&lt;forward 
name="list" path="/admin/userList.jsp"/&gt; <BR>&lt;/action&gt; 
<BR><BR><BR>其中parameter="list" 
设置了用来指定响应url=/admin/user.do的方法名,它将调用UserAction的public ActionForward list(....) 
函数。 <BR>BaseDispatchDocumentAction 的代码如下,它做了三件重要的事情: 
<BR>1、采用dom4j直接解析xml字符串,并返回document,如果没有提交xml数据,或者采用form形式提交的话,返回null; 
<BR>2、采用模版方法处理系统异常,减少了子类中无尽的try{...}catch(){...};其中异常处理部分另作描述(你可以暂时去掉异常处理,实现xml提交和解析,如果你有兴趣,我们可以进一步交流); 
<BR>3、提供了Spring配置Bean的直接调用,虽然她没有注入那么优雅,但是实现了ajax、struts、spring的结合。 
<BR>BaseDispatchDocumentAction 的源码如下: <BR><BR>代码 <BR>package 
com.ufida.haisheng.struts; <BR><BR>import java.io.IOException; <BR>import 
java.io.PrintWriter; <BR>import java.lang.reflect.InvocationTargetException; 
<BR>import java.lang.reflect.Method; <BR>import java.math.BigDecimal; <BR>import 
java.sql.Timestamp; <BR>import java.util.Date; <BR>import java.util.HashMap; 
<BR><BR>import javax.servlet.http.HttpServletRequest; <BR>import 
javax.servlet.http.HttpServletResponse; <BR>import 
javax.servlet.http.HttpSession; <BR><BR>import 
org.apache.commons.beanutils.ConvertUtils; <BR>import 
org.apache.commons.beanutils.converters.BigDecimalConverter; <BR>import 
org.apache.commons.beanutils.converters.ClassConverter; <BR>import 
org.apache.commons.beanutils.converters.IntegerConverter; <BR>import 
org.apache.commons.beanutils.converters.LongConverter; <BR>import 
org.apache.log4j.Logger; <BR>import org.apache.struts.action.Action; <BR>import 
org.apache.struts.action.ActionForm; <BR>import 
org.apache.struts.action.ActionForward; <BR>import 
org.apache.struts.action.ActionMapping; <BR>import 
org.apache.struts.util.MessageResources; <BR>import org.dom4j.Document; 
<BR>import org.dom4j.io.SAXReader; <BR>import org.hibernate.HibernateException; 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -