当前位置: 首页 > 编程日记 > 正文

如何将简单CMS后台管理系统示例转换为Java、Php等不同后台语言的版本

等下要去坐车,今天就不继续唠叨开发过程了,来谈一下普遍比较关心的后台语言问题。

学习Ext JS,笔者一直强调学习的中心思路是“界面与数据是分离”。只要好好掌握这个思路,深入了解Ext JS的运作过程,就不会为后台语言使用什么而困扰了。可以说,只要思路明确,要将一个Ext JS项目迁移到不同的后台语言平台,那是轻而易举的事。下面就以本示例做一个简单的讲述。

如果你放下语言的包袱,坚持把本示例的文章看完,会有一个感觉,就是客户端的脚本文件和后台语言的结合文件,只有一个,就是首页index.cshtml,如果把该文件里的脚本都抽离出来,基本上,Ext JS与开发语言平台就没任何关系了,把Scripts目录复制到任何语言平台项目,都可以直接使用,修改的地方基本就是地址。如果使用Ext.Direct,这个就更彻底了,基本不需要做任何修改,后台语言有对应的方法就行了。如果清楚这一点,就好办了。

例如,要将本示例修改为Java版本的,如果Java架构不支持认证的验证,就把首页拆分成两个文件,一个专门是登录用的,一个是登录后跳转到的页面,这种方式估计熟悉Web开发的已经是家常便饭了。

在Ext JS中,主要的数据提交方式有三种:

1.        表单形式提交,该方式虽然也用Ajax方式提交,但是,后台的处理与基本的表单提交形式是没有任何区别的,因而,后台的数据处理方式,没什么难度,你懂的!不懂?这……好好补补HTML知识吧。这个最好的示例就是登录窗口的提交,可以尝试用自己熟悉的语言做一下练习。

2.        Ajax形式提交,这里的例子就是用户登录里的重置密码了,虽然数据格式不固定,但是提交参数是自己或项目已经定义好的,后台的数据处理方式与处理表单提交的数据区别不大。

3.        Store同步数据的提交方式,只要定义好Writer,使用同一种数据提交方式,那么后台数据处理方式是基本一致的。例如用户管理里的添加、编辑和删除操作,提交的数据都要从data关键字里提取,然后需要通过服务器端JSON对象的parse方法将提交的数据转换为JSON数组,再提取出具体的数据对象处理。Java的处理基本可以参照书中1.2.6节的方式进行处理。其它语言则可寻找相应的JSON库来处理。

在Ext JS中,数据的返回格式也是基本固定的,在示例中,目前的返回格式是两种:

1、  表单的错误信息:

{

success : true 或 false,

errors : {

field1 : "错误信息",

field2 : "错误信息",

...

}

}

2、  其它数据

{

success : true 或 false,

total : 数据总数,

data  : [...],

Msg   : "错误信息"

}

在示例中,无论是Store的同步操作还是Ajax数据的提交,都使用了第2种数据的返回格式,该格式基本是通用的。

清楚了Ext JS数据提交格式和返回格式,就知道如何提取数据和返回数据。只要按格式正确返回数据,Ext JS就能正常运行,不受任何后台语言的影响。至于在后台,使用什么语言,什么数据库,都没问题,这些都是开发人员已经掌握的技术,余下的就是根据格式返回数据。因而,要修改本示例也不难了。

例如,要显示用户数据,无论数据表格是什么结构,你从数据库中把数据提取出来后,根据格式2组织好数据返回就行了。你说你不懂怎么从数据库提取数据?这……这,我也教不了。

要添加用户,先根据提交格式把数据提取出来,然后使用自己的数据库添加数据方式把数据添加到数据库,根据数据返回格式2,把成功添加或添加失败的信息返回客户端,就是这么简单。编辑和删除的基本步骤也是这样的。

至于权限的控制,各种语言都有自己的方式,最简单的就是在各操作方法头部进行验证,如果验证发现不符合权限要求,那就根据数据返回格式2返回一个success为false,Msg信息为“您没有权限访问”的数据就行了。

数据处理方式清楚后,余下的就是要让Ext JS各操作的数据提交地址与服务器中的方法对应上,这个有Web开发基础的,不会太难。

以上粗略的介绍了将本示例修改为不同语言的版本的方式,如果有什么不明白的地方,欢迎给笔者留言,共同探讨不同语言的开发方式。如果有兴趣将本示例修改为不同语言版本的,而无从下手的,也欢迎与笔者联系,共同把本示例修改为不同语言版本的示例,供大家学习。


转载于:https://www.cnblogs.com/muyuge/archive/2012/09/29/6333745.html

相关文章:

[面试]future模式

