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小应用的实现整理与分析的更多相关文章
- jqGrid pivot获取所有行包括小计数据及原码分析
1.结论:按正常jqGid获取,在中间加入以下代码,即将小计行当成改变为普能行,以便能让'getRowData'方法获取到,第三点会进行原码分析 //get all page grid data,in ...
- 微信小游戏 demo 飞机大战 代码分析(四)(enemy.js, bullet.js, index.js)
微信小游戏 demo 飞机大战 代码分析(四)(enemy.js, bullet.js, index.js) 微信小游戏 demo 飞机大战 代码分析(一)(main.js) 微信小游戏 demo 飞 ...
- 微信小游戏 demo 飞机大战 代码分析 (三)(spirit.js, animation.js)
微信小游戏 demo 飞机大战 代码分析(三)(spirit.js, animation.js) 微信小游戏 demo 飞机大战 代码分析(一)(main.js) 微信小游戏 demo 飞机大战 代码 ...
- 微信小游戏 demo 飞机大战 代码分析 (二)(databus.js)
微信小游戏 demo 飞机大战 代码分析(二)(databus.js) 微信小游戏 demo 飞机大战 代码分析(一)(main.js) 微信小游戏 demo 飞机大战 代码分析(三)(spirit. ...
- 微信小游戏 demo 飞机大战 代码分析 (一)(game.js, main.js)
微信小游戏 demo 飞机大战 代码分析(一)(main.js) 微信小游戏 demo 飞机大战 代码分析(二)(databus.js) 微信小游戏 demo 飞机大战 代码分析(三)(spirit. ...
- QQ宠物吹泡泡游戏小助手 VC++6.0代码分析
最近玩QQ宠物,他总是心情低落,让我很不爽,让他玩耍吧,还得自己点鼠标,所以想偷个懒,试试能不能编个程序让电脑帮我做这个事情. 要干这件事就得先找一个游戏开刀,刚开始我找的是弹力球游戏,不就是点鼠标么 ...
- Java小例子(学习整理)-----学生管理系统-控制台版
1.功能介绍: 首先,这个小案例没有使用数据库,用集合的形式暂时保存数据,做测试! 功能: 增加学生信息 删除学生信息 修改学生信息 查询学生信息: 按照学号(精确查询) 按照姓名(模糊查询) 打 ...
- python flask框架学习(三)——豆瓣微信小程序案例(二)整理封装block,模板的继承
我们所要实现的效果: 点击电影的更多,跳转到更多的电影页面:点击电视剧的更多,跳转到更多的电视剧页面. 三个页面的风格相同,可以设置一个模板,三个页面都继承这个模板 1.在指定模板之前,把css放在一 ...
- 小师妹学JVM之:逃逸分析和TLAB
目录 简介 逃逸分析和栈上分配 TLAB简介 TLAB详解 设置TLAB空间的大小 TLAB中大对象的分配 TLAB空间中的浪费 总结 简介 逃逸分析我们在JDK14中JVM的性能优化一文中已经讲过了 ...
随机推荐
- select查询原理
原文:select查询原理 我并非专业DBA,但做为B/S架构的开发人员,总是离不开数据库,一般开发员只会应用SQL的四条经典语句:select ,insert,delete,update.但是我从来 ...
- C# WebBrowser 代理的使用
原文:C# WebBrowser 代理的使用 The WebBrowser control is just an embeddded IE Control, I believe any setting ...
- Asp.Net MVC5入门学习系列②
原文:Asp.Net MVC5入门学习系列② 添加一个Controller(控制器) 因为我们用的是Asp.Net MVC,MVC最终还是一套框架,所以我们还是需要遵循它才能玩下去,或者说是更好的利用 ...
- 互联网创业应该如何找到创意 - RethinkDB创始人Slava Akhmechet的几点建议
关于作者 我叫Slava Akhmechet,本人是 RethinkDB 的创始人之一,RethinkDB是一个设计来帮助开发者和运营团队来处理无结构数据的一个开源的分布式数据库,用户可以使用它来作为 ...
- 让IE6支持position:fixed的方法,CSS expression与JavaScript eval讲解
做吸顶效果或是固定效果时,使用position:fixed无非是最方便的,可是万恶的IE6是没有fixed这个属性值的,而我们要使IE6能够像fixed一样固定在浏览器中的某个位置,使用onscrol ...
- request.getparameter和 request.getattribute的差别
request.getAttribute():是request时设置的变量的值,用request.setAttribute("name","您自己的值");来设 ...
- UVA-11134-Fabled Rooks (结构排序+贪婪)
这个问题更像八皇后问题,但在位置在大选前必须进行排序,让左侧的优选位置,我没想到这死脑筋! 行,这个问题是不是代码贴. 版权声明:本文博客原创文章.博客,未经同意,不得转载.
- Crystal Report 在 VS 2010 中的使用和发布
原文:Crystal Report 在 VS 2010 中的使用和发布 使用: 打开CrystalReport官网下载页 目前最新版本为13.0.4 选择“SAP Crystal Reports, v ...
- 安装Windows2003操作系统 - 初学者系列 - 学习者系列文章
Windows 2003是一款经典的服务器操作系统.以前笔者工作的时候就是用的这款操作系统来进行编程的.下面就对该操作系统的安装进行介绍(部分步骤参见XP的安装http://www.cnblogs.c ...
- java在string和int相互转化
1 如何串 String 转换成整数 int? A. 有两种方法: 1). int i = Integer.parseInt([String]); 或 i = Integer.parseInt([St ...