Struts学习之集成Ajax
转自:http://blog.csdn.net/hanxuemin12345/article/details/38782213
一,引题
1,Json数据格式简介
JSON是脱离语言的理想的数据交换格式,所以它被频繁的应用在客户端与服务器的通信过程中,这一点是毋庸置疑的。而在客户端与服务器的通信过程 中,JSON数据的传递又被分为服务器向客户端传送JSON数据,和客户端向服务器传送JSON数据,前者的核心过程中将对象转换成JSON,而后者的核 心是将JSON转换成对象,这是本质的区别。另外,值得一提的是,JSON数据在传递过程中,其实就是传递一个普通的符合JSON语法格式的字符串而已, 所谓的“JSON对象”是指对这个JSON字符串解析和包装后的结果
2,Struts2返回JSON数据到客户端
这是最常见的需求,在AJAX大行其道的今天,向服务器请求JSON数据已成为每一个WEB应用必备的功能。抛开Struts2暂且不提,在常规WEB应用 中由服务器返回JSON数据到客户端有两种方式:一是在Servlet中输出JSON串,二是在JSP页面中输出JSON串。上文提到,服务器像客户端返 回JSON数据,其实就是返回一个符合JSON语法规范的字符串,所以在上述两种方法中存在一个共同点,就是将需要返回的数据包装称符合JSON语法规范 的字符串后在页面中显示。
3,Struts2 Action使用传统方式返回json数据
省略。。。。。
4,Struts2 集成Json插件,配置json格式结果集,返回json数据
JSON插件是Structs 2 的Ajax插件,通过利用JSON插件,开发者可以很方便,灵活的利用Ajax进行开发。 Json是一种轻量级的数据交换格式,JSon插件提供了一种名为json的Action ResultType 。使用此结果集的好处:将转换JSON数据的工作交给Struts2来做,与Action中以传统方式输出JSON不同的是,Action只需要负责业务处理,而无需关心结果数据是如何被转换成JSON被返回客户端的——这些 工作通过简单的xml配置及jar包引用,Struts2会帮我们做的更好。
二、的实现步骤:
1,引入Struts包、Struts与Json集成的jar包;struts-plugin.xml配置文件
——
——struts-plugin.xml:配置了集成的Json插件的信息(定义了名为"json"的结果集,和名为"json"的拦截器;注:具体json类型的结果集和拦截器Struts的json插件已经实现了,我们只需在配置文件中将了实现类配置上即可);
- <struts>
- <package name="json-default"extends="struts-default">
- <result-types>
- <!--名为"json"的结果集-->
- <result-typenameresult-typename="json" class="org.apache.struts2.json.JSONResult"/>
- </result-types>
- <interceptors>
- <!--名为"json"的拦截器-->
- <interceptornameinterceptorname="json"class="org.apache.struts2.json.JSONInterceptor"/>
- </interceptors>
- </package>
- </struts>
2,Web.xml
——配置Struts2的核心过滤器
- <web-appversionweb-appversion="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">
- <!-- 配置Struts2的核心的过滤器 -->
- <filter>
- <filter-name>struts2</filter-name>
- <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
- </filter>
- <filter-mapping>
- <filter-name>struts2</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
- <welcome-file-list>
- <welcome-file>index.jsp</welcome-file>
- </welcome-file-list>
- </web-app>
3,用户User类——实体类
- private Long uid;//用户id
- private String username;//用户名
- private String sex;//性别
- /************get/set方法*******************************************/</span>
- publicLong getUid() {
- returnuid;
- }
- publicvoid setUid(Long uid) {
- this.uid= uid;
- }
- publicString getUsername() {
- returnusername;
- }
- publicvoid setUsername(String username) {
- this.username= username;
- }
- publicString getSex() {
- returnsex;
- }
- publicvoid setSex(String sex) {
- this.sex= sex;
- }
4,UserAction.java——处理业务,获取用户
- importcom.opensymphony.xwork2.ActionSupport;
- public classUserAction extends ActionSupport{
- privateLong uid;
- privateString username;
- privateString password;
- privateString sex;
- privateString phone;
- /**
- * 获取用户
- * @return
- */
- publicString showUser(){
- User user = new User();//创建一个User对象
- user.setUid(1L);
- user.setUsername("学敏");
- user.setSex("女");
- user.setPassword("123");
- user.setPhone("15466554589");
- this.uid=user.getUid();
- this.sex=user.getSex();
- this.password=user.getPassword();
- this.phone=user.getPhone();
- this.username=user.getUsername();
- returnSUCCESS;
- }
- /*******get/set方法**************************/
- publicLong getUid() {
- returnuid;
- }
- publicvoid setUid(Long uid) {
- this.uid= uid;
- }
- publicString getUsername() {
- returnusername;
- }
- publicvoid setUsername(String username) {
- this.username= username;
- }
- publicString getPassword() {
- returnpassword;
- }
- publicvoid setPassword(String password) {
- this.password= password;
- }
- publicString getSex() {
- returnsex;
- }
- publicvoid setSex(String sex) {
- this.sex= sex;
- }
- publicString getPhone() {
- returnphone;
- }
- publicvoid setPhone(String phone) {
- this.phone= phone;
- }
- }
5,配置Strut2的配置文件Struts.xml
——继承json-default,指定Action返回的结果集的类型为:json;
- <struts>
- <packagenamepackagename="userjson" namespace="/"extends="json-default">
- <actionnameactionname="userJSONAction_*" method="{1}"class="cn.itcast.oa0909.struts2.action.UserAction">
- <!--指定返回的结果集的类型为:json -->
- <resulttyperesulttype="json"></result>
- </action>
- </package>
- </struts>
(注:一旦为Action指定了该结果处理类型,JSON插件就会自动将Action里的数据序列化成JSON格式的数据, 并返回给客户端物理视图的JavaScript。简单的说,JSON插件允许我们在JavaScript中异步的调用Action, 而且Action不需要指定视图来显示Action的信息显示。 而是由JSON插件来负责具体将Action里面具体的信息返回给调用页面。)
6,test.html页面
- <html>
- <head>
- <title>tree.html</title>
- <meta http-equiv="keywords"content="keyword1,keyword2,keyword3">
- <meta http-equiv="description"content="this is my page">
- <metahttp-equivmetahttp-equiv="content-type" content="text/html;charset=UTF-8">
- </head>
- <!--引入js文件 -->
- <scriptsrcscriptsrc="js/jquery-1.4.2.js"></script>
- <scriptsrcscriptsrc="js/test.js"></script>
- <body>
- This is my HTML page.
- </body>
- </html>
7,test.js文件
- //页面加载执行
- $().ready(function(){
- load();//调用load()函数
- });
- functionload(){
- $.post("userJSONAction_showUser.action",null, function(data){
- //弹出服务端返回的数据
- alert("编号:"+data.uid+",姓名:"+data.username+",性别:"+data.sex);
- });
- }
8,运行
地址:http://localhost:8080/Struts2+Ajax/test.html
结果:
三,json插件执行原理时序图
Struts学习之集成Ajax的更多相关文章
- Struts 2常用的Ajax标签
Struts 2对Ajax的支持 •Struts 2对Ajax提供了很好的支持 –Struts 2.1提供了基于Dojo的Ajax标签,对Ajax操作进行了进步封装,可以更快捷容易的使用Ajax ...
- jQuery学习笔记之Ajax用法详解
这篇文章主要介绍了jQuery学习笔记之Ajax用法,结合实例形式较为详细的分析总结了jQuery中ajax的相关使用技巧,包括ajax请求.载入.处理.传递等,需要的朋友可以参考下 本文实例讲述了j ...
- 深度学习的集成方法——Ensemble Methods for Deep Learning Neural Networks
本文主要参考Ensemble Methods for Deep Learning Neural Networks一文. 1. 前言 神经网络具有很高的方差,不易复现出结果,而且模型的结果对初始化参数异 ...
- 学习笔记:AJAX 跨域问题
学习笔记:AJAX 跨域问题 AJAX 跨域是浏览器的问题. 只要 xhr 请求,不同的域名就会出现 AJAX 跨域问题. JSONP 是一要简单方式,但是有很多弊端,需要修改服务端代码. JSONP ...
- 框架基础:关于ajax设计方案(三)---集成ajax上传技术
之前发布了ajax的通用解决方案,核心的ajax发布请求,以及集成了轮询.这次去外国网站逛逛,然后发现了ajax level2的上传文件,所以就有了把ajax的上传文件集成进去的想法,ajax方案的l ...
- 深度学习框架集成平台C++ Guide指南
深度学习框架集成平台C++ Guide指南 这个指南详细地介绍了神经网络C++的API,并介绍了许多不同的方法来处理模型. 提示 所有框架运行时接口都是相同的,因此本指南适用于所有受支持框架(包括Te ...
- Struts学习之流程汇总
struts2 架构图如下图所示: 依照上图,我们可以看出一个请求在struts的处理大概有如下步骤: 1.客户端初始化一个指向Servlet容器(例如Tomcat)的请求: 2.这个请求经过一系列的 ...
- 框架基础:ajax设计方案(三)---集成ajax上传技术
之前发布了ajax的通用解决方案,核心的ajax发布请求,以及集成了轮询.这次去外国网站逛逛,然后发现了ajax level2的上传文件,所以就有了把ajax的上传文件集成进去的想法,ajax方案的l ...
- 前端通信:ajax设计方案(三)--- 集成ajax上传技术
在此之前让我感慨一下现在的前端开发的氛围.我遇到好多人,给我的观念都是,这个东西这个框架有了,那个东西那个框架做了,前端嘛,学几个框架,这个拼凑一下那个拼凑一下就好了.其实我想问,东西都框架做了,那你 ...
随机推荐
- iOS6和iOS7代码的适配(1)
苹果的iOS7推出后,对于所有的应用来说都提出了一个天然的需求--适配不同版本的SDK.目前来说,用iOS6的SDK生成的应用,可以在iOS7的系统上跑,UI上也保持了原来的风格样式,这是苹果做的向下 ...
- ldap理论属于概念缩略词
Standalone LDAP Daemon, slapd(standalone lightweight access protocol) ldap 389 default listener port ...
- 【Cocos2d TestCpp实例模仿一】-- ActionsTest
转载请注明出处:http://blog.csdn.net/oyangyufu/article/details/25252539 CCActionInterval(持续性动作) 位置性变化动作以To结束 ...
- UVA 12075 - Counting Triangles(容斥原理计数)
题目链接:12075 - Counting Triangles 题意:求n * m矩形内,最多能组成几个三角形 这题和UVA 1393类似,把总情况扣去三点共线情况,那么问题转化为求三点共线的情况,对 ...
- 如何利用Github Pages展示自己写的项目
接触github很久了,自己搭建过hexo博客,但是对于web项目托管github pages感觉很懵,所以在此总结分享给有需要的亲们. 教程开始: 1.创建一个新库 2.给库命名 3.创建新库后点击 ...
- html5 meta标签
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-sca ...
- vs2013 中HTML页 无法在设计窗口中查看的解决
VS2013不支持HTML文件的解决办法: 1.将html文件重命名为aspx即可.不需要创建项目,直接拖进vs即可. 2.打开VS菜单->工具->选项->文本编辑器->文件扩 ...
- Hadoop学习之自定义二次排序
一.概述 MapReduce框架对处理结果的输出会根据key值进行默认的排序,这个默认排序可以满足一部分需求,但是也是十分有限的.在我们实际的需求当中,往 往有要对reduce输出结果进行二次排 ...
- 一年开发ASP.NET MVC4项目经验总结
一年开发ASP.NET MVC4项目所用所学技术经验总结 阅读目录 文章背景 前端所用技术摘要 后端所用技术摘要 1. 文章背景 本人2014年从Java转行到C#从事BS项目的开发,刚开始接触的是A ...
- 《JavaScript+DOM编程艺术》的摘要(二)---DOM中的几个方法
//DOM: //对象是一种独立的数据集合,与某个特定对象相关联的变量被称为这个对象的属性,通过某个特定对象可以为之调用的函数被称为这个对象的方法 // //4个非常实用的DOM方法: //检索特定元 ...