webx框架和SeaJS学习

  1. 云栖社区>
  2. 博客>
  3. 正文

webx框架和SeaJS学习

神巧合 2016-08-28 14:09:00 浏览2376
展开阅读全文

根据ID查询

http://localhost:8080/project/studentRpc/displayStudent.json?id=1


新增
http://localhost:8080/project/studentRpc/newStudent.json?name=袁海&sex=男&grade=2&team=1&age=28&teacher=wang

根据Id删除

http://localhost:8080/project/studentRpc/11/deleteStudentById.json

分页查询
http://localhost:8080/project/studentRpc/queryPage.json?pageIndex=1

更新数据
http://localhost:8080/project/studentRpc/11/updateStudent.json?name=袁海&sex=男&grade=2&team=1&age=28&teacher=wang

模糊查询
http://localhost:8080/project/studentRpc/fuzzyQuery.json?name=王



webx 中request 对象作为单例注入的实现

http://www.bubuko.com/infodetail-708149.html




查看页面:
http://localhost:8080/project/student/studentshow.htm?pageIndex=1

生成随机验证码:

http://localhost:8080/project/registerRpc/randomPassword.json



成功案例代码下载地址
后台svn地址
http://svn.alibaba-inc.com/repos/meteora/branches/20160118_520245_crawling_1/
前台git地址
http://gitlab.alibaba-inc.com/platform/finance_meteora_two


oracle shield数据库
ERP_8036 =
  (DESCRIPTION=
    (ADDRESS_LIST =
       (ADDRESS=(PROTOCOL=tcp)(HOST=erpdb8036.alibabacorp.com)(PORT=1557))
    )
      (CONNECT_DATA=
      (SERVICE_NAME=erp8036)
      )
   )
8035开发库 shield_app/shield8035

ERP_8035 =
  (DESCRIPTION=
    (ADDRESS_LIST =
       (ADDRESS=(PROTOCOL=tcp)(HOST=erpdb8035.alibabacorp.com)(PORT=1556))
    )
      (CONNECT_DATA=
      (SERVICE_NAME=erp8035)
      )
   )
8036测试库 shield_app/shield8036
8035开发库 shield_app/shield8035
单元测试库 SHIELD_UTEST/shield_utest8035




Velocity
"!"用来强制把不存在的变量显示为空白。
如当页面中包含$msg,如果msg对象有值,将显示msg的值,如果不存在msg对象同,则在页面中将显示$msg字符。这是我们不希望的,为了把不存 在的变量或变量值为null的对象显示为空白,则只需要在变量名前加一个“!”号即可。
如:$!msg


sea.js
在 CMD 模块定义规范中,一个模块就是一个文件
参考文章:
https://github.com/seajs/seajs/issues/242

exports 是指向的 module.exports 的引用
module.exports 初始值为一个空对象 {},所以 exports 初始值也是 {}
require() 返回的是 module.exports 而不是 exports

https://cnodejs.org/topic/5231a630101e574521e45ef8


sea.js 加载Handlebars模板引擎
http://blog.csdn.net/cdnight/article/details/43448941


Handlebars语法
http://segmentfault.com/a/1190000000342636?from=androidqq

