文档章节

JSP + AjaxAnywhere页面开发规范

_凤求凰_
 _凤求凰_
发布于 2011/07/15 08:53
字数 1098
阅读 1.3K
收藏 4

阿里云携手百名商业领袖、技术大咖,带您一探行进中的数字新基建!>>>

JSP + AjaxAnywhere页面开发

1. 开发工具

       AJAX框架:AjaxAnywhere,最新版本1.1.0.6 , http://ajaxanywhere.sourceforge.net/

      2. 开发规范

2.1 概述

“JSP + AjaxAnywhere” 的结合开发,是为了在普通JSP应用中增加AJAX特性,从而改善用户体验,提高应用性能。

       AjaxAnywhere能于JSP很好结合。对于一个普通JSP 应用,要使用 AjaxAnywhere框架在一些特定功能中增加AJAX特性,只需对JSP页面做简单修改,基本不需要进行Javascript 编程,个别场合只需要按规范添加少量Javascript 代码。

       AjaxAnywhere + JSP 的结合与 AjaxAnywhere +JSF 的结合,在原理上是一致的, 但在使用上略有不同。对于二者的不同,可对照《JSF+Ajax页面开发规范》,根据具体情形的不同,可以选择不同的组合进行开发。这里的JSP指的是不包括JSF内容的简单JSP页面。

 

2.2 规范

对于一个普通JSP页面,需要做以下修改。

2.2.1引入ajaxanywheretaglib

<%@ taglib uri="http://ajaxanywhere.sourceforge.net/" prefix="aa" %>                  

 依照习惯 prefix定义为aa.

2.2.2 引入ajaxanywhere客户端脚本(Javascript

                    <script src="js/aa/aa.js"></script>                              

 

说明:aa.js AjaxAnywhere框架的客户端脚本库,对AJAX 特性进行了很好的封装。开发人员无须直接操作XmlHttpRequest

AjaxAnywhere客户端的核心类为 AjaxAnywhere ,其每一个实例代表一个AJAX处理器。aa.js中定义了一个缺省的AjaxAnywhere实例, 实例名为ajaxAnywhere iddefault

2.2.3 form 属性的修改

如果要对form提交增加AJAX支持,需要注意。在form标签中,必须包含action属性,但可以为空,name属性,method属性为post,然后按正常方式书写表单项目。

例如:

<form action="clientSide.jsp" name="main" method="post">           

2.2.4定义ajax zone(动态更新区域)

      需要单独刷新的部分在jsp页面中使用tag:

             <aa:zone name="<zoneName>"> </aa:zone>                          

括住需要更新的范围。

 例如:

<aa:zone name="zone1">

        <font color="white">     <br>Test refresh zone<br>

              <%=new Date()%><br>

        </font>

</aa:zone>

<aa:zone/> 标记是用于在JSP页面中增加AJAX特性支持,要对JSF组件增加AJAX 特性支持,需要使用 <aa:zoneJSF/> 标记。

namezone Tag的必填属性,用于在一个JSP页面内唯一标识一个动态更新的区域。 一个页面可定义多个zone区域。

该标识的命名请遵循java变量命名规则。

 

2.2.5 修改表单的提交行为

表单的提交部分有两种,根据后台需要可以不同对待。

1 通过get 方式发出的请求采用AjaxAnywhere.getAJAX()方法

例如:<input type="button" value="click me" onclick="ajaxAnywhere.getAJAX();">

2)  通过post方式发出的请求请采用 ajaxAnywhere.submitAJAX() 方法

例如:<input type="button" value="click me" onclick="ajaxAnywhere.submitAJAX();">

 

