近期。做些几个基于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(){
//创建用户列表面板的代码。。 。
}

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

  1. halcon学习笔记——机器视觉工程应用的开发思路【转】

    转自:http://www.cnblogs.com/hanzhaoxin/archive/2013/02/15/2912879.html 机器视觉工程应用主要可划分为硬件和软件两大部分. 硬件:工程应 ...

  2. Android常见开发思路

    开发思路 刷新: 重新获取数据 清空list 更新适配器 关闭进度条. 加载更多 1. 重新获取数据 添加list 更新适配器 添加轮播条. 自己设计轮播条View 引入lib库文件 设置轮播条数据. ...

  3. JavaWeb网站后台开发记录手册

    1.javaweb网站后台开发 1.封装DBTools类 1.注册数据库驱动 Class.forName("oracle.jdbc.driver.OracleDriver"); 2 ...

  4. OpenWRT - WEB界面开发思路和基本方法

    想要对OpenWRT的WEB界面(*下称界面)进行修改.修改的目标是: 1.修改页面的样式,设计为企业的风格(stylesheet) 2.新建自己的功能,实现 访问页面后,用户就可以对配置文件(也就是 ...

  5. 初次接触ARM开发,理清这四个开发思路很重要!

    初次接触ARM开发,理清这四个开发思路很重要! 由于涉及编程,学习ARM单片机系统对于从事电子电路的设计者来说是有些困难的,学习知识不难,难的是理清其中的开发思路,找到一个好的起点.本文就将从这一步入 ...

  6. 微信小程序开发思路

    小程序还没有完全开放,不能真实体验,但通过文档和开发工具,可以了解到他的开发思路 下面就介绍下小程序的开发方式,希望能帮助有兴趣的朋友对整体思路有个快速了解 整体结构 默认示例项目的目录结构 从后缀名 ...

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

    机器视觉应用工程开发思路 机器视觉应用工程主要可划分为两大部分,硬件部分和软件部分. 1.硬件部分,硬件的选型至关重要,决定了后续工作是否可以正常开展,其中关键硬件部分包括:光源,相机以及镜头. 2. ...

  8. 微信小程序红包开发思路 微信红包小程序开发思路讲解

    之前公司开发小程序红包,将自己在开发的过程中遇到的一些坑分享到了博客里.不少人看了以后,还是不明白怎么开发.也加了我微信咨询.所以今天,我就特意再写一篇文章,这次就不谈我开发中遇到的坑了.就主要给大家 ...

  9. halcon机器视觉工程开发思路

    参考:halcon学习笔记——机器视觉工程应用的开发思路https://www.cnblogs.com/hanzhaoxin/archive/2013/02/15/2912879.html

随机推荐

  1. 【Tomcat】严重: Context [/grouponAdminWeb] startup failed due to previous errors

    1 tomcat 6600启动报错[root@localhost webapps]#     sh /usr/local/apache-tomcat-6.0.37_6600/bin/startup.s ...

  2. JdbcTemplate简单介绍

    转自:http://www.php.cn/java-article-368819.html 一.关于JdbcTemplate JdbcTemplate是最基本的Spring JDBC模板,这个模板支持 ...

  3. solr/lucence和关系数据库的混合使用

    我们知道solr提供了一个DIHandler,提供将关系数据库中的数据导成索引,然后使用solr查询. 对于一个大表中关联数个小表的查询,这非常耗费时间. 我的思路是: 1. 将一个大表做成索引,使用 ...

  4. jedate-开始使用一款好用的时间插件

    jeDate日期控件 -(原生JS版)jeDate V6.5.0 是一款原生JS开发的 不依赖任何第三方库 大众化的日期控件,包含 多语言.设定年月(YYYY-MM).日期范围限制.开始日期设定.自定 ...

  5. 【原创】面向对象版本地CPU资源占用监控脚本

    前期准备: 1.python2.7环境 2.相关第三方库下载安装 脚本工作过程: 1.根据输入的进程名判断进程是否存在,如果不存在则进行等待,直到检测到进程PID,中途进程退出抛出异常,键入enter ...

  6. 微信支付v2开发(2) 微信支付账号体系

    本文介绍微信支付账号体系各参数. 商户在微信公众平台提交申请资料以及银行账户资料,资料审核通过并签约后,可以获得表6-4所示帐户(包含财付通的相关支付资金账户),用于公众帐号支付. 帐号 作用 app ...

  7. POJ 1852 Ants || UVA 10881 - Piotr's Ants 经典的蚂蚁问题

    两题很有趣挺经典的蚂蚁问题. 1.n只蚂蚁以1cm/s的速度在长为L的竿上爬行,当蚂蚁爬到竿子的端点就会掉落.当两只蚂蚁相撞时,只能各自反向爬回去.对于每只蚂蚁,给出距离左端的距离xi,但不知道它的朝 ...

  8. 【hdu 1403】Longest Common Substring

    [链接]h在这里写链接 [题意] 求两个串的最长公共子串. [题解] Sa[i]表示的是字典序为i的后缀的起始位置. 可以把两个字符串合在一起(中间用一个比'z'大的字符分割); 则如果Sa[i-1] ...

  9. 使用doxygen为C/C++程序生成中文文档

    文章来自:http://www.fmddlmyy.cn/text21.html 依照约定的格式凝视源码,用工具处理凝视过的源码产生文档.通过这样的方式产生文档至少有下面优点: 便于代码和文档保持同步. ...

  10. Android5.0(Lollipop) BLE蓝牙4.0+浅析demo连接(三)

    作者:Bgwan链接:https://zhuanlan.zhihu.com/p/23363591来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. Android5.0(L ...