EXTJS和javaweb应用的开发思路

近期。做些几个基于extjs界面的应用。在此。总结一下要点。标题是基于javaweb,可是基本上各种server端语言都适用。使用Extjs做界面,无非就是取消了原来非常多的jsp文件,转而使用Extjs来訪问,但有些地方多少有些不方便,下面是我自己遇到的问题和经验。

1.多少个jsp合适呢?没有特殊要求的话,2个就能够,一个是login,一个是系统主页。登录页一般须要比較花哨。单独做一页。比較easy套用样式;主页则包括基本的布局。功能,而功能靠extjs来实现。对于一些特殊的页面。比方须要特定html头(doctype/指定特定的ie版本号等)的页面/activex控件,仅仅能单独用一个页面去搞,在Extjs中能够使用Panel里面的html属性指定一个iframe来载入此页面。

2.获得登录用户相关的信息或者server端信息(如当前日期,js里的时间非常多时候须要真正的当前日期,而不是client上的时间。不靠谱啊)。这个我使用server端程序生成一个mime类型为text/javascript的page。能够是servlet/action之类的东西,然后再首页上当作js文件来引用。

这样就不须要用ajax去server取,效率较高其执行稳定。假设这有的信息须要更新。比方用户改动了自己的真实姓名,能够又一次载入这个server端的js。我用了jquery的$.getScript方式来更新。也就是用户改动自己的信息成功后,调用$.getScript(‘userdata.action‘,callback)这样的方式。

3.登录超时的推断。

这里须要2种推断:1是用户刷新主页面,这就用普通的Filter来推断,超时了就跳回登录页;2时ajax请求的时候推断超时。当然也是用filter。可是用js构建界面无法响应filter中进行的跳转,须要加点处理。让js能够获得超时的信息,并用js进行跳转。

比方没有超时,给httpHeader添加个sessionstatus=pass这种值,

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
		HttpServletRequest req = (HttpServletRequest)request;

		Member currentMember = SysUtil.getCurrentMember(req);//获得当前登录用户
		HttpServletResponse rep = ((HttpServletResponse)response);
		if(currentMember != null){
			rep.setHeader("sessionstatus", "pass");
chain.doFilter(request, response);
 }}
<pre>

server端filter的代码可能是这样:

<p></p><p>在client,用Extjs的Ajax事件进行捕捉,比如:</p><p></p><pre code_snippet_id="480857" snippet_file_name="blog_20141008_2_738930" name="code" class="javascript">Ext.Ajax.on('requestcomplete',checkUserSessionStatus, this);
function checkUserSessionStatus(conn,response,options){
//alert("checkUserSessionStatus")
    //Ext又一次封装了response对象
if(response.getResponseHeader){
var sessionstatus = response.getResponseHeader("sessionstatus");
if(sessionstatus != 'pass'){
       alert("登录超时,又一次进入系统");
       window.location = "login.jsp";
}
}

}

4.javascript闭包的使用。在普通页面里能够不用闭包。由于页面引用的js相对较少,无用的js文件能够不引用,要找个js文件中的内容相对easy。

而基于extjs或者其它js界面框架的程序,js文件肯定非常多,并且大部分都须要在系统主页上引用,这非常可能造成查找一个函数非常吃力的情况,也不利于编写清晰的代码。所以必须使用闭包来把各个功能里面的js函数区分开。比方能够用ProjectName.modelName这样的方式来分包,比方创建用户列表的函数位于UserInfo.js里面,此能够这样写:

var MyProject.UserInfo = {};//MyProject应该在主js文件里定义,如var MyProject = {};
MyProject.UserInfo.createUserList = function(){
   //创建用户列表面板的代码。。

。
}
				
时间: 2024-08-08 01:29:26

EXTJS和javaweb应用的开发思路的相关文章

AppleWatch开发入门一——Watch的开发思路与应用框架

AppleWatch开发入门一--Watch的开发思路与应用框架 一.引言 Apple Watch无疑是apple在智能手表领域的一次革命,如何在Watch上开发出实用且具有美感的应用,是iOS开发者们开始思考的一个问题,由于watch的随身性和快捷性,在某些方面,它有比iphone更加大的优势,要抓住watch的这些特点,开发出淋漓尽致的应用,就需要改变一些在iphone开发的思路,正如一句话:只有忘掉经验,才会有意想不到的突破. 这一系列博客,首先是总结我在公司watch项目开发中的一些经验

linux在线预览pdf文件开发思路

