文档章节

JSP + AjaxAnywhere页面开发规范

老范的自留地
 老范的自留地
发布于 2011/07/15 08:53
字数 1098
阅读 1174
收藏 4
点赞 0
评论 0

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     

© 著作权归作者所有

共有 人打赏支持
老范的自留地

老范的自留地

粉丝 31
博文 44
码字总数 17451
作品 1
北京
架构师
JSP 学习总结---学习笔记

什么是JSP 1)为什么说,Servlet是一个动态Web开发技术呢? Servlet是基于服务端的一种动态交互技术, HttpServletRequest表示客户端到服务端的对象 HttpServletResponse表示服务端到客户端的...

知止内明 ⋅ 04/18 ⋅ 0

tomcat、weblogic、jboss的区别,容器的作用

一、tomcat Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,它是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及...

水墨如丹青 ⋅ 04/13 ⋅ 0

Tomcat,JBoss与JBoss Web

最近接触到应用服务器JBoss,此外JBoss Web与Tomcat也同为web服务器,便查阅资料对三者进行比较,供大家参考。 一、Tomcat Tomcat 服务器是免费开源的Web 应用服务器。支持最新的Servlet 和J...

thinkyoung ⋅ 2014/11/16 ⋅ 0

web项目中web.xml的作用

每个javaEE工程中都有web.xml文件,那么它的作用是什么呢?它是每个web.xml工程都必须的吗? 一个web中可以没有web.xml文件,也就是说,web.xml文件并不是web工程必须的。 web.xml文件是用来...

ChinaHYF ⋅ 04/27 ⋅ 0

JavaWeb开发比较重要的面试题

JavaWeb开发比较重要的面试题 1. 编码转换:怎样将GB2312编码的字符串转换为ISO-8859-1编码的字符串? 答:示例代码如下: String s1=”你好”; String s2=new String(s1.getBytes(“GB2312”...

xj_9264 ⋅ 05/06 ⋅ 0

servlet跳转页面的两种方式

sendRedirect和forward 都不会改变session的值和状态; 都可以在URL后面传递参数; request是客户端的对象,response是服务端的对象, response在跳转的时候,必须遵循浏览器地址规范; send...

Ethel_oo ⋅ 04/23 ⋅ 0

JavaWeb12-HTML篇笔记(二)

Ø 为什么学习JSTL: JSTL和EL结合 替换页面中<%%> Ø JSTL版本: JSTL1.0 :不支持EL表达式. JSTL1.1 和 1.2 :支持EL表达式. Ø JSTL的标签库:包含了五类标签. core(核心标签),fmt(国际化标签)...

我是小谷粒 ⋅ 05/28 ⋅ 0

Java Web(一) Servlet详解!!

一、什么是servlet?     处理请求和发送响应的过程是由一种叫做Servlet的程序来完成的,并且Servlet是为了解决实现动态页面而衍生的东西。理解这个的前提是了解一些http协议的东西,并且...

architect刘源源 ⋅ 05/08 ⋅ 0

JavaWeb09-HTML篇笔记(二)

1.1 案例一:使用Servlet完成一个用户登录的案例.1.1.1 需求: 在网站的首页上,登录的链接,点击登录的链接,可以跳转到登录的页面.在登录的页面中输入用户名和密码点击登录的案例.完成登录的功...

我是小谷粒 ⋅ 05/21 ⋅ 0

J2EE进阶(二十四)JBoss Web和 Tomcat的区别

J2EE进阶(二十四)JBoss Web和 Tomcat的区别 在Web2.0的浪潮中,各种页面技术和框架不断涌现,为服务器端的基础架构提出了更高的稳定性和可扩展性的要求。近年来,作为开源中间件的全球领导者...

sunhuaqiang1 ⋅ 05/27 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Redis 单线程 为何却需要事务处理并发问题

Redis是单线程处理,也就是命令会顺序执行。那么为什么会存在并发问题呢? 个人理解是,虽然redis是单线程,但是可以同时有多个客户端访问,每个客户端会有 一个线程。客户端访问之间存在竞争...

码代码的小司机 ⋅ 44分钟前 ⋅ 0

到底会改名吗?微软GVFS 改名之争

微软去年透露了 Git Virtual File System(GVFS)项目,GVFS 是 Git 版本控制系统的一个开源插件,允许 Git 处理 TB 规模的代码库,比如 270 GB 的 Windows 代码库。该项目公布之初就引发了争...

linux-tao ⋅ 54分钟前 ⋅ 0

笔试题之Java基础部分【简】【二】

1.静态变量和实例变量的区别 在语法定义上的区别:静态变量前要加static关键字,而实例变量前则不加。在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变...

anlve ⋅ 今天 ⋅ 0

Lombok简单介绍及使用

官网 通过简单注解来精简代码达到消除冗长代码的目的 优点 提高编程效率 使代码更简洁 消除冗长代码 避免修改字段名字时忘记修改方法名 4.idea中安装lombnok pom.xml引入 <dependency> <grou...

to_ln ⋅ 今天 ⋅ 0

【转】JS浮点数运算Bug的解决办法

37.5*5.5=206.08 (JS算出来是这样的一个结果,我四舍五入取两位小数) 我先怀疑是四舍五入的问题,就直接用JS算了一个结果为:206.08499999999998 怎么会这样,两个只有一位小数的数字相乘,怎...

NickSoki ⋅ 今天 ⋅ 0

table eg

user_id user_name full_name 1 zhangsan 张三 2 lisi 李四 `` ™ [========] 2018-06-18 09:42:06 星期一½ gdsgagagagdsgasgagadsgdasgagsa...

qwfys ⋅ 今天 ⋅ 0

一个有趣的Java问题

先来看看源码: public class TestDemo { public static void main(String[] args) { Integer a = 10; Integer b = 20; swap(a, b); System.out......

linxyz ⋅ 今天 ⋅ 0

十五周二次课

十五周二次课 17.1mysql主从介绍 17.2准备工作 17.3配置主 17.4配置从 17.5测试主从同步 17.1mysql主从介绍 MySQL主从介绍 MySQL主从又叫做Replication、AB复制。简单讲就是A和B两台机器做主...

河图再现 ⋅ 今天 ⋅ 0

docker安装snmp rrdtool环境

以Ubuntu16:04作为基础版本 docker pull ubuntu:16.04 启动一个容器 docker run -d -i -t --name flow_mete ubuntu:16.04 bash 进入容器 docker exec -it flow_mete bash cd ~ 安装基本软件 ......

messud4312 ⋅ 今天 ⋅ 0

OSChina 周一乱弹 —— 快别开心了,你还没有女友呢。

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子 :分享吴彤的单曲《好春光》 《好春光》- 吴彤 手机党少年们想听歌,请使劲儿戳(这里) @clouddyy :小萝莉街上乱跑,误把我认错成...

小小编辑 ⋅ 今天 ⋅ 9

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部