Future模式 什么是future模式? 传统单线程环境下,调用函数是同步的,必须等待程序返回结果后,才可进行其他处理。 Futrue模式下,调用方式改为异步。 Futrue模式的核心在于:充分利用主函数中的等待时间,利用…

java ide

tidespringsource sts a vmware product plugin:Aptana Studio 3(集成了Git) Run on Jettyeclipse for jee plugin:JBoss Tools,m2eclipe,spirng tools,svn

成长秘笈:是你教我,不是我教你

郑昀 20180622 “谢谢你,你是第一个面试的时候跟我说这么详细的。那我到你们公司之后怎么就能成长了呢?” “你们这些人最大的问题是出不了方案。 为什么出不了方案? 因为没有养成深度思考问题的习惯。 实现方案、算法、数据迁移、准备数据、…

计算机网络面试题(一)

1、OSI,TCP/IP,五层协议的体系结构,以及各层协议 OSI分层 (7层):物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。 TCP/IP分层(4层):网络接口 网络层、运…

Ubuntu下安装和配置Apache2

在Ubuntu中安装apache 安装指令:sudo apt-get install apache2 安装结束后: 产生的启动和停止文件是:/etc/init.d/apache2 启动:sudo apache2ctl -k start 停止:sudo apache2ctl -k stop 重新启动:sudo apa…

苹果电脑安装python3密码_mac系统安装Python3初体验

前沿 对于iOS开发不要随便拆卸系统自带的Python,因为有很多 library 还是使用 Python2.7。 1 安装Xcode 1.1 App Store 搜索Xcode 并安装 1.2 安装 Xcode command line tool 1.2.1 打开命令行terminal工具 control space 输入terminal 回车 1.2.2 安装Xcode command line tool…

【IBM Tivoli Identity Manager 学习文档】3 系统部署

作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ ITIM 5.0 单服务器配置和部署。 部署ITIM之前要对其组件进行部署: IBM DB2 Enterprise 9.1 with FP2 IBM WebSphere Application Server 6.1 with FP9 IBM Tivoli Directory Server 6.2 IB…

数据结构Java版之红黑树(八)

红黑树是一种自动平衡的二叉查找树,因为存在红黑规则,所以有效的防止了二叉树退化成了链表,且查找和删除的速度都很快,时间复杂度为log(n)。 什么是红黑规则? 1.根节点必须是黑色的。 2.节点颜色要么是红要么是黑。 3.…

你真的了解Grid布局吗?

Grid网格布局 概述:Grid将容器划分为一个个网格,通过任意组合不同的网格,做出你想想要的布局 Grid与flex布局相似,将整个Grid分为了容器与子项(格子) Grid容器的三个重要的概念: 行和列单元格网…

webform里的验证控件

1.非空验证控件:RequireFieldValidator ;2.数据比较验证:CompareValidator ;3.数据范围验证:RangeValidator ;4.正则表达式验证:RegularExpressionValidator ;5.自定义条件验证&…

hash是线程安全的吗?怎么解决?_这次进程、线程、多线程和线程安全问题,一次性帮你全解决了...

1. 什么是进程一个软件,在操作系统中运行时,我们称其为进程。进程是操作系统分配资源的最小单元,线程是操作系统调度的最小单元。2. 什么是线程在一个进程中,每个独立的功能都需要独立的去运行,这时又需要把当前这个进…

WinXP不能共享Win7的打印机的解决方法

现在很多企业里存在着WinXP和Win7混用,WinXP不能正常共享Win7的文件和打印机,经过设置发现Win7可以Ping通Winxp并且也可以发现WinXP的共享文件,可是WinXP却不能共享Win7的文件和打印机,看了一下相关资料后简单设置就解决了这个问题…

第三阶段 10_JavaWeb基础_

因为要准备接本,不一定能够每天更新 转载于:https://www.cnblogs.com/BaiZe258/p/9251075.html

工厂模式(Factory)(转)

先来明确一个问题,那就是有的时候,实例化这个活动不应该总是公开的进行, 也就是不要公开的使用 new 操作符,因为,这样容易造成耦合问题。 我们不应该针对实现编程,但是当我们在使用 new 的时候,…

Asp.net后台创建HTML

