- 浏览: 173130 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (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 1003环境配置: springboot 1.5.14 ... -
activiti5.18 默认查询的sql生成两个order by
2019-10-17 12:14 331<spring.version>4.2.4.RE ... -
springboot 定时任务重复执行
2019-06-04 17:35 2091开发一数据接收WebService,里面用到定时任务@Sc ... -
生成圆形头像
2016-05-18 17:30 812<html><head><ti ... -
mybatis-generator自动生成代码[增加Service的生成]
2016-03-22 10:08 9745源码包见附件[Maven项目,在1.3.2基础上修改官方源码] ... -
Open Flash Chart IO ERROR Loading test data Error
2015-02-06 11:44 612Open Flash Chart 2 提示Open Flas ... -
网络状态监控
2014-06-27 12:56 582import java.io.BufferedReader; ... -
Spring MVC+Jquery Ajax 前后台传递Json对象
2014-03-29 10:02 6094关于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 1041父窗口JS <script language=jav ... -
JS关闭父窗口时不弹出对话框
2013-11-19 19:26 981var url = top.location.href; ... -
同时启动多个Tomcat服务器
2013-10-25 17:15 549我所用Tomcat服务器都为zip版,非安装版。以两个为例: ... -
md5+BASE64加密
2013-10-08 23:20 940import sun.misc.BASE64Encoder; ... -
用MD5对密码进行加密
2013-08-10 15:21 970package com.yong.bin.md5; i ... -
对表格行动态增删除的JS封装
2013-04-26 23:32 859这是最近在公司项目中使用的,一个对表格行进行 ... -
把CST格式的字符串转成普通的日期格式
2013-02-27 15:58 1500public static void main(Str ... -
在CSS之中实现<body topmargin="0">
2013-01-21 13:13 1264<!DOCTYPE html PUBLIC " ... -
js 拦截alert对话框
2013-01-16 10:30 2064<input type="button&qu ... -
VLC 插件的检测
2012-12-19 23:48 2979最近做的一个海底观测网项目,其中流媒体用到了VLC插件。 ...
相关推荐
基于Ajax的通用Web系统权限管理的设计与实现.pdf
通用数据访问层及Ajax服务端框架源码 这个演示网站的特点: 1. 数据访问全使用了我的通用数据访问层 + 存储过程的实现。 2. 页面使用了大量的Ajax技术,没有任何的直接提交或回传(Submit Form or postback),分页,...
6.3 为Ajax设计通知系统 6.3.1 对通知建模 6.3.2 定义用户界面需求 6.4 实现通知框架 6.4.1 显示状态栏图标 6.4.2 显示详细的通知信息 6.4.3 集成 6.5 用通知框架处理网络请求 6.6 表示数据的时效性 6.6.1 定义简单...
可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现...
通过拖拽的方式进行布局设计,在很大程度上提高了用户的可视化操作,真正实现了所见即所得。在完成拖拽后,无须刷新页面,即可保存布局。 源码结构说明 1.AjaxDemo文件夹下为源文件 2.AjaxDemo.war为部署...
基于AJAX和Cocoon框架的信息管理系统设计,陈世鑫,,本文主要描述了一个通用的基于AJAX和Cocoon框架的Web 应用程序开发框架。此通用框架符合MVC 模式的结构特点,其核心内容是通过配置数据
ASP实例开发源码—SipoAutoSaver V3.0 基于Ajax的网站通用草稿自动保存系统asp版.zip ASP实例开发源码—SipoAutoSaver V3.0 基于Ajax的网站通用草稿自动保存系统asp版.zip ASP实例开发源码—SipoAutoSaver V3.0 基于...
ASP源码—SipoAutoSaver V3.0 基于Ajax的网站通用草稿自动保存系统.zip
1.5 API 设计问题 63 1.6 通用节点类型 63 1.7 文档节点 64 1.8 元素节点 64 1.9 属性节点 66 1.10 文本节点 67 1.11 什么节点类型? 67 第 6 部分: 建立基于 DOM 的 Web 应用程序 69 1.1 从一个示例应用...
可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现...
摘要:简要介绍了一种通用的,动态树型结构的实现方案,该方案基于AsynchronousJavaScriptandXML,结合Struts框架设计实现了结构清晰、扩展性良好的多层架构,数据存储于数据库,结合XML描述树的节点信息,使得任何按...
基于RBAC模型,提出了采用AjaX技术实现一种通用的权限管理模块,使用此模块,无需编制代码,只需根据不同的系统需求由管理员设置相关的角色、用户和权限即可。该方案实现了权限控制和业务的分离,可以很方便地在其他Web...
基于ajax的通用型在线投票系统,,可以实现动态的数据获取。。数据库文件在压缩包面。。自己还原就可以了。。
本系统是使用传统mvc设计模式开发,比较适合javaweb的初学者,代码有注释,通俗易懂。
ECSHOP 通用电子商务平台 ---------------------------------------------------------------------- ECSHOP是一款开源免费的通用电子商务平台构建软件,使用她您可以非常方便的开一个网上商店,在网上开展自己的...
Responsiveness:后台管理系统应当是响应式设计,能够适配不同设备屏幕大小,包括电脑、平板和手机等。 权限控制:根据用户角色设定不同的权限,确保用户只能访问其权限范围内的功能。 数据安全:对用户数据进行加密...