Sword框架解析——知识采集流程页面初始化
来源:互联网 发布:数据采集系统101data 编辑:程序博客网 时间:2024/06/13 02:29
Sword框架解析——知识采集流程页面初始化
- Sword框架解析知识采集流程页面初始化
- 问题解答流程采集新增页面初始化
- 1后台t_xt_gnzy表和BLH类
- 2BLH类的写法前台目录树代码
- 3登录系统开启权限
- 4页面树iframe加载
- 问题解答流程采集新增页面初始化
声明:目前因为是初学者小白,现阶段不去考虑架构底层的东西,比如:BaseZrarBlh类是如何通过factory创建;框架是如何将spring、spring mvc、hibernate封装的;一些具体的基础组件是额如何封装的,这个后续再去讨论和研究,目前现阶段,是了解清楚他的用法,清楚的展现出来,说明他是怎么用的即可。
问题解答流程——采集新增页面初始化
1.1后台t_xt_gnzy表和BLH类
正式开始,以模仿问题解答采集流程为例:
先在t_xt_gnzy表中添加一个问题解答采集的模仿数据,这个表主要存放的是页面左边的菜单栏的数据,后续这些数据会通过封装在框架中的特定方法去调用后台对应的java类的特定方法去跳转页面。
图1 .1.1 系统页面菜单栏展示
图1.1.2 oracle数据库t_xt_gnzy表存放的菜单栏数据信息
跳转的关键就在于URL里面存储的sword?tid=ZskwtwhnewBLH_toZskwtwhNewTree&wtwhlx=zscj这种数据。我们可以发现,在前端数据传递到后台处理的时候,也是类似的用法,其中也包括我们经常用的ajax,框架的ajax也是经过特殊封装的,但是原理是一样的。
在数据库中存放的url,后续会通过框架中的特有方式执行:
图1.1.3 t_xt_gnzy中的url
sword?tid=ZskwtwhnewBLH_toZskwtwhNewTree&wtwhlx=zscj
以“_”作为分界线:
前面的地址是后台BLH类的唯一标识符,在本例中是:ZskwtwhnewBLH
。
后面的部分,到&之前,是对应类的方法名的唯一标示符,在本例中是:toZskwtwhNewTree
。
&之后,是我们需要向后台传值的部分,在本例中,传递了一个名叫“wtwhlx”的值,具体值是:zscj,一般在这里传递的值,都是用来控制页面展示的一些参数
。
1.2BLH类的写法&前台目录树代码
(1)BLH类
前面我们提到了,在数据库中的url包含了两个【唯一标识符】的问题
@BLH("ZskwtwhnewBLH")public class ZskwtwhnewBLH extends BaseZrarBlh { private static final String WtwhVO_Form = "wtwhFormID"; private static final String WtwhVO_Grid = "wtwhGridID"; //问题维护初始化页面跳转 public IResData toZskwtwhNewTree(IReqData req){ IResData res=new SwordRes(); //判断树页面右边加载的iframe类型 String wtwhlx=(String)req.getAttr("wtwhlx"); res.addJSTL("wtwhlx", wtwhlx); if("zscj".equals(wtwhlx)){ res.addJSTL("scrolling", "no"); }else{ res.addJSTL("scrolling", "yes"); } res.addPage("zrarpages/main/zsk/zlwh/wtwh_new_tree.jsp"); return res; }
代码段1.2.1 ZskwtwhnewBLH类
表中sword?tid=ZskwtwhnewBLH_toZskwtwhNewTree&wtwhlx=zscj
1.ZskwtwhnewBLH对应代码中的注解@BLH("ZskwtwhnewBLH"),这两个地方要写得一模一样,具体原理不解释,是sword框架封装之后所实现的效果。
2.toZskwtwhNewTree是对应@BLH("ZskwtwhnewBLH")这个注解所在的类下面的toZskwtwhNewTree方法
3&wtwhlx=zscj传递了wtwhlx的值,这个值决定了传递到页面的scrolling值是no还是yes,在这里,我们得到wtwhlx的值是zjcs,所以传递到页面的scrolling值是no。
(2)前台目录树
核心代码块如下:
<body class="body_bq"> <div class="div_bq"> <div class="pad_8" id="ie6_wid"> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td class="shu_2"> <div class="tree_td_div"><span><%=ZskConstants.ZSK_ZLFLAG_WT_NAME %></span></div> <div sword='SwordTree' id="SwordTreeWT" name="zskTree" onCreateNode="createNode()" tid="ZskTreeBLH_zskInitTree?zltype=wtjd" ltid="ZskTreeBLH_zskLoadTree" onNodeClick="zsk_redirectURL('<c:out value="${wtwhlx }"/>','<c:out value="${ zlcode}"/>', '<c:out value="${ zltypemc}"/>')" lazyLayer="2" laztTime="200"></div> </td> <td style="width:8px;"></td> <td valign='top' id="main"> <iframe frameborder="0" width="100%" name="viewView" id="viewView" scrolling='<c:out value="${scrolling}"/>'></iframe> </td> </tr> </table> </div> </div></body>
代码段1.2.2 wtwh_new_tree.jsp 查询左侧目录树
1.我们可以发现,在这句代码中:
<div sword='SwordTree' id="SwordTreeWT" name="zskTree" onCreateNode="createNode()" tid="ZskTreeBLH_zskInitTree?zltype=wtjd" ltid="ZskTreeBLH_zskLoadTree"onNodeClick="zsk_redirectURL('<c:out value="${wtwhlx }"/>','<c:out value="${ zlcode}"/>', '<c:out value="${ zltypemc}"/>')" lazyLayer="2" laztTime="200"></div>`
用
tid="ZskTreeBLH_zskInitTree?zltype=wtjd"
ltid="ZskTreeBLH_zskLoadTree"
的方法去调用java类的相关方法。
用
框架封装的createNode();zsk_redirectURL(...,...,...)
的方法实现目录树的使用。
2.知道上述功能即可,具体目录树如何实现的相关代码不做进一步深入
1.3登录系统开启权限
在t_xt_gnzy中添加了数据之后,我们会发现在页面的【知识采集】菜单栏中点开,并没有出现我们自定义的【问题解答】菜单,这是因为sword系统的权限过滤和我之前做的系统的权限过滤是不同的:
之前不管是scm系统也好,自行车项目也好,权限过滤模块的设计是,账户登录之后可以看到所有的模块,对于自己没有权限的模块,可以看见,但是没有办法编辑。
而现在的sword系统是:对于账户没有开通的权限部分,在菜单栏里面是不会展示出来的。
那么,为了让我们添加的新菜单能够展示出来,我们需要按照图示的路径去开通【问题解答】模块的权限:
图1.3.1 权限管理页面
在下图中,开启【问题解答】权限:
图1.3.2 开启【问题解答】权限
开启权限之后,用具备该权限的账号去登录系统-【知识管理】-【知识采集】
页面中就可以看到【问题解答】模块了:
图1.3.3 问题采集模块
1.4页面树&iframe加载
(1)页面树
当我们写好了后台和前台页面之后,点击问题解答,将出现下述页面,
前台只显示左侧的目录树:
图1.4.1 页面测试
(2)iframe加载
核心代码如下:
//初始化加载iframe的页面。对于zltypemc参数,1.知识采集待办传"zlcjdb" 2.首页采集待办传"cjdb"3.维护列表传"wh" //根据后台传过来的数据,根据不同的业务类别,去加载相应的【自增】【维护】【审批】页面 function zsk_reloadView(wtwhlx,zlcode,zltypemc,ywlb){ if(wtwhlx=="zscj"){ document.getElementById("viewView").src="sword?tid=ZskwtwhBLH_zskwtwhAdd&zltype=<%=ZskConstants.ZSK_ZLFLAG_WT %>" }else if(wtwhlx=="modify"){ document.getElementById("viewView").src="sword?tid=ZskwtwhBLH_zskwtwhModify&zlcode="+zlcode+"&cjdb="+zltypemc+"&ywlb="+ywlb; }else if(wtwhlx=="glwzadd"||wtwhlx=="glwzmodify"){ document.getElemenetById("viewView").src="sword?tid=ZskZhcxBLH_zhcxInit&zlflag2&zltype=2&glzltype="+zlcode+"&glzltypemc="+encodeURI(zltypemc)+"&whlx="+wtwhlx+"&ywlb="+ywlb; }else{ document.getElementById("viewView").src="sword?tid=ZskwtwhBLH_zskwtwhFindList&zltype=<%=ZskConstants.ZSK_ZLFLAG_WT %>" } } //自动题解iframe高度——设置页面的高度 function setHeight(){ var h=parent.zsk_getH(); $('viewView').setStyle('height',h-18); $('SwordTreeWT').set('height',h-45+"px"); }
代码块1.4.1 ifarme加载
<div Sword="PageInit" onBefore="setHeight()" onFinish="zsk_reloadView('<c:out value="${wtwhlx}"/>','<c:out value="${zlcode}"/>','<c:out value="${zltypemc}"/>')".'<c:out value="${ ywlb}"/>')"></div>
代码块1.4.2 jsp页面加载完成后执行
这里的jsp代码段,表达在页面加载之前,执行setHeight()方法,用于设置页面高度
在页面加载完成之后执行zsk_reloadView()方法用于调用后台java代码查询相关数据、返回页面内容,放到wtwh_new_tree.jsp页面的id为viewView的ifame里面作为内容展示出来。
(3) BLH新增问题跳转zskwtwhAdd&wtwh_add.jsp
详细代码这里不做进一步详解。
测试之后,会得到如图所示的页面:
图1.4.2 问题解答采集新增页面的形成过程
- Sword框架解析——知识采集流程页面初始化
- Beego源码解析(一)——配置项初始化流程
- [Python]网络数据采集概述(1)—页面访问及页面元素的解析
- Struts框架初始化流程
- 框架初始化流程
- The Chrysanthemum and the Sword——菊与刀
- Struts框架的初始化流程
- django框架流程解析
- Spring框架解析一【初始化】
- 嵌入式LINUX环境下视频采集知识—V4L2原理
- C++知识框架解析(1)
- NGINX的HTTP框架的初始化流程
- springMVC框架初始化流程的初步理解
- vlc框架流程解析(转)
- SylixOS CAN总线初始化流程解析
- 流程型知识管理功能框架
- Log4j源码解析--框架流程+核心解析
- v4l2视频采集之——图像显示问题解析
- abap 函数弹出磁盘文件选择界面
- 关于Android studio 导入速度慢的问题(说的就是你gradle)
- WEB安全-伪造X-Forwarded-For绕过服务器IP地址过滤
- hdoj1047 Integer Inquiry(大整数的相加)
- golang日記
- Sword框架解析——知识采集流程页面初始化
- 台湾大学林轩田机器学习基石课程学习笔记15 -- Validation
- HashSet的去重问题
- Socket编程
- Android ROM的制作与烧录
- 石子合并(NOI1995)
- win7 下tensorflow安装
- TCP udp数据传输协议
- 2017.5.27测试 1. 排队