为了使HTML界面中的内容能根据数据库中的内容动态显示用户需要的内容,或者根据权限不同要显示同而实现页面内容的动态创建 使用HtmlGenericControl创建HTML标签 引入命名空间: using System.Web.UI.HtmlControls; 更改其属性: hgg_div.Attributes.Add("style&q…

oracle视图(转)

视图的概念 视图是基于一张表或多张表或另外一个视图的逻辑表。视图不同于表,视图本身不包含任何数据。表是实际独立存在的实体,是用于存储数据的基本结构。而视图只是一种定义,对应一个查询语句。视图的数据都来自于某些表,这些…

Redis 事物

redis 事物: Redis 事物的实现: 首先 wath监控键值 myKey开启批量执行 multi,执行命令入列,执行 exec 。如果监控的键值mykey 没有被修改过,则exec 中批量执行的命令成功,否则执行失败。无论执行成功与否&a…

python dos攻击_利用SMB漏洞DoS攻击任何Windows系统

原标题:利用SMB漏洞DoS攻击任何Windows系统近日微软报出SMB V1存在漏洞,安全研究员并将此漏洞称作 “ SMBLoris ”,解释其能够发动拒绝服务(Dos)攻击,可以感染 Windows 2000 及以上操作系统的任一版本 SMB …

java基础编程题(2)

1、给定一个二叉树,找出其最大深度。 注:二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode(int x…

python元组转字典_python中怎么将元组、字典转化为列表

python中将元组、字典转化为列表的方法: python中可以使用list()方法将元组或字典转化为列表: list()方法语法:list( tup ) 参数 tup -- 要转换为列表的元组。 返回值 返回列表。 示例: 将元组转换为列表:#!/usr/bin/p…

搭建Git服务器教程转载

1. 在Windows下使用sshmsysgit客户端搭建Git服务器 http://www.codeproject.com/Articles/296398/Step-by-Step-Setup-Git-Server-on-Windows-with-CopS 2. 在Windows下使用Apachemsysgit客户端搭建Git服务器 http://www.devbean.info/2011/10/apache-git-server-on-windows/ 3…

存储过程处理错误数据

create or replace procedure ERR_REDUCEDATA is --sx --定义变量 v_realindiobjid VARCHAR2(100); v_indiobjid VARCHAR2(32); v_residuemoney number ; v_reducemoney number ; v_approbjid VARCHAR2(32); -- v_indiecoid VARCHAR2(32); --v_indiecocode VARCHAR2(32); v_Ap…

[置顶] 面向业务开发应用

自从计算机出现后,快速便捷的从太平洋一样的文海中找到水滴大小的资料真正成为了可能,而能够帮助人们实现这一愿望的程序员就像中世纪的航海家一样用神秘的代码程序指引着计算机一步一步实现的需求。而他们所用的被称之为“程序”的序列组合,…

vector方法

借鉴网上资料&#xff0c;整理了vector使用的一些方法&#xff0c;记录下来&#xff0c;方便以后查阅 vector初始化 vector<int>a(10) //只定义长度 vector<int>a(10,1)//长度为10&#xff0c;初始值为1 vector<int>a(b); //用b向量来创建a向量&#xff0c;…

MyEclipse Enterprise Workbench 9.0 破解及注册机 注册码

MyEclipse 9.0的激活机制终于破解了&#xff0c;破解步骤比老版本要复杂一些&#xff0c;但是是绝对可以破解的&#xff0c;这个破解对主程序无任何修改&#xff0c;只替换公钥&#xff0c;如果有牛人会快速从公钥反推私钥&#xff0c;那就什么都不用改了&#xff0c;步骤如下&…

python字典一键多值_python字典中如何一键多值的写入?

python字典中如何一键多值的写入&#xff1f; python字典中一键多值写入的方法&#xff1a; 1、循环写入字典key、value、删除指定的键值对&#xff1a; 原文本‘jp_url.txt’每行元素以逗号分隔:host_key,product_id,product_name,cont_start,cont_end ah2.zhangyue.com,10000…

向实现细节低头

本来想搞明白所有的东西&#xff0c;然后自己集成&#xff0c;避免引入额外的组件&#xff0c;避免复杂的维护成本。 现在想想&#xff0c;相比于投入的巨大精力&#xff0c;其收益过小&#xff0c;还是要有所取舍。转载于:https://www.cnblogs.com/youge-OneSQL/p/9268924.htm…

Session丢值的问题

本来本地调试好好的,一上服务器session就非常容易丢失,表现在,用window.href跳转丢session,用httpmoulde丢session,在frame里面ifarme里面丢session,折磨了一天,才知道是因为应用程序池的原因,一个池里面放了太多网站,导致session丢失(系统还没有上线,光放那也不行), 还有应用程…

换发型app任性扣费?苹果app订阅任性扣费?怎么办?刚成功

2019年9月18日17:09:27 什么黑猫举报没用 先关闭订阅 账户中心自助申请试试&#xff0c;不通过再进行下面这步 https://getsupport.apple.com/?callerhome&PRKEYS 技术支持网址 然后就等电话吧&#xff0c;一般10秒钟就打过来了。 告诉原因&#xff0c;提供收费的订单号&a…