网站跳转qq链接怎么做的seo网站推广优化论文

web/2025/9/29 15:57:56/文章来源:
网站跳转qq链接怎么做的,seo网站推广优化论文,音乐排行榜网页设计作业,电脑网站首页设计如下图所示#xff0c;为Extjs部分代码提供的网页结构#xff1a;网站看上去本来是这样的前端采用ExtJS#xff0c;与后台的SpringMVCSpringHibernate进行数据交互。之前分析过登录的过程#xff0c;不赘述在loginController处理登录返回结果的最后#xff0c;如下语句也就… 如下图所示为Extjs部分代码提供的网页结构网站看上去本来是这样的前端采用ExtJS与后台的SpringMVCSpringHibernate进行数据交互。之前分析过登录的过程不赘述在loginController处理登录返回结果的最后如下语句也就是如果正确登录的话跳转到xtype为appcentral的页面这是一个普通的panel它的内容是经典的四分空间如果仔细看代码会看到就是我们这片博文最开始的那个示意图所示的分割方式。这里面我们重点看看“菜单”那个空间也就是left网页中菜单的形式是这样的下拉框的样子挺复杂但是点击最左侧的小三角也可以变换形式看到至少有两种其他表现形式下面看看ExtJS的代码是如何获取菜单内容的Central.js这个View带有一个ViewController名为CentralController.js这个View还带有一个ViewModel名为CentralModel.js样子如下在它的constructor方法中EU.RS()方法是作者自己定义的js方法。发送给SpringMVC看到buildListToTree()方法是static的因此可以直接使用没有什么依赖注入之类的。也不能这么说注入了一个一成不变的参数 Service public class SystemFrameService {Resourceprivate DaoImpl dao;SystemLogs(获取系统左侧树形菜单)public ListTreeNode getMenuTree() {String userid Local.getUserid();String usertype Local.getUserBean().getUsertype();String companyid Local.getCompanyid();String sql select a.menuid,a.menuname as text,a.parentid as parentId,a.icon,a.iconCls,a.iconColor, c.moduletype as type,c.modulesource as url,c.objectid,a.menutype,a.orderno,a.isexpand as expanded from f_companymenu a,f_companymodule b,f_module c where a.companyid b.companyid and a.cmoduleid b.cmoduleid and b.moduleid c.moduleid and a.companyid companyid ;if (!usertype.equals(01)) {sql and ( ( select count(1) c from f_modulefunction mf1,f_userfunctionlimit ufl where mf1.cmoduleid b.cmoduleid and mf1.functionid ufl.functionid and ufl.userid userid ) 0 or ( select count(1) c from f_modulefunction mf2,f_rolefunctionlimit rfl,f_userrole ur where mf2.cmoduleid b.cmoduleid and mf2.functionid rfl.functionid and rfl.roleid ur.roleid and ur.userid userid ) 0 ) ;}sql order by a.orderno;ListTreeNode dataList dao.executeSQLQuery(sql, TreeNode.class);MapString, TreeNode parentMap new HashMapString, TreeNode();for (TreeNode node : dataList) {if (!CommonUtils.isEmpty(node.getParentId())) {parentNode(parentMap, node);}}for (String key : parentMap.keySet()) {dataList.add(parentMap.get(key));}return dataList;} } 这部分获取参数的代码还是比较壮观的执行了sql而非hql语句返回值是自定义类型。上述sql语句中直接使用了数据库中数据表的名字和字段我们补充一下对应的信息其实在phpmyadmin中只能看到字段的含义数据表的内容是无法直观用图形的方式看到不同数据表之间关系的。推荐使用powerdesigner读取mysql导出的sql文件形成pdm图可以方便的看到数据库各种关系的全貌直观而且准确。 使用powerdesigner生成pdm图的过程可以参考http://blog.csdn.net/duanchangqing90/article/details/38089557这篇文章 使用chrome浏览器看看http request的内容以及response的内容Request URL:http://www.jhopesoft.com:8080/cfcmms/platform/systemframe/getmenutree.do也就是说前端和后台的通讯完全在意料之中。回到ExtJS代码中Central.js的ViewModel文件上述文件只是初始化为js中的变量menus赋值这些数据如何使用呢上图为菜单的View文件这些数据从后台返回并处理然后存放在js变量中赋值给store看来我对于filterer的猜测是错的下面看看TreeStore的root属性config对于Ext.data.TreeStore来说root属性中的expanded属性设置为true意味着不管这个store是否设置为autoLoad整个store都会直接load。写到这里我们还是没有搞清楚Component和Store之间是什么关系为什么这些数据可以被显示成View中菜单的样子。我们来看看Ext官网上 Ext.data.TreeStore 的案例代码 //Store部分的代码 var store Ext.create(Ext.data.TreeStore, {root: {expanded: true,children: [{ text: detention, leaf: true },{ text: homework, expanded: true, children: [{ text: book report, leaf: true },{ text: algebra, leaf: true}] },{ text: buy lottery tickets, leaf: true }]} });//View部分的代码 Ext.create(Ext.tree.Panel, {title: Simple Tree,width: 200,height: 500,store: store,rootVisible: false,renderTo: Ext.getBody() }); 上述代码的效果图如下 也就是说一个View和一个Store就可以轻易创建出上述样子的菜单。我们也看到treepanel没什么代码store的核心就是root children 和 text。很显然c必须是字符串的数组也就是 c [{text:菜单项1},{text:菜单项2},{text:菜单项3}] 那么菜单上面的文字必须出现在text这个属性中如下图我们看看c的来源就是Ext采用Ajax()方法对某个url发送request的返回值因此我们有必要先去浏览器的开发者工具看看返回值究竟是怎样的形式也就是说ajax发送的返回值在被ExtJS的js代码处理之前就已经有了text这个字段那么就肯定是Spring代码的自定义返回值就已经安排好的。上述的POJO是自定义返回值其中一个字段就是text而执行查询的executeSQLQuery()方法也是DAO中自定义返回值的查询方法非自定义返回值意味着采用PO作为返回类型上面的描述基本讲清楚了菜单上面的中文字符串的来源。 下面看看菜单上的菜单项点击以后有什么效果。菜单的View部分页面的本质是Ext.tree.Panel 上述js代码就是你点击菜单上的文字后将一个完全新的tab页并列到“首页”tab右边的js代码 /*** 将标准模块加入tabpanel中了如果已经有了就转至该tab页 itemId:module_(moduleName)*/addModuleToMainRegion : function(menuitem, donotActive) {var moduleName menuitem.moduleName;var menuid menuitem.menuid;var view this.getView().down(maincenter);var tabItemId module_ menuid; // tabPanel中的itemIdvar tab view.down( panel# tabItemId);// 查找当前主区域中是否已经加入了此模块了if (!tab) {var tabPanel null;// type : 01外部xtype03实体对象if (menuitem.type 01) {tabPanel Ext.getCmp(tabItemId);if (!tabPanel) {tabPanel Ext.create(menuitem.url, {id : tabItemId,autoDestroy : true,title : menuitem.text,closable : true});}} else if (menuitem.type 03) {tabPanel modules.getModuleInfo(moduleName).getModulePanel(tabItemId);}if (!tabPanel)return;if (!Ext.isEmpty(menuitem.glyph))tabPanel.glyph menuitem.glyph;if (!Ext.isEmpty(menuitem.iconCls))tabPanel.iconCls menuitem.iconCls;tab view.add(tabPanel);}if (!donotActive)view.setActiveTab(tab);} 这段代码应该好好学学 上图中item其实写到这里我的感觉就是强弩之末。你点击了菜单的某一个选项你想知道都发生了什么。 其实你很清楚不论点击那个菜单项结果是一样的在首页tab右边生成一个新的tab至于这个tab是什么结构里面是什么内容取决于菜单项的id之类的信息。也就是刚刚进入网站默认load那个treePanel也就是菜单。菜单是个treePanel刚进入网站的时候默认发送ajax类型的request获取了菜单的所有内容 那么点击了菜单项以后究竟发生了什么呢 我们之前分享的那段代码有一段十分重要 //定位到maincenter var view this.getView().down(maincenter); ................... //创建tabelse if (menuitem.type 03) {tabPanel modules.getModuleInfo(moduleName).getModulePanel(tabItemId);}......................//把tab加到view上也就是让它显示tab view.add(tabPanel); 上述代码的核心就是modules /*** 取得模块的定义* param {} moduleid ,参数可以是moduleid、modulecode、objectname、objectid* return {}*/getModuleInfo : function(moduleid){if (Ext.isEmpty(moduleid)) {EU.toastWarn(加载moduleid不能为空);return;}var me this,result me.modules.get(me.modulesKeys[moduleid.toUpperCase()]);if (result) return result;var url platform/module/getmoduleinfo.do,params {moduleid : moduleid};EU.RS({url : url,params : params,async : false,callback : function(moduleinfo){me.replaceRef(moduleinfo, moduleinfo);if (moduleinfo) {result new Ext.create(app.view.platform.module.ModuleInfo, moduleinfo);me.modules.add(moduleinfo.moduleid, result);me.modulesKeys[moduleinfo.moduleid.toUpperCase()] moduleinfo.moduleid;me.modulesKeys[moduleinfo.modulecode.toUpperCase()] moduleinfo.moduleid;me.modulesKeys[moduleinfo.fDataobject.objectid.toUpperCase()] moduleinfo.moduleid;me.modulesKeys[moduleinfo.fDataobject.objectname.toUpperCase()] moduleinfo.moduleid;} else {EU.toastWarn(加载 moduleid 的模块数据时失败);}}});return result;}, Ctrl H 搜索一下modulepanel 意味着同志们我们找到所有的核心了Module.js这个文件太关键了因为它就是模板这个文件就是个普通panel但是这个文件中定义了Store和Items也就是说你点击菜单项创建的新的tab取哪些数据显示哪些UI就完全取决于这个文件了~我们上代码 initComponent : function(){var me this;if (Ext.isObject(me.param)) Ext.apply(me, me.param)me.moduleInfo modules.getModuleInfo(me.moduleId);me.objectName me.moduleInfo.fDataobject.objectname;me.model me.moduleInfo.model;me.istreemodel me.moduleInfo.fDataobject.istreemodel;//Store是那种类型二选一me.store Ext.create(app.view.platform.module. (me.istreemodel ? treegrid.TreeGridStore : grid.GridStore), {module : me.moduleInfo,modulePanel : me,model : me.model});me.store.getProxy().extraParams.moduleName me.moduleInfo.fDataobject.objectname;if (me.parentFilter) me.store.parentFilter me.parentFilter;me.enableNavigate !me.istreemodel me.enableNavigate (me.moduleInfo.fDataobject.navigatedesign || me.moduleInfo.getNavigateSchemeCount() 0);me.collapseNavigate me.moduleInfo.getNavigateSchemeCount() 0 || me.collapseNavigate;me.defaults {moduleInfo : me.moduleInfo,objectName : me.objectName,modulePanel : me,parentFilter : me.parentFilter};//Items中的核心UI Componentvar center {xtype : me.istreemodel ? moduletreegrid : modulegrid,store : me.store,region : center,modulePanel : me,inWindow : me.inWindow};me.items [me.centerRegionNest ? {xtype : panel,region : center,layout : fit,items : [Ext.apply(center, me.defaults)]} : center]; 写到这里真的写不下去了因为你为什么这么傻呢读代码多枯燥啊我们直接去chrome上看数据传递不就很直观么走着我们看到执行了三次requestgetmoduleinfo.dofetchdata.do这明显就是发送给SpringMVC的如果看看response中的数据getmoduleinfo.dofetchdata.do看上去上面两类request分别用来获取整个模板的数据和数据库中对应数据的数据。fetchdata.do在整个代码中只出现一次靠复用啊我们看到了一个经典的Store看到了吧完美

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/83977.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

