开发者社区> 神巧合> 正文

webx框架和SeaJS学习

简介: 根据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/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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
JavaScript 对象入门使用JSON
JavaScript对象表示法(JSON)是用于将结构化数据表示为JavaScript对象的标准格式,通常用于在网站上表示和传输数据
4 0
[翻译] 国外大神的js 分号使用指南
• Required: When two statements are on the same line 必备: 当两个语句在同一行时 var i = 0; i++ // <-- semicolon obligatory // (but optional before newline) var i = 0 // <-- semicolon optional i++ // <-- semicolon optional • Optional: After statement
3 0
JS 函数
函数定义 在JavaScript中另一个基本概念是函数, 它允许你在一个代码块中存储一段用于处理单任务的代码,然后在任何你需要的时候用一个简短的命令来调用,而不是把相同的代码写很多次。
4 0
Mac 下 Oh my zsh + iTerm2 初体验
iTerm2是 Terminal 的替代品,也是 iTerm 的继承者。 它适用于 macOS 10.12或更新版本的 mac 电脑。 iTerm2将终端带入了现代社会,带来了一些你从来不知道自己一直想要的功能。
3 0
ESC阿里云服务器学习使用心得
在大一学习微信小程序时,以ESC阿里云服务器为后台进行学习时的心得分享。
8 0
spring security技术分享(二)
用户认证就是判断一个用户的身份是否合法的过程,用户去访问系统资源时系统要求验证用户的身份信息,身份合法方可继续访问,不合法则拒绝访问。 认证是确认某主体在某系统中是否合法、可用的过程。这里的主体既可以是登录系统的用户,也可以是接入的设备或者其他系统。
5 0
牛逼!TCP 粘拆包问题及 Netty 中的解决方案
本文选自 Doocs 开源社区旗下“源码猎人”项目,作者 AmyliaY。
5 0
深挖 Redis 6.0 源码—— SDS
SDS(Simple Dynamic Strings, 简单动态字符串)是 Redis 的一种基本数据结构,主要是用于存储字符串和整数。 这篇文章里,我们就来探讨一下 Redis SDS 这种数据结构的底层实现原理。
4 0
给力!Java 并发之 Semaphore 源码剖析!
Semaphore 信号量,可用于控制一定时间内,并发执行的线程数,基于 AQS 实现。可应用于网关限流、资源限制 (如 最大可发起连接数)。由于 release() 释放许可时,未对释放许可数做限制,所以可以通过该方法增加总的许可数量。
5 0
这个开源库,快速生成全局唯一头像!
我给大家找了一个非常好用的开源库—— Generate Avatar。作者 Lorenz Weiß,是一名来自国外的 Web 开发者。
6 0
+关注
346
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
OceanBase 入门到实战教程
立即下载
阿里云图数据库GDB,加速开启“图智”未来.ppt
立即下载
实时数仓Hologres技术实战一本通2.0版(下)
立即下载