Webx小应用的实现整理与分析

初次在园子里与大家分享自己的所学,欢迎各种指点~                            By 仰城 2013-08-07

  学习一段时间webx、ibatis、spring以及maven的基本知识之后,应用它们实现了一个web应用的简单功能。这篇文章主要对这个应用的实现过程进行一些描述以及分析。后续将更加深入地对一些细节进行总结。

构建应用

  功能:用户注册、用户登录;

  技术框架:webx(表现层),spring(业务层),ibatis(数据层);

  前置准备:安装jdk6、eclipse、maven,并进行相关配置;

  实现过程主要包括:创建新项目、配置pom.xml文件、实现用户注册登录功能、建立数据库、创建DAO。具体如下图所示:

分析

http请求处理流程分析

  应用构建的基本流程了解之后,我们需要对应用处理请求的流程进行分析。

  这里用户通过URL:http://localhost:80/index.htm来访问webx应用。

  当http请求到达时,由WebxFrameworkFilter接手这个请求,其中WebxFrameworkFillter定义如下:

  WebxFrameworkFilter会排除或略过指定的URL。如果一个请求被排除,webx将会立即放弃控制,将请求交还给服务器,该请求无法访问webx的一切服务。

  通过的请求会经过一系列的流程并到达pipeline,然后pipeline依次执行它的valves。如下图所示:

  由于这个请求(http://localhost:80/index.htm)并没有业务逻辑,因此不需要screen类,只需要有模板就可以了。因此依次执行到<renderTemplate>渲染模板,此时,target为index.vm,webx turbine会查找templates/screen下是否有index.vm模板,

  1.如果未找到,则会报404 not found错误;

  2.如果找到screen模板,webx Turbine会查找下面的layout模板:

    1)Templates/layout/index

    2)Templates/default

  Layout模板如果找不到,就直接渲染screen模板;如果找到,则把渲染screen模板后的结果嵌入到layout模板中。

表单提交处理过程分析

  首先,index.vm中关键定义如下:

  提交表单请求之后,调用action目录下的RegisterAction类的doLogin方法,如下图所示:

  @FormGroup(“registerOrlogin”)User user将表单中的参数注入到User对象中。之后通过调用DAO提供的数据访问接口(具体原理及过程见后续文章),判断用户名和密码是否正确,并返回用户信息。返回成功则进行相应的跳转。

