- 浏览: 179096 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (104)
- JavaScript备忘 (11)
- Java编程 (23)
- struts框架 (3)
- hibernate框架 (0)
- ibatis框架 (2)
- C++编程 (2)
- 数据库 (8)
- 操作系统 (2)
- Extjs (0)
- 基于web的工作流引擎设计 (0)
- 开发异常备忘 (5)
- 项目管理工具 (6)
- Spring框架 (3)
- HTML (1)
- 项目架构 (1)
- 备忘 (20)
- 设计模式 (9)
- Disruptor (0)
- CQRS (0)
- DDD (0)
- Axon (0)
- JavaScript (1)
- 微信 (0)
- 新浪微博 (1)
- 软件备份 (2)
- AngularJS (1)
- 安全性 (1)
- Linux (2)
- 工具 (4)
- OSGI (1)
- idea (2)
- Docker (1)
- 测试相关 (0)
- WebService (1)
- 数据安全 (0)
- 移动开发 (0)
- springboot (1)
最新评论
-
larryscale:
zz_wangyuhoho 写道你这个工程跑不起来呀我测试过的 ...
Springmvc3+Spring3+MyBatis3 -
zz_wangyuhoho:
你这个工程跑不起来呀
Springmvc3+Spring3+MyBatis3 -
aeolusj:
var myAlert=alert;改为var myAlert ...
js 拦截alert对话框 -
skcks:
建行内部开发平台也是做了一个类似的封装用于ajax远程调用服务 ...
通用Ajax设计 -
qiuyu1990:
这个应该是 DWR的原理吧
通用Ajax设计
利用Servlet和反射技术实现通用的Ajax调用设计,如下:
一,调用规则
在JS代码,调用者只需按下面的规范,即可实现异步或同步java方法调用
在你的jsp或html页面中,导入通用异步调用方法文件(km.js[自定义]),然后写异步调用方法AjaxTest(url),url格式为:
var result = AjaxTest(“异步类名/方法名?”+时间戳+参数) 参数中的名称,跟你异步类中的字段要一致,
异步类及其方法可自定义,但必须统一放在固定的包(com.smartcom.km.ajaxObj )下面,以达到通用的目的
,如果参数中有中文,须进行编码后再调用,用一个变量(result )接收其返回值即可,详细代码如下:
1. 在页面中引入异步方法文件
<script type="text/javascript" src="js/km.js"></script>
2. index.jsp (页面中的异步调用)
<script type="text/javascript"> document.write("异步调用1------------------------------<br>"); var params = "?time="+new Date().getTime()+"&userid=zhangs&username=张三"; var url = "Ajax4Public/execute1"+encodeURI(encodeURI(params)); var ret = AjaxTest(url); if(""!=ret){ document.write(ret+"<br>"); } document.write("异步调用2------------------------------<br>"); var params = "?time="+new Date().getTime()+"&userid=lis&username=李四"; var url = "Ajax4Public/execute2"+encodeURI(encodeURI(params)); var ret = AjaxTest(url); if(""!=ret){ document.write(ret+"<br>"); } document.write("异步调用3------------------------------<br>"); var params = "?time="+new Date().getTime()+"&userid=wangw&username=王五"; var url = "Ajax4Comm/execute1"+encodeURI(encodeURI(params)); var ret = AjaxTest(url); if(""!=ret){ document.write(ret+"<br>"); } document.write("异步调用4------------------------------<br>"); var params = "?time="+new Date().getTime()+"&userid=zhaoq&username=赵七"; var url = "Ajax4Comm/execute2"+encodeURI(encodeURI(params)); var ret = AjaxTest(url); if(""!=ret){ document.write(ret+"<br>"); } </script>
3. km.js( 通用异步方法代码)
function AjaxTest(url){ var xmlhttp=null; if (window.XMLHttpRequest){// code for Firefox, Opera, IE7, etc. xmlhttp=new XMLHttpRequest(); if(xmlhttp.overrideMimeType){ xmlhttp.overrideMimeType("text/html"); } }else if (window.ActiveXObject){// code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } if (xmlhttp!=null){ xmlhttp.onreadystatechange=function(){}; xmlhttp.open("GET","./servlet/com.borse.km.servlet.Dispatcher/"+url,false); xmlhttp.send(null); return xmlhttp.responseText; }else{ alert("Your browser does not support XMLHTTP."); return false; } }
4. com.smartcom.km.servlet.Dispatcher.java (Servlet代码)
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); Object retparam = null; //返回值参数 try { System.out.println("------------------------------->>>params:"+request.getPathInfo()); String [] path = request.getRequestURL().toString().split("/", -1); String methodName = path[path.length-1]; System.out.println("------------------------------->>>methodName:"+methodName); String beanName = path[path.length-2]; System.out.println("------------------------------->>>beanName:"+beanName); String ajaxpath = null; if(ajaxpath==null || ajaxpath.trim().length()<1){ ajaxpath="com.smartcom.km.ajaxObj"; } System.out.println("------------------------------->>>ajaxpath:"+ajaxpath); //反射 System.out.println("------------------------------->>>bean:"+ajaxpath+"."+beanName); Object bean = Class.forName(ajaxpath+"."+beanName).newInstance(); BeanUtils.populate(bean, request.getParameterMap()); retparam = MethodUtils.invokeMethod(bean, methodName, new Object []{}); } catch (Exception e) { System.out.println(e.getMessage()); } response.setCharacterEncoding("UTF-8"); response.setContentType("text/html"); response.getWriter().write(retparam.toString()); }
5. web.xml (servlet配置)
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <servlet> <description>This is the description of my J2EE component</description> <display-name>This is the display name of my J2EE component</display-name> <servlet-name>Dispatcher</servlet-name> <servlet-class>com.smartcom.km.servlet.Dispatcher</servlet-class> </servlet> <servlet-mapping> <servlet-name>Dispatcher</servlet-name> <url-pattern>/servlet/*</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
6. com.smartcom.km.ajaxObj.Ajax4Public.java (异步类1)
public class Ajax4Public { private String userid; private String username; public void setUserid(String userid) { this.userid = userid; } public void setUsername(String username) { try { this.username = java.net.URLDecoder.decode(username,"UTF-8"); } catch (Exception e) { this.username = username; } } public String execute1(){ System.out.println("----------------------->>>userid:"+this.userid); System.out.println("----------------------->>>username:"+this.username); return "["+this.username+"]调用[Ajax4Public.execute1()]成功!"; } public String execute2(){ System.out.println("----------------------->>>userid:"+this.userid); System.out.println("----------------------->>>username:"+this.username); return "["+this.username+"]调用[Ajax4Public.execute2()]成功!"; } }
7. com.smartcom.km.ajaxObj.Ajax4Comm.java (异步类2)
public class Ajax4Comm { private String userid; private String username; public void setUserid(String userid) { this.userid = userid; } public void setUsername(String username) { try { this.username = java.net.URLDecoder.decode(username,"UTF-8"); } catch (Exception e) { this.username = username; } } public String execute1(){ System.out.println("----------------------->>>userid:"+this.userid); System.out.println("----------------------->>>username:"+this.username); return "["+this.username+"]调用[Ajax4Comm.execute1()]成功!"; } public String execute2(){ System.out.println("----------------------->>>userid:"+this.userid); System.out.println("----------------------->>>username:"+this.username); return "["+this.username+"]调用[Ajax4Comm.execute2()]成功!"; } }
运行结果如下:
发表评论
-
Springboot项目(整合WebService带协议头验证+WebSocket+Web+动态日志输出)
2020-05-12 14:05 1119环境配置: springboot 1.5.14 ... -
activiti5.18 默认查询的sql生成两个order by
2019-10-17 12:14 393<spring.version>4.2.4.RE ... -
springboot 定时任务重复执行
2019-06-04 17:35 2192开发一数据接收WebService,里面用到定时任务@Sc ... -
生成圆形头像
2016-05-18 17:30 862<html><head><ti ... -
mybatis-generator自动生成代码[增加Service的生成]
2016-03-22 10:08 9900源码包见附件[Maven项目,在1.3.2基础上修改官方源码] ... -
Open Flash Chart IO ERROR Loading test data Error
2015-02-06 11:44 657Open Flash Chart 2 提示Open Flas ... -
网络状态监控
2014-06-27 12:56 636import java.io.BufferedReader; ... -
Spring MVC+Jquery Ajax 前后台传递Json对象
2014-03-29 10:02 6148关于Spring MVC3.X 接收和返回Json ... -
TEST
2013-12-17 10:09 0http://www.mohurd.gov.cn/zcfg/j ... -
TEMP
2013-12-04 17:46 0--========================= ... -
showModalDialog 打开后任意改变大小
2013-11-19 19:45 1086父窗口JS <script language=jav ... -
JS关闭父窗口时不弹出对话框
2013-11-19 19:26 1029var url = top.location.href; ... -
同时启动多个Tomcat服务器
2013-10-25 17:15 598我所用Tomcat服务器都为zip版,非安装版。以两个为例: ... -
md5+BASE64加密
2013-10-08 23:20 981import sun.misc.BASE64Encoder; ... -
用MD5对密码进行加密
2013-08-10 15:21 1027package com.yong.bin.md5; i ... -
对表格行动态增删除的JS封装
2013-04-26 23:32 904这是最近在公司项目中使用的,一个对表格行进行 ... -
把CST格式的字符串转成普通的日期格式
2013-02-27 15:58 1592public static void main(Str ... -
在CSS之中实现<body topmargin="0">
2013-01-21 13:13 1330<!DOCTYPE html PUBLIC " ... -
js 拦截alert对话框
2013-01-16 10:30 2155<input type="button&qu ... -
VLC 插件的检测
2012-12-19 23:48 3038最近做的一个海底观测网项目,其中流媒体用到了VLC插件。 ...
相关推荐
"validate 通用Ajax无刷新表单验证类"就是针对这一需求设计的,旨在提供一个高效、便捷的解决方案,使得在用户填写表单时能够实时进行数据验证,无需等待页面刷新,极大地提高了用户体验。 Ajax(Asynchronous ...
通用AjaxServlet是一个旨在简化Web应用开发的技术方案,它利用了Java反射机制,使得前端JavaScript能够动态地调用后台服务器上的任意Java类中的方法。这种方式极大地提高了Web应用的灵活性和可扩展性,尤其在处理...
"validate 通用Ajax无刷新表彰验证类"是一个专门针对这一需求设计的JavaScript库,它的主要功能是在用户提交表单前进行实时验证,无需页面刷新,通过Ajax技术实现后台验证的无感交互。 1. **实时验证**: validate类...
总的来说,`validate`通用Ajax无刷新表单验证类为开发者提供了一个强大且灵活的工具,使得前端表单验证变得更加便捷和高效。通过合理利用这个类,开发者可以创建出用户体验优秀的Web应用,同时降低了服务器的压力。
}这个通用 `ajax` 函数通过使用 JavaScript 实现了一个跨浏览器的 AJAX 请求。它首先检查是否支持 `ActiveXObject`(针对旧版 Internet Explorer)或 `XMLHttpRequest` 对象。然后,它会初始化一个请求,设置请求...
本资源提供的“Ajax通用分页源码”正是这样一个功能模块,它允许用户在浏览大量数据时,只加载当前所需的页面内容,从而提高网页性能和用户交互性。 首先,让我们了解Ajax分页的基本原理。在ASP.NET中,分页通常...
这个Ajax库特别强调“简单”和“方便”,意味着它可能设计得易于理解和使用,适合初学者或小规模项目。然而,如果需要更复杂的功能,比如缓存管理、强大的数据转换、更全面的浏览器兼容性,那么可能需要考虑使用像...
通用分页则是指设计一个可以适应多种场景的分页组件,它可能包含以下特性: 1. 参数化配置:允许用户自定义每页显示的记录数。 2. URL路由处理:支持参数传递,如通过`?page=2`来表示第2页。 3. 多种样式支持:提供...
本文针对这一问题,探讨了基于Ajax技术和角色基础访问控制(RBAC)模型的通用Web系统权限管理的设计与实现。 在传统Web系统中,权限管理模块通常是针对每个系统单独设计和开发的,这种做法不仅耗费开发资源,而且...
【Ajax通用分页源码(ASP.net)】是一款基于ASP.NET技术实现的,利用Ajax无刷新方式实现网页分页功能的代码示例。这个源码集合涵盖了多种编程语言和技术,如C#、ASP.NET和WinForm,同时也涉及到数据库访问层(Data...
**Ajax通用(组合)查询在ASP.NET中的应用** 在现代Web开发中,用户对交互性和实时性的需求越来越高,Ajax(Asynchronous JavaScript and XML)技术应运而生,它能够实现页面部分更新,无需每次交互都刷新整个页面。...
JavaScript的设计和实现中有许多特点,这些特点有时会给开发者带来困扰,但也提供了强大的功能。 1. **名称误导**:JavaScript与Java名字相似,但两者完全不同,JavaScript是一种轻量级的脚本语言,而Java是面向...
描述中的"代码简洁 调用简便"意味着这个Ajax类设计得易于理解和使用,避免了复杂的代码结构,使得开发者能够快速集成到项目中。这样的类通常会提供简单的方法,如`sendRequest(url, data, callback)`,允许开发者...
通用数据访问层及Ajax服务端框架源码 这个演示网站的特点: 1. 数据访问全使用了我的通用数据访问层 + 存储过程的实现。 2. 页面使用了大量的Ajax技术,没有任何的直接提交或回传(Submit Form or postback),分页,...
7. 响应式设计:为了适应不同设备和屏幕尺寸,评论系统应该具有响应式布局,确保在手机、平板和桌面等设备上都能良好显示。 总结,Ajax评论系统利用了Ajax技术,实现了评论的无刷新加载和提交,极大地提升了用户...
"通用数据访问层"与"Ajax服务端框架"的结合,旨在提供一种优化的Web应用开发模式,提高前端与后端之间的交互效率,同时简化数据库操作。下面将详细阐述这两个概念以及它们在实际项目中的应用。 首先,通用数据访问...
### 基于J2EE与Ajax的Web应用架构设计 #### 一、引言 随着Web2.0模式在互联网中的快速发展,采用J2EE平台与Ajax技术的Web应用架构变得越来越成熟。Web2.0的核心技术包括博客(Blog)、RSS、标签(Tag)、P2P、维基...
在IT行业中,AjaxResponse是一个常见的后端工具类,主要...文件列表中的"utils"可能包含了这个工具类和其他相关的辅助函数,这些函数可能涉及到日期处理、字符串操作等通用功能,都是为了提升项目开发效率而设计的。
**Ajax通用的数据验证程序**是针对Web开发中的一个常见需求——数据验证——而设计的工具。数据验证在软件工程中扮演着至关重要的角色,确保用户输入的数据符合预设的规则和标准,从而防止错误的数据进入系统,提升...
1. **通用AJAX函数的设计** - 参数化:通用AJAX函数应该接受必要的参数,如URL、请求类型(GET、POST等)、数据、回调函数等,以便适应不同的服务器调用需求。 - 错误处理:函数应包含错误处理机制,如超时、网络...