为什么80%的码农都做不了架构师?>>>

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引入ajaxanywhere的taglib

<%@ 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, id为default。

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/> 标记。

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

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

2.2.5 修改表单的提交行为

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

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

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

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

例如:<input type="button" value="click me" οnclick="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

转载于:https://my.oschina.net/joeyjava/blog/28262

JSP + AjaxAnywhere页面开发规范相关推荐

  1. h5 默认为移动端页面_20条移动前端H5页面开发规范,h5开发必看文档

    这是根据腾讯最新公布的<移动页面用户行为报告>来给大家分享的关于移动端H5页面开发一些20条规范和准则.里面大概包含了16种用户操作习惯和注意点. 下面25学堂跟大家先分享一张关于2016 ...

  2. 前端开发工程师 - 04.页面架构 - CSS Reset 布局解决方案 响应式 页面优化 规范与模块化...

    04.页面架构 第1章--CSS Reset 第2章--布局解决方案 居中布局 课堂交流区 水平列表的底部对齐 如图所示,一个水平排列的列表,每项高度都未知,但要求底部对齐,有哪些方法可以解决呢? & ...

  3. Jsp新闻项目(规范访问分页之模糊查询主题分页查询[客户页面])

    目录 一.规范访问 二.模糊查询分页 1.代码分析 上一章我们有讲到将伪表查询代替之前的模糊查询来进行分页,今天我们要在伪表查询的基础上加上模糊查询,也就是说在模糊查询时也可以分页了 三.主题分页查询 ...

  4. 转载:javaweb学习总结(二十三)——jsp自定义标签开发入门

    javaweb学习总结(二十三)--jsp自定义标签开发入门 转自:http://www.cnblogs.com/xdp-gacl/p/3916734.html 一.自定义标签的作用 自定义标签主要用 ...

  5. 来公司必须了解的编码开发规范

    编码开发规范 目  录 1.引言... 1 1.1  编写目的... 1 1.2  使用范围... 1 1.3  术语与缩略语... 1 1.4  参考资料... 2 2............... ...

  6. Web 前端开发规范手册

    Web 前端开发规范手册 一.规范目的 1.1 概述 二.文件规范 2.1 文件命名规则 2.2 文件存放位置规范 2.3 CSS 书写规范 基本原则: 注意细则: 命名规则: id的命名: 基本样式 ...

  7. X5的UI部分和传统Web页面开发的差异

    http://doc.wex5.com/different-with-std-web-ui/#1 X5的UI部分和传统Web页面开发的差异 WeX5是跨端移动开发框架,BeX5是基于WeX5的企业快速 ...

  8. 阿里开发规范(精简版)

    Java开发规范 命名 [规范]类名使用UpperCamelCase 风格,必须遵从驼峰形式,但以下情形例外: ( 领域模型的相关命名 )DO / BO / DTO / VO 等. 正例: Marco ...

  9. Java开发规范整理

    Java开发规范整理 (参考<Java开发手册嵩山版>) 文章目录 Java开发规范整理 一.编程规约 (一)命名 (二)常量定义 (三)代码格式 (四)OOP面向对象程序设计 (五)时间 ...

  10. Java开发规范及注意事项

    文章目录 Java开发规范及注意事项 编程规约 异常日志违约 单元测试规约 工程结构规约 数据库规约 Java开发规范及注意事项 编程规约 POJO类中布尔类型的变量,都不要加is前缀,否则部分框架解 ...

最新文章

  1. Java注解---通俗易懂
  2. Github上 10 个超好看可视化面板
  3. vue项目token放在哪里_vue开发--生成token并保存到本地存储中
  4. 02.Android之IPC机制问题
  5. Mock.js 和Node.js详细讲解
  6. camel 使用_使用Camel从WildFly 8向WebLogic 12发送JMS消息
  7. app mvc框架_Google App Engine上的Spring MVC和REST
  8. 选择大于努力!0基础学好C语言编程,首先要掌握的是什么?
  9. 微波雷达人体感应技术,智能镜子感应雷达模块应用,让生活更有趣
  10. 【rfc5506】RTCP mode
  11. 机器学习入门(二)数据分析处理库pandas
  12. STM8S003F3和N76E003功能引脚对比
  13. 大学计算机Excel咨询表,大学计算机(二)第十一讲 Excel图表分析
  14. 华为推送 坑点 自定义intent
  15. 快递物流信息复打接口API代码-快递100
  16. 机械键盘知识漫谈(一)- 初级篇
  17. linux dd 备份uboot,刷机前如何备份uboot、分区、编程器固件?路由器刷机备份命令使用方法...
  18. 常见问题:try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候执行?
  19. java学生通讯录_简单实现Java通讯录系统
  20. CodeBlocks使用方法

热门文章

  1. 机架服务器显示器,机架式显示器排名_欧仕茄物联
  2. Futter基础第10篇: 实现替换路由、返回到根路由
  3. 7-1 Programming in C is fun! (5 分)
  4. L1-024 后天 (5 分) — 团体程序设计天梯赛
  5. Github使用: 本地上传, 与之同步
  6. P3194 [HNOI2008]水平可见直线
  7. 摘录 vue.js代码片段的理解
  8. 移植opencv2.4.9到android过程记录
  9. java输出到txt,换行问题
  10. C_Learning(3)