保定软件开发网站制作平安保险网站官方网址

Oracle的 Java 8 的HotSpot实现中引入的一些小但受欢迎的功能之一是在启动器的文档中添加了许多常见的HotSpot Java启动器 ( java )选项/标志。 过去,即使是对某些相当常见的HotSpot JVM选项也感兴趣的开发人员 ,不得不潜在地寻找…

做一个网站一般需要多少钱什么是网站挂马

Vscode配置STM32开发环境(替代Keil MDK/IAR) 前言 使用了很长时间的Keil5 MDK,以及最近用了一段时间的IAR for ARM,总体来说体验都不是特别的好,Keil功能还行,也不卡顿,就是开发效率、界面样式…

桐庐县住房和城乡建设局网站常州制作网站

认识webpack 面向过程开发的不便引入外部js执行顺序面向对象开发 加载多个文件耗时更多 增加了http请求 引入过多js变量来源不明 优化 使用前先import 但使用import语法需要借助工具webpack翻译为浏览器可以解析的语法安装node自动携带npmwebpack若没有全局安装 需要使用npx…

网站建设 预算wordpress的搜索结果

把接口url替换就可以用了 exportExcel () {wx.request({url: importMyApply, //这个地方是你获取二进制流的接口地址method: POST,responseType: "arraybuffer", //特别注意的是此处是请求文件流必须加上的属性,不然你导出到手机上的时候打不开&#xff…

单位做网站费用怎么记账18款禁游戏黄app入口

下载地址:网盘下载 简介编辑《DB2 SQL性能调优秘笈》是一本不可多得的DB2数据库性能调优秘笈,由拥有20余年DB2工作经验的资深数据库专家撰写,Amazon全五星评价畅销书。《DB2 SQL性能调优秘笈》不仅详尽阐述了100余条SQL语句优化的技巧和最佳实…

wordpress后台运行慢阳江做网站seo

低代码系列文章: 可视化拖拽组件库一些技术要点原理分析可视化拖拽组件库一些技术要点原理分析(二)可视化拖拽组件库一些技术要点原理分析(三)可视化拖拽组件库一些技术要点原理分析(四)低代码…

跨境网站有哪些平台网店运营流程步骤

在绘图的过程中经常需要查询和计算图形的面积,网上有不少人问这方面的问题。都市领航教育将计算面积的方法和相关命令整理一下,希望对初学者有帮助。 查询图形的面积 我们利用边界或编辑多段线命令生成了多段线和面域,不需要再使用查询面积命…

广东省网站开发建设wordpress在线问答插件

1、概念软件系统的评价分为广义评价和狭义评价。广义评价:主要是指系统从开发开始到结束的过程中,每个阶段都要进行系统评价。狭义评价:主要是指在系统建成后并投入运行之后进行全面、综合的评价。2、广义评价分类根据时间与软件系统所处的阶…

电子商务网站模版江苏做网站公司排名

先来看运行后出来的效果 它是在不停运行的一个立方体 先来看html部分的代码 <div class"rect-wrap"> <!--舞台元素&#xff0c;设置perspective&#xff0c;让其子元素获得透视效果。--><div class"container"> <!-- 容器&#…

输入网站域名跨境电商资讯网

本系列文章简介&#xff1a; 在现代的软件开发中&#xff0c;高性能和高可用性是每个开发者都追求的目标。然而&#xff0c;随着数据量和访问频率的不断增长&#xff0c;传统的数据库存储方案往往难以应对这种挑战。这就引出了一个问题&#xff1a;如何在保证数据的高效访问和持…

天津做网站联系方式在线写代码的网站

---恢复内容开始--- 准备公工作 1.去官网下载jar和war 开发工具 eclipse 开始开发:gogogo 1:建立一个可以跑起来的javaweb项目,最基本的就可以了. 2:导入commons-logging-1.0.4.jar,dwr.jar 3:在web.xml里配置一下 <?xml version"1.0" encoding"UTF-8"…

广告协会网站建设方案营销网络和网络营销的区别

转载于:https://www.cnblogs.com/569114a/p/4179164.html

微网站开发项目合作协议建设一个手机网站

本篇是与上篇HttpClient有关联的&#xff0c;有前篇中&#xff0c;我们是直接使用HttpClient来发出请求的&#xff0c;所有的请求信息都是我们根据需要自己来填充的。那Refit是什么呢&#xff1f;它是一个让我们调用API就像调用一个对象的方法一样简单&#xff0c;是通过把http…

兰州新区建设银行网站泰州市城市建设网站

文章目录 C特殊类实现1.设计一个类、不能被拷贝2.设计一个类、只能在堆上创建对象3.设计一个类、只能在栈上创建对象4.设计一个类、不能被继承5.设计一个类&#xff0c;只能创建一个对象(单例模式)5.1饿汉模式5.2懒汉模式 C 特殊类实现 1.设计一个类、不能被拷贝 在C中&#x…

济宁网站建设 水木ktv网站建设方案

和你一起终身学习&#xff0c;这里是程序员Android 经典好文推荐&#xff0c;通过阅读本文&#xff0c;您将收获以下知识点: 一、高温触发 Kernel Exception 重启问题二、解决方案三、提高电池温度方案 一、 高温触发 Kernel Exception 重启问题 手机 电池温度 默认60度以上高温…

制作ppt的基本做法辽宁网络优化方法

如何有效的推广网站 适合没钱的中小站长 唐世军 a5总经理 博客 门户网站广告报价—以新浪为例 贵的一天30多万 碧蓝天营销学院 网络营销&#xff0c;你真的了解吗&#xff1f; SEO工具mozBar介绍、友情链接新参考mozRank 谈谈网络推广团队每天工作流程、工作标准、考核 请问安卓…

wordpress 多域名多站点自己做的网站点进去很卡

教程网址1&#xff1a;UI 新手如何从设计规范中提升自己 推荐一下高质量的设计规范 满屏干货 语雀 B站地址1&#xff1a;新像素 UI 新手如何从设计规范中提升自己 推荐一下高质量的设计规范 满屏干货 UI设计培训_哔哩哔哩_bilibili 教程地址2&#xff1a;UI 新手成长经验分享…

做网站横幅技巧深圳做网站推荐哪家公司

大家在学习各种编程语言的时候都会在代码里面添加一些注释&#xff0c;这个也是为了方便日后对代码的查找和修改&#xff0c;各种编程语言的注释方式略有不同&#xff0c;Python3语言也一样有自己的注释方式&#xff0c;下面我们来了解一下都有哪几种。 确保对模块&#xff0c;…

卧龙区网站建设页面妇产医院网络建设公司

首先来看,字符串转换成int 很简单 float转换成int 会把小数点后面的内容丢掉 boolean转换为int true是1 false 是0 然后字符串转换为int,要注意 不能有特殊字符比如1.23 中有点 就报错 上面字符串12ab,有ab也报错 看上面