Struts2 整合jQuery实现Ajax功能(1)
技术领域非常多东西流行,自然有流行的道理。这几天用了jQuery,深感有些人真是聪明绝顶,能将那么多技术融合的如此完美。
首先明白个概念:
jQuery是什么:是使用javascript语言开发的,用于满足项眼下台各种操作须要的js程序文件。
也就是说。jQuery基本上就是个js程序集,基础核心是jQuery.js文件。
l 当然依据不同的版本号详细的表现形式:
jQuery.1.6.js或者jquery-1.5.1.js
这个是版本的不同,详细有哪些差别,还没发现。
l 还有这样的形式
jquery-1.5.1.min.js(紧缩格式。取消回车,一行代码)
l 依据应用需求的不同。jQuery
1 引入jQuery
项目中引入jQuery
l 下载jQuery:http://docs.jquery.com/Downloading_jQuery
l 加入核心文件:将核心的jQuery文件拷贝到项目中。
<SCRIPT type="text/javascript"src="js/jquery/jquery-1.6.js"></script>
<SCRIPTtype="text/javascript">
functioncheckkey()
{
…………使用jQuery技术自己定义的代码…………
}
</SCRIPT>
2 jQuery的Ajax
jQuery的内容很庞杂,能够解决诸多方面的需求。主要包含:Ajax。页面效果,页面验证。
作为J2ee项目,我主要关注了一下Ajax和页面验证。
jQuery的Ajax非常easy,只使用核心文件jQuery.js就能够实现了。
|
函数 |
描写叙述 |
|
jQuery.ajax() |
运行异步 HTTP (Ajax) 请求。 |
|
jQuery.get() |
使用 HTTP GET 请求从server载入数据。 |
|
jQuery.getJSON() |
使用 HTTP GET 请求从server载入 JSON 编码数据。 |
|
jQuery.post() |
使用 HTTP POST 请求从server载入数据。 |
有关Ajax的方法有非常多,这里仅仅简单研究了三种(事实上就一种jQuery.ajax()),其他的都是jQuery.ajax()的简写形式。
详细格式,上述站点说的已经很清楚了,记住例如以下格式就能够。
$.ajax({
type: 'POST', //提交方法
url: url, //提交的地址
data: data, //提交的參数
success: success, //成功后,回调的函数名
dataType: dataType //返回的数据类型
});
演示样例:
post的演示样例:使用ajax()的简化格式post()方法:中间有三个參数:url,data(json格式)。回调函数(回调函数能够定义在他处。此处仅写函数名)
$.post("test.jsp",
{name: "John", time: "2pm" },
function(data){
alert("DataLoaded: " + data);
});
3 Struts2整合jQuery
Struts2中基本的业务操作都是通过Action来完毕的。此时就须要jQuery来訪问Struts2的Action。
$.post("Action",……)
3.1 Login.jsp页面:
l 功能:用户登录。首先须要输入公司标识码:
l 正确:显示对勾;
l 错误:显示红叉;
l jQuery代码:
<SCRIPTtype="text/javascript" src="js/jquery/jquery-1.6.js"></script>
<SCRIPTtype="text/javascript">
function checkkey(){
var url = 'getKeyExist';
var params ={companyKey:$('#ckey').attr('value')};
$('#warn').html("<imgsrc='image/ajax/wait.gif'/>");
jQuery.post(url, params,callbackFun);
}
function callbackFun(data){
$('#warn').html(data);
}
</SCRIPT>
l HTML:当文本框失去焦点时,触发回调事件。
<DIV class=line><LABEL class=big id=lblName>公司标识</LABEL>
<INPUT id='ckey' name="ckey" onblur="checkkey();"><spanid="warn"></span>
</DIV>
l 说明:
n 当文本框‘ckey’失去焦点时:调用“checkkey”函数。
n “checkkey”函数分别确定两个信息:
u 异步訪问:'getKeyExist'——推断标识是否正确的Action类。
u 參数:{companyKey:$('#ckey').attr('value')},一个以json格式拼写的參数。
u 注:Json的对象格式:
u 发出异步请求:jQuery.post(url, params, callbackFun);
3.2 Action代码:
传统的Action都是返回String,依据String的不同决定forward到不同的Jsp页面,这给Ajax带来麻烦。我当初还是走了些弯路。
3.2.1 通过Jsp得到回调信息
繁琐。意义不打, 删去/略 !
3.2.2 Action自主完毕响应(即自己完毕结果对象的Json串行化,然后写入HttpServletResponse
):
后来发现,Action也能够自主完毕响应,不须要Jsp的支持。
代码改动例如以下:
l Action:新建了个方法getKeyExist。不提供返回值。
if(complist.size()>0)
remessage="<imgsrc=’image/ajax/yes.gif’/> ";
else
remessage="<imgsrc=’image/ajax/no.gif’ /> ";
HttpServletResponseresponse = ServletActionContext.getResponse();
response.setCharacterEncoding("UTF-8");
response.getWriter().write(remessage);
l struts.xml:又一次建立了无结果result;
<actionname="getKeyExist" class="ResponseMessageAction"method="getKeyExist">
</action>
l 此时得到的响应就简单干净了非常多。
上述方法已经能够得到响应的信息,可是在非常多情况下,还须要对响应的结果进行区分,来决定不同的显示效果,此时,响应值就要携带很多其它的信息。也就是说不是简单的一个字符串。而是一个对象。那么使用Json格式相对来说就比較方便(3.1提到了Json的对象格式)。
l Action:响应信息改为json格式。
if(complist.size()>0){
remessage="{type:'yes',show:'<imgsrc=\"image/ajax/yes.gif\" />'}";
}
else{
remessage="{type:'no',show:'<imgsrc=\"image/ajax/no.gif\" />'}"; }
l jQuery:回调结果
function callbackFun(data){
eval('json=' + data +';');
//自己解析Json响应数据
if(json.type=='no'){
$('#ckey').focus();
}
$('#warn').html(json.show);
}
Struts2 整合jQuery实现Ajax功能(1)的更多相关文章
- Struts2 整合jQuery实现Ajax功能(2)
1.1.1 Action利用struts2-json-plugin-X.X.X.jar响应Json格式信息: 1. function removerecordbyid(recordid) ...
- 模仿JQuery封装ajax功能
需求分析 因为有时候想提高性能,只需要一个ajax函数,不想引入较大的jq文件,尝试过axios,可是get方法不支持多层嵌套的json,post方式后台接收方式似乎要变..也许是我不太会用吧..其实 ...
- Struts2 使用jQuery实现Ajax
在jQuery中将Ajax相关的操作进行封装,使用时只需在合适的地方调用Ajax相关的方法即可,相比而言,使用jQuery实现Ajax更加简洁,方便 1.$.Ajax()可以通过发送Http请求加载远 ...
- Spring+Hibernate+Struts2整合之实现登录功能
前端代码: <form id="loginForm" action="${ pageContext.request.contextPath }/user_login ...
- 从零开始学习jQuery (六) AJAX快餐
一.摘要 本系列文章将带您进入jQuery的精彩世界, 其中有很多作者具体的使用经验和解决方案, 即使你会使用jQuery也能在阅读中发现些许秘籍. 本篇文章讲解如何使用jQuery方便快捷的实现A ...
- Jquery和Ajax的关系!
Jquery是一种JavaScript框架,而Ajax(Asynchronous JavaScript and XML)是异步JavaScript和XML. Jquery是JavaScript的框架, ...
- 份-城市,基于jQuery的AJAX二级联动,用Struts2整合AJAX【非数据库版】
package loaderman.provincecity; import java.io.IOException; import java.util.LinkedHashSet; import j ...
- Struts2处理(jQuery)Ajax请求
1. Ajax Ajax(Asynchronous JavaScript and XML,异步JavaScript和XML)时一种创建交互式网页应用的网页开发技术,它并不是一项新的技术,其产生 ...
- 3、尚硅谷_SSM高级整合_使用ajax操作实现增加员工的功能
20.尚硅谷_SSM高级整合_新增_创建员工新增的模态框.avi 1.接下来当我们点击增加按钮的时候会弹出一个员工信息的对话框 知识点1:当点击新增的时候会弹出一个bootstrap的一个模态对话框 ...
随机推荐
- linux crontab创建计划任务
1.编辑计划任务 编辑crontab文件 crontab -e 2.查看计划任务日志 查看crontab日志 tail -100f /var/log/cron 3.创建计划任务格式 (1)基本格式 : ...
- JavaScript中的跨域问题
跨域问题其实很普遍的存在的,如何解决跨域问题呢,跨域问题到底是怎么产生的,解决方法的由来又是什么?我觉得看了视频讲解,值得写下来,记录下来. 一.跨域问题是怎么产生? 概念:只要协议.域名.端口有任何 ...
- 奇异值分解 SVD 的数学解释
奇异值分解(Singular Value Decomposition,SVD)是一种矩阵分解(Matrix Decomposition)的方法.除此之外,矩阵分解还有很多方法,例如特征分解(Eigen ...
- 初识Typescript及vscode环境配置
什么是typescript?为什么要用它? typescript简称ts,是js语法的一个超级,由微软团队维护的 js特点(不足) 弱类型:js中的数据变量没有确定的类型,可以存储对象,可以存储数字, ...
- 启动web项目卡在Initializing Spring root WebApplicationContext不动
这几天在和同学一起做一个电教器材管理系统的Web项目,用SVN互通,在此记录下经常遇到的bug. Bug: 启动项目一直卡在Initializing Spring root WebApplicatio ...
- mybatis保存时将数据库自动生成的主键返回
场景 保存订单数据和订单详情数据时需要将订单的主键作为关联子段添加到明细表中,需要将保存订单时的主键返回给供保存明细表时使用 添加xml中新增数据时的配置 <insert id="in ...
- javascript事件委托和jquery事件委托
元旦过后,新年第一篇. 初衷:很多的面试都会涉及到事件委托,前前后后也看过好多博文,写的都很不错,写的各有千秋,自己思前想后,为了以后自己的查看,也同时为现在找工作的前端小伙伴提供一个看似更全方位的解 ...
- Django的admin源码浅析和模仿
admin模块: admin提供了5种接口 list_display, 指定数据展示字段,不能放多对多字段
- 定义一个复数类Complex
#include<iostream> #include<math.h> using namespace std; class Complex{ public: Complex( ...
- Eclipse Myeclipse 设定文件的默认打开方式
Eclipse Myeclipse 设定文件的默认打开方式 菜单:Window -> Preferences -> General -> Editors -> File A ...