准备:swftools,flexpaper 基本思路: 1,将pdf文件转化成swf文件 2,使用flexpaper预览swf文件 主要代码: 1,在linux中安装swftools.官网下载swftools 安装包,解压 2,./configure --prefix=安装路径 make install 执行完之后,执行pdf2swf -help 如果显示.说明安装成功 如果执行pdf2swf -help  显示commond not find 的话,可能需要配置swftools的环境变量,具体

微信小程序开发思路

小程序还没有完全开放,不能真实体验,但通过文档和开发工具,可以了解到他的开发思路 下面就介绍下小程序的开发方式,希望能帮助有兴趣的朋友对整体思路有个快速了解 整体结构 默认示例项目的目录结构 从后缀名上可以看到,一共有4种类型: js 逻辑代码wxml 视图文件wxss 样式文件json 配置信息/app.js 中可以定义小程序在启动时做哪些业务逻辑.全局函数.全局数据-- App({ onLaunch: function () { ... }, getUserInfo:function(cb)

Lync二次开发思路

Lync作为目前最为强大的企业及时通信工具,目前被众多大企业所使用(这里就废话去介绍了),其与硬件及自家产品的集成非常强大.但是其即时通信功能,尤其是国内的用户大多习惯了QQ的截图.消息记录.离线留言等功能,另外如何更好的与企业现有的业务系统进行整合,这都需要进行一定的开发工作. 通常Lync的开发技术路线有两种:一种是无UI开发模式,另一种是以插件形式(且称为有UI模式). 无UI模式:即自己重新开发Lync客户端界面,后台进程运行原有的Lync进程,通过Lync SKD去调用响应的模块. 有

Halcon学习笔记——机器视觉应用工程开发思路及相机标定

机器视觉应用工程开发思路 机器视觉应用工程主要可划分为两大部分,硬件部分和软件部分. 1.硬件部分,硬件的选型至关重要,决定了后续工作是否可以正常开展,其中关键硬件部分包括:光源,相机以及镜头. 2.软件部分,目前业内商业库主要有Halcon,康耐视,DALSA,evision,NI等,开源库有OpenCV.其中NI的labview+vision模块. 机器视觉应用工程大致开发思路:       一.获取图像              图像采集可以来源多个途径,用算子read_image去读取图

基于利用Jquery模拟Extjs的Panel界面的开发

JQuery 是一个强大js 选择器的开源框架脚本,有了他,本来要写20多行的js脚本,现在只需要10行就能完成,可惜的是,在界面方面,他虽然有Jquery-ui, 但他并没有建立一整套开源成熟的组件,如果他像Extjs/sencha那么成熟的套件,相信会更多人爱他.而像extjs的juqery成熟的开发库 miniUI 却要收费. 所以我尝试,仿照Extjs,模拟重写像Extjs的一套Panel窗口 ,但代码量足足比Extjs/sencha少了50%. 下载连接: https://github

架构师速成6.3-设计开发思路

面向对象,是一个伟大的设计思想,应该是软件开发史上的一次革命. 当然理解面向对象也很难,有好多人用着面向对象的语言,写着面向过程的逻辑,而且一写就是好多年.但是有高手,用c照样可以写出很牛的面向对象的程序.面向对象其实是一种思考问题的方式,重点如下: 面向对象是用来反映显示世界的,而不是强行创造世界. 这句话,说起来简单,但是做起来很难.现实世界中你绝对不会把狗腿,按在一个人身上,但是写程序的时候,你常常会创造出一个狗腿人. 有人还会创造一些一些稀奇古怪的万能类,或者融合了n种物种的怪物.或者只

关于CAD的开发思路

原本我是想利用CAD的动态块与参数化来实现法兰的二次开发,只需要用程序把数据库和法兰动态块连接起来就OK了,但是从目前的研究情况来看,这一点未必可以做到,因为CAD中根本不支持环形陈列的参数化,环形陈列在CAD中是有并且2012后增强了其功能,但是环形陈列中的图元在生成陈列后其参数自动无效,这个无法实现的话直接会导致法兰盘(法兰的俯视图)无法实现参数化.当然可以通过程序来修改陈列源,但总觉得有些遗憾. 关于CAD的开发思路

高并发业务接口的开发思路(转)

高并发业务除了需要有支撑高并发的服务器架构,还需要根据业务需求和架构体系..设计出合理的开发方案,这里根据一个实践过业务场景分析开发思路,罗列出高并发接口需要注意的点,以及设计上的巧思,共勉之,望共鸣 . 业务场景 业务:今日好货.交互端:IOS/Andorid.需求点:(实际业务会复杂些,为了容易理解,这里简化需求点)提供最新的好货商品信息列表,支持分页.需要时时获取最新的商品数据列表,以下情况商品信息会发生变化● 品数据字段更新(人为编辑,热度字段更新,等)● 不定时上新,在固定时段会有大量