{{{ 不转义  (< 转换为&lt;)

this和event.target的区别
js中事件是会冒泡的,所以this是可以变化的,但event.target不会变化,它永远是直接接受事件的目标DOM元素;

jQuery对事件监听函数,都会默认传递一个参数,一般命名为event或e(非必须,也可以任意命名)

e,event参数中支持下列属性:
event.stopPropagation(); 停止事件冒泡的方法
event.preventDefault(); 阻止默认行为--如超链接的跳转

更简单的方式:
return false,对上面两种都起同样的作用

参考文章:http://my.oschina.net/guomingliang/blog/307813



bootstrap按钮样式和学习
http://www.jb51.net/web/249439.html
http://www.runoob.com/bootstrap/bootstrap-forms.html


前端环境搭建步骤
1.node.js安装 http://nodejs.org/download/

2.Git安装 http://git-scm.com/download (配置git参考地址http://blog.csdn.net/hsany330/article/details/24034219)

3.克隆仓库 git clone git@gitlab.alibaba-inc.com:platform/shield.git

4.gulp的安装 npm install
npm install gulp -g

5.http-server安装 npm install http-server -g

7.在项目目录shield的父目录下面,启动前端服务器 http-server -p 80 --cors

备注:


git图文入门教程 http://rogerdudler.github.io/git-guide/index.zh.html

gitlab地址 http://gitlab.alibaba-inc.com/platform/shield







4. WebX的请求执行流程

  1.对于URL:http://localhost:7001/petstore/user/account/edit.htm(htm是为了兼容过去的DOS命名格式存在的,在效果上没有区的,HTM 为DOS三字符文件扩展名时代而来;HTML为Windows时代支持多字符扩展名)

  我们知道http(协议)、localhost(Server name可以在C:\Windows\System32\drivers\etc\hosts中来配置)、7001(端口号)、petstore(context path)、user(conponent path)、account/edit.htm(servlet path)、account/edit.vm(target)。

  2.根据端口号,服务器把该请求交给petstore应用,再根据/account/edit.htm(Servlet Path路径)。在web.xml中把*.htm映射到Webx Controller Servlet,所以Webx Controller Servlet就接管了这个请求。

  3.Webx Controller Servlet激活pipeline,而用AnalyzeURLValve分析/edit.htm是什么意思。根据webx默认的映射,/edit.htm被映射成/ edit.vm。

  4.根据target查找screen模板:/screen/edit.vm,假如target的值:/xxx/yyy/edit.vm,那么,valve会:在/templates/screen目下,找到/xxx/yyy/edit.vm模板。然后依次查找screen类:xxx.yyy.Edit (如果找不到,下一个)、xxx.yyy.Default (如果找不到,下一个)、xxx.Default (如果找不到,下一个)、Default (如果找不到,下一个)、TemplateScreen (系统默screen,不可能找不到的)。

  5.screen类,渲染screen模板。如果存在layout布局,渲染layout,screen类,并渲染screen模板。根据target查找layout模板,渲染layout模板。

  6.渲染在layout模板中引用的两个control:head.vm:在head.car中查找/control/head.vm;bottom.vm :在bottom.car中查找/control/bottom.vm。



request请求-->>piepline解析target参数-->>表单验证-->>screen类或action类

每个模块都有对应的control, layout, screen这种结构和目录; layout是一个页面的布局即显示screen和control的内容, 一个页面只可以有且最多一个screen但可以有多个control;一个 screen中可以包含多个control;

java每个模块的包结构也要与页面的control, screen对应;特殊的如表单提交还需要action包用来处理表单提交的数据;如果请求找的是screen那么先到layout包下找与screen名称对应的layout如果没有就默认寻找default(例如找screen下的index.vm找到后就会去layout下找index.vm没有就找default.vm), 还有一点要注意如果screen页面要处理数据那么src下的模块对应的screen包中就要有与盛放screen资源页面名称对应的screen类(例如:index.vm找的就去找Index.java来处理数据返回数据可以通过context.put方法);control也是如此, 如果没有数据需要进行处理可以src下的模块的control包可以不要;

最后一种特殊的情况是没有screen页面直接请求src包下screen包下的类(相当于ajax)这种情况时请求路径不需要通过screen页面去找同名的screen类, 直接找screen类时需要在路径结尾加.json或.do


为什么数据库中的where语句不能写在order by后面

这是SQL的约定格式。从思维概念上讲: 先对数据及进行条件过滤筛选, 再对结果集合进行排序




投资测试账号:
13112345678/taobao1234

数据库设计申请
https://idb.alibaba-inc.com/


ABF
mybatis层地址
http://svn.alibaba-inc.com/repos/uyuni-api/branches/20150930_394415_reconstruction_1

web项目地址
http://svn.alibaba-inc.com/repos/uyuni/branches/20151228_493053_capital_1




工作任务

1.注册生态圈账号接口
http://localhost:8080/project/registerRpc/register.json?name=yuanhai2&mobile=15851965932&email=jethai@126.com


2.登录接口
邮箱登录
http://localhost:8080/project/loginRpc/login.json?loginName=jethai@126.com&passWord=GoCwuy
or
http://localhost:8080/project/loginRpc/login.json?loginName=15851965931&passWord=GoCwuy


手机登录
http://localhost:8080/project/loginRpc/login.json?loginName=15851965932&passWord=yue789


3.修改密码confirmPassword=123456
http://localhost:8080/project/loginRpc/modifyPassword.json?email=jethai@126.com&&newPassword=123456&&confirmPassword=123456

1的算法明文hello1234运算出来为

9a1996efc97181f0aee18321aa3b3b12

淘宝API
    淘宝账号相关API
    http://baichuan.taobao.com/doc2/detail?spm=0.0.0.0.m3ehCf&treeId=40&articleId=102959&docType=1

    生成账号:
    http://open.taobao.com/doc2/apiDetail.htm?spm=0.0.0.0.mug569&apiId=24821
    http://open.taobao.com/doc2/detail.htm?spm=0.0.0.0.oXqQG7&treeId=1&articleId=103376&docType=1

    top网关,API服务地址
    http://gw.api.taobao.com/router/rest


修改D:\work\uyuni\pom.xml
<dependency>
  <groupId>com.taobao.baichuan</groupId>
  <artifactId>openaccount.api</artifactId>
  <version>0.1.3</version>
</dependency>


HSF 接口注入 hsf-bean.xml.vm
<bean id="openAccountService" class="com.taobao.hsf.app.spring.util.HSFSpringConsumerBean" autowire="byName">
    <property name="interfaceName">
      <value>com.taobao.baichuan.openaccount.api.OpenAccountService</value>
    </property>
    <property name="version">
      <value>${open_account_service_version}</value>
    </property>
    <property name="group">
      <value>HSF</value>
    </property>
  </bean>



登录页面
http://docs.alibaba-inc.com:8090/pages/viewpage.action?pageId=248135891

 base.xml.vm
<bean id="MyRockEnv" class="com.alibaba.uyuni.common.util.Environment">
<property name="iframeJsUrl" value="${iframe_js_url}" />   

login.vm
登录js插件
<script type="text/javascript" charset="utf-8" src="$MyRockEnv.iframeJsUrl"></script>
实际显示
 <script type="text/javascript" charset="utf-8" src="https://login-openaccount.daily.taobao.net/assets/js/mini-login-embedderV3.js?v=579228"></script>

iframeJsUrl
https://login-openaccount.daily.taobao.net/assets/js/mini-login-embedderV3.js?v=579228   测试环境使用
对应的 iframeUrl
https://login-openaccount.daily.taobao.net/login/mini_login.htm


生产环境

iframeJsUrl
<script type="text/javascript" charset="utf-8" src="https://login-openaccount.taobao.com/assets/js/mini-login-embedderV3.js?v=579228"></script>

iframeUrl
https://login-openaccount.taobao.com/login/mini_login.htm




mybatis不需要配置update和delete,insert的返回类型,默认返回int
<update id="update" parameterType="string">
对应的mapper
public int update(String);


声明的全局boolean变量默认值是false。

本文出自 “点滴积累” 博客,请务必保留此出处http://tianxingzhe.blog.51cto.com/3390077/1741289

网友评论

登录后评论
0/500
评论