表单中的“提交”按钮,type需定义为 button ajaxAnywhere.getAJAX()和ajaxAnywhere.submitAJAX() 会自动处理表单数据的提交。作为与server交互的所需识别的信息头,路径(action,数据由ajaxanywhere自行包装。

作为server端反馈部分,反馈的数据为xml类型,AjaxAnywhere客户端处理器最终将替换<aa:zone name="<zoneName>"></aa:zone> 中的全部内容,开发人员不需要进行其他编码处理。

 

 

另外一种方式是, 从外部给按钮增加 Ajax异步提交的效果:

<SCRIPT language="javascript" type="text/javascript">     

        //ajaxAnywhere.formName="myform";  如果页面只有一个Form此行可以不要

        ajaxAnywhere.substituteFormSubmitFunction();

</SCRIPT>   

例如, 为表单中所有 submit image类型按钮增加Ajax 特性:

 

例如, 为表单中特定按钮增加Ajax 特性

<SCRIPT language="javascript" type="text/javascript">     

        ajaxAnywhere.formName="myform";  //如果页面只有一个Form此行可以不要

        ajaxAnywhere.substituteFormSubmitFunction();

        

        var ajaxButtons = new Array();

        ajaxButtons[0] = document.getElementById("btn_new");

        ajaxButtons[1] = document.getElementById("btn_run");   

        

        ajaxAnywhere.substituteSubmitButtonsBehavior(true, ajaxButtons);

2.2.6 服务器端代码:

2.2.6.1    指定Ajax 刷新区域

          要刷新<aa:zone/> 区域, 必须在服务器端代码中指定要刷新的区域. 一般有两种方式: JSP中指定, 和在 Java代码中指定:

       JSP中指定, 例如:

<%

    if(AAUtils.isAjaxRequest(request)) AAUtils.addZonesToRefresh(request,"zoneResList");

%>

 

 

 

 


一般放在JSP的顶部.

     一般放在JSP的顶部.

    

       Java代码中指定, 通常是Web框架的控制器(Controller)代码中, Struts中是XXXAction类的方法中, JSF 中是 XXXFace 类的方法中. 例如:

protected ActionForward doCreate(ActionMapping actionMapping,

                     ActionForm actionForm, HttpServletRequest request,

                     HttpServletResponse response, User user) throws Exception {

              ……….. 

              request.setAttribute(WebConstant.PAGE_ATTRIBUTE_MESSAGE, "保存成功!");

              request.setAttribute(CMSConstant.BUTTON_SAVE_DISABLED, "TRUE"); // 屏蔽保存按钮

              /* 刷新按钮区域 */

              if (AAUtils.isAjaxRequest(request)) {

                     AAUtils.addZonesToRefresh(request, "zoneButton");

              }

              return (actionMapping.findForward("new"));

 

2.2.6.2     

© 著作权归作者所有

_凤求凰_

_凤求凰_

粉丝 36
博文 26
码字总数 16091
作品 1
海淀
架构师
私信 提问
加载中

评论(0)

action获取不到参数

项目是有webservice,tiles,ajaxanywhere,struts2,ibties,spring等 web.xml: myorder index.jsp /axis2-web/index.jsp AjaxAnywhere org.ajaxanywhere.AAFilter AjaxAnywhere *.do org.a......

二号铺
2013/08/04
544
0
本人java菜鸟一枚,今天刚写好求职简历,专业技能怎么能写的有层次感呢!~谢谢了

1. 熟练掌握J2SE的基本语法规则,掌握冒泡,二分查找,双向链表,二叉树,生产者和消费者,终止,启动线程,文件复制等基本算法。 2. 熟练使用html、css会使用javaScript控制css样式和属性。...

祥林会跟你远走高飞
2012/10/04
9.2K
14
求兼职,本人目前javaWeb方向,爱好广泛。

RT,找兼职,钱无所谓。 下面是我找到目前这份工作的简历,欢迎骚扰。 • 扎实的JavaSE基础。良好的编程习惯。能够处理Java里面有一点复杂的的算法。(2、3年前SCJP 58分没过) • 熟练掌握 ...

Z_wenuw
2013/05/27
1.1K
13
9.java web的发展 javaweb是什么 J2EE发展历史 规范 J2EE是什么 发展背景 组件标准 J2EE好处作用 Servlet 含义 本质 发展 java在web中的发展 servlet工作流程 java 开发web项目发展 javaBean jsp

javaweb 本质上来说就是使用java 语言来解决企业web应用中一系列技术体系与规范; jdk1.2 playground 此版本中把java技术体系拆分为三个方向 J2SE J2EE J2ME 这个大家都知道 其中之一的J2EE,...

noteless
2018/06/29
0
0
J2EE平台简介 

1.1.1 J2EE规范 J2EE(Java 2 Platform,Enterprise Edition)是SUN公司定义的一个开发分布式企业级应用的规范。它提供了一个多层次的分布式应用模型和一系列开发技术规范。多层次分布式应用模...

曾赛
2009/09/06
417
0

没有更多内容

加载失败,请刷新页面

加载更多

web前端入门知识大全:系统路线,各类要点解析

一、WEB前端是什么? 使用HTML/CSS/JS以及更多的框架技术,编写网站页面、App应用、小程序、2D&3D游戏、Web VR&AR等应用,通过内容设计、交互动画、数据操作构建项目与用户的交互界面。前端开...

梦想编程
14分钟前
11
0
一个软件测试7年的程序员,讲述自己两年突破瓶颈的经验,关注这些能让你少走弯路。

突破自己的技术瓶颈并不是一蹴而就,还是需要看清楚一些东西,这里也有一些经验和见解跟大家分享一下。同样是职场人士,我也有我的经历和故事。在工作期间,我有过2年加薪7次的小小“战绩”(...

爱码小哥
23分钟前
8
0
ReentrantLock 读写锁

写写共享 读写互斥 写写互斥 适合读多的业务 提高效率 import java.util.concurrent.locks.ReentrantReadWriteLock;import java.util.concurrent.locks.ReentrantReadWriteLock.ReadLock;......

Joker上上签
25分钟前
13
0
IM即时通讯 时间处理1

function formatDate(now) { let date = new Date(now); let Y = date.getFullYear() + '-'; let M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getM......

lsy999
26分钟前
9
0
rust tokio mpsc 异步发送数据

启动两个异步任务,一个阻塞在键盘输入。一个间歇的读取通道,有数据就输出。在快速输入的时候会卡住,因为 mpsc 的 buffer 设置为了 5。 代码如下: use std::io;use tokio::task;use to...

Anunakee
26分钟前
16
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部