Webx小应用的实现整理与分析的更多相关文章

  1. jqGrid pivot获取所有行包括小计数据及原码分析

    1.结论:按正常jqGid获取,在中间加入以下代码,即将小计行当成改变为普能行,以便能让'getRowData'方法获取到,第三点会进行原码分析 //get all page grid data,in ...

  2. 微信小游戏 demo 飞机大战 代码分析(四)(enemy.js, bullet.js, index.js)

    微信小游戏 demo 飞机大战 代码分析(四)(enemy.js, bullet.js, index.js) 微信小游戏 demo 飞机大战 代码分析(一)(main.js) 微信小游戏 demo 飞 ...

  3. 微信小游戏 demo 飞机大战 代码分析 (三)(spirit.js, animation.js)

    微信小游戏 demo 飞机大战 代码分析(三)(spirit.js, animation.js) 微信小游戏 demo 飞机大战 代码分析(一)(main.js) 微信小游戏 demo 飞机大战 代码 ...

  4. 微信小游戏 demo 飞机大战 代码分析 (二)(databus.js)

    微信小游戏 demo 飞机大战 代码分析(二)(databus.js) 微信小游戏 demo 飞机大战 代码分析(一)(main.js) 微信小游戏 demo 飞机大战 代码分析(三)(spirit. ...

  5. 微信小游戏 demo 飞机大战 代码分析 (一)(game.js, main.js)

    微信小游戏 demo 飞机大战 代码分析(一)(main.js) 微信小游戏 demo 飞机大战 代码分析(二)(databus.js) 微信小游戏 demo 飞机大战 代码分析(三)(spirit. ...

  6. QQ宠物吹泡泡游戏小助手 VC++6.0代码分析

    最近玩QQ宠物,他总是心情低落,让我很不爽,让他玩耍吧,还得自己点鼠标,所以想偷个懒,试试能不能编个程序让电脑帮我做这个事情. 要干这件事就得先找一个游戏开刀,刚开始我找的是弹力球游戏,不就是点鼠标么 ...

  7. Java小例子(学习整理)-----学生管理系统-控制台版

    1.功能介绍: 首先,这个小案例没有使用数据库,用集合的形式暂时保存数据,做测试! 功能: 增加学生信息 删除学生信息 修改学生信息 查询学生信息:  按照学号(精确查询)  按照姓名(模糊查询) 打 ...

  8. python flask框架学习(三)——豆瓣微信小程序案例(二)整理封装block,模板的继承

    我们所要实现的效果: 点击电影的更多,跳转到更多的电影页面:点击电视剧的更多,跳转到更多的电视剧页面. 三个页面的风格相同,可以设置一个模板,三个页面都继承这个模板 1.在指定模板之前,把css放在一 ...

  9. 小师妹学JVM之:逃逸分析和TLAB

    目录 简介 逃逸分析和栈上分配 TLAB简介 TLAB详解 设置TLAB空间的大小 TLAB中大对象的分配 TLAB空间中的浪费 总结 简介 逃逸分析我们在JDK14中JVM的性能优化一文中已经讲过了 ...

随机推荐

  1. MongoDB在window下的安装

    1.下载mongodb的windows版本号,有32位和64位版本号,依据系统情况下载,下载地址:http://www.mongodb.org/downloads 2.解压缩至D:/mongodb就可 ...

  2. cocos2d-x多分辨率和随后的自适应CCListView的bug修复

    cocos2d-x多分辨率自适配及因此导致的CCListView的bug修复 cocos2d-x是一款众所周知的跨平台的游戏开发引擎.因为其跨平台的特性.多分辨率支持也自然就有其需求. 因此.在某一次 ...

  3. zsh的安装与配置

    参考: http://cnbin.github.io/blog/2015/06/01/mac-zsh-an-zhuang-he-shi-yong/ http://www.cnblogs.com/ios ...

  4. cocos2d-x plist在拍照

    if(!CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName("scrollicon_bg.png" ...

  5. RESTful API的设计原则

    好RESTful API的设计原则   说在前面,这篇文章是无意中发现的,因为感觉写的很好,所以翻译了一下.由于英文水平有限,难免有出错的地方,请看官理解一下.翻译和校正文章花了我大约2周的业余时间, ...

  6. thrift实现js与C#通讯

    利用thrift实现js与C#通讯的实例代码 1.为什么要用thrift js C#? 1.1 首先,js 通过 thrift 访问C#,实际上是一种c/s模式.thrift是通信工具,js是客户端, ...

  7. lib库实现loadrunner驱动mysql性能测试

    一.添加mysql驱动链接文件到loadrunner的bin和include目录下  以下链接为本人云盘分享,也可百度自行寻找下载源. http://yunpan.cn/cfTxbANSvipGi  ...

  8. Junit指定测试运行顺序

    原文链接: Test execution order原始日期: 2012年12月06日本期: 2014年7月2日翻译人员: 铁锚 说明: Junit4.11版本号及以后才支持,建议升级到最新版本号. ...

  9. php 链接中加参数传递

    原文:php 链接中加参数传递 php链接中加参数是在源链接中加"?",问号之后就可以跟参数列表,para1=value1&para2=value2&para3=v ...

  10. 使用 C# 进行 Outlook 2007 编程

    原文:使用 C# 进行 Outlook 2007 编程 探讨如何使用 C# 编程语言生成 Outlook 识别的应用程序和 Outlook 外接程序. 请从"Add References&q ...