基于jquery的页面分屏切换模板
闲来无事,搞了个页面的分屏效果,先来看下效果:
出于可自定义宽高的目的,屏幕分块由CSS控制,由js控制估计等分模块效果一般.
程序相关说明:
HTML结构:
- <div class="header">
- header
- </div>
- <div class="container" id="displayArea">
- <!-- 分屏内容渲染区域 -->
- </div>
- <div class="footer">
- <!--省略其他代码-->
- </div>
js调用:
- //分屏数据
- var iframes = [
- {
- id:'frames_1',
- frameName:'百度一下',
- src:'http://www.baidu.com'
- },
- {
- id:'frames_1',
- frameName:'百度地图',
- src:'http://map.baidu.com'
- },
- {
- id:'frames_1',
- frameName:'百度下',
- src:'http://www.baidu.com'
- },
- {
- id:'frames_1',
- frameName:'百度视频',
- src:'http://v.baidu.com'
- },
- {
- id:'frames_1',
- frameName:'百度新闻2',
- src:'http://news.baidu.com'
- },
- {
- id:'frames_1',
- frameName:'test6',
- src:'6.html'
- },
- {
- id:'frames_1',
- frameName:'百度新闻',
- src:'http://news.baidu.com'
- },
- {
- id:'frames_1',
- frameName:'88888',
- src:'6.html'
- },
- {
- id:'frames_1',
- frameName:'百度更多',
- src:'http://www.baidu.com/more/'
- }
- ];
- //自适应屏幕
- window.onload = function(){
- Panel.resize();
- }
- window.onresize = function(){
- Panel.resize();
- }
- //初始化分屏
- var splitScreen = new splitScreen($('#displayArea'),iframes);
- //监听removeSettingCls自定义事件
- splitScreen._on('removeSettingCls',function(){
- splitScreen.toggleTopbar(function(){
- $('.ulTab li[data-fp="setting"]').removeClass('currentLi');
- });
- });
- //分屏切换
- function changeModel(obj){
- var fpmodel = $(obj).attr('data-fp');
- if(fpmodel !="setting"){
- splitScreen.screenMode(fpmodel,function(){
- $(obj).addClass('currentLi').siblings().removeClass('currentLi');
- });
- }else{
- splitScreen.toggleTopbar(function(){
- $(obj).toggleClass('currentLi');
- });
- }
- }
splitScreen.js相关代码说明:
1.定义一个类
- var splitScreen = function(elem, options) {
- this.elem = elem; //分屏模块渲染区域元素
- this.options = options;//分屏链接数据
- this.initialize.apply(this); //初始化初始化分屏
- }
2.prototype主要方法
- splitScreen.prototype= {
- initialize: function() {},//初始化方法
- screenMode: function(){},//分屏方法
- renderPanel:function(){},//渲染分屏DOM
- bindPanel:function(){} //事件监听
- };
3.screenMode()方法说明:
主要是根据不同的分屏切换不同的Class,通过CSS类去控制分屏布局.这样写的好处应该是可以自定义布局的宽高大小,但是比较繁琐。如下:
- switch (Number(mode)) {
- case 1:
- this.data = [
- ['fp-1-1']
- ];
- this.defaultShow = [0];
- break;
- case 2:
- this.data = [
- ['fp-2-1'],
- ['fp-2-2']
- ];
- this.defaultShow = [1, 2];
- break;
- case 3:
- this.data = [
- ['fp-3-1'],
- ['fp-3-2', 'fp-3-3']
- ];
- this.defaultShow = [1, 2, 3];
- break;
- case 4:
- this.data = [
- ['fp-4-1', 'fp-4-2'],
- ['fp-4-3', 'fp-4-4']
- ];
- this.defaultShow = [4, 1, 2, 3];
- break;
- case 5:
- this.data = [
- ['fp-5-1'],
- ['fp-5-2'],
- ['fp-5-3', 'fp-5-4', 'fp-5-5']
- ];
- this.defaultShow = [4, 5, 1, 2, 3];
- break;
- case 6:
- this.data = [
- ['fp-6-1'],
- ['fp-6-2', 'fp-6-3'],
- ['fp-6-4', 'fp-6-5', 'fp-6-6']
- ];
- this.defaultShow = [4, 5, 6, 7, 8, 8];
- break;
- default:
- alert("不支持" + mode + "分屏");
- }
CSS布局控制:
- .fp-box{position:absolute;border:1px solid #000;background:#fff;}
- .fp-1-1{top:;left:;right:;bottom:;}
- .fp-2-1{top:;left:;right: 300px;bottom:;}
- .fp-2-2{top:;right: 0px;bottom:; width: 300px;}
- .fp-3-1{top:;left:;right: 300px;bottom:;}
- .fp-3-2{top:;right:;width:300px;height:50%;}
- .fp-3-3{top:50%;right:;bottom:;width:300px;}
- .fp-4-1{top:;left:;right: 50%;height:50%;}
- .fp-4-2{top:50%;left:;right: 50%;bottom:;}
- .fp-4-3{top:;right:;width:50%;height:50%;}
- .fp-4-4{top:50%;right:;bottom:;width:50%;}
- .fp-5-1{top:;left:;right: 300px;bottom: 252px;}
- .fp-5-2{top:0px;width:300px;right:;bottom: 252px;}
- .fp-5-3{height: 250px;left:;width:30%;bottom:;}
- .fp-5-4{height: 250px;left:30%;width:30%;bottom:;}
- .fp-5-5{height: 250px;left:60%;bottom:;right:;}
- .fp-6-1{top:;left:;right: 300px;bottom: 252px;}
- .fp-6-2{top:;width:300px;right:;height:250px;}
- .fp-6-3{top:250px;width:300px;right:;bottom: 252px;}
- .fp-6-4{height: 250px;left:;width:30%;bottom:;}
- .fp-6-5{height: 250px;left:30%;width:30%;bottom:;}
- .fp-6-6{height: 250px;left:60%;bottom:;right:;}
完整代码:
HTML:
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>fp version2</title>
- <style type="text/css">
- *{margin:0;padding:0;}
- .header{background:#ddd;height:120px;}
- .footerCon{width:320px;margin: 0 auto;}
- .footerCon .dropDiv{background: #fff; margin: 10px 0 0 0; float: left;}
- .footerCon .fpmodel{display: none;float: right;width:160px;}
- .footerCon .saveBtn{margin: 10px 0 0 10px; padding: 2px 10px;border:1px solid #CCC;cursor: pointer;}
- .clearFix:after{content:’’;display:block;height:0;overflow:hidden;clear:both;}
- .footer { height: 40px; background: #ABABAB; position: fixed; bottom: 0px; width: 100%; }
- .footer .ulTab {list-style-type: none;width:200px;overflow: hidden;float: left;}
- .footer .ulTab li{float: left;height:16px;padding: 12px 15px;cursor: pointer;}
- .footer .ulTab li.currentLi{background: #fff;}
- .tabImg{width:18px;height: 14px;border:1px solid #707070;background:#fff;}
- .tabImg td{width: 9px;height: 5px;border:1px solid #707070;}
- .divImg{border-width:2px;height: 12px;}
- .td3Img td{height: 3px;}
- .currentLi .tabImg,.currentLi .tabImg td{border-color:#1e7be4;}
- .topbarDiv{position: absolute;left: 0;top:0;right:0;border:1px solid #dedede;z-index: 1;height:25px;padding:3px;background: #61C0FA;display: none;}
- .changeBtn{cursor:pointer; padding: 2px 10px;float: left;}
- .dropDiv,.footer .dropDiv{position: relative;width: 100px;z-index: 100;}
- .dropDiv .curSrc,.footer .dropDiv .curSrc{display: inline-block;height: 20px;line-height: 20px;padding: 0 2px;}
- .dropDiv ul,.footer .dropDiv ul{position: absolute;left: -1px;top:20px;background: #fff;width:100px;border:1px solid #1E7BE4;display: none;}
- .dropDiv ul li,.footer .dropDiv ul li{line-height: 20px;padding: 0 2px;}
- .dropDiv ul li.currentSrc,.footer .dropDiv ul li.currentSrc{background: #1E7BE4;color: #fff;cursor: pointer;}
- .dropDiv ul li:hover,.footer .dropDiv ul li:hover{background:#AEC9F3;color: #fff;cursor: pointer;}
- .optionsWrap{float: right;}
- .optionsWrap a{font-family: 'MicroSoft YaHei';color:#fff;text-decoration:none;float: left;}
- .optionsWrap a:hover{color: #fdd;cursor:pointer;}
- .btnBig{width: 50px;height:30px;text-align: center;}
- .btnSmall{width: 50px;height:30px;text-align: center;}
- .btnCls{width: 50px;height:30px;text-align: center;}
- /*分屏模块布局*/
- .container{position: relative;}
- .fp-box{position:absolute;border:1px solid #000;background:#fff;}
- .fp-1-1{top:0;left:0;right: 0;bottom: 0;}
- .fp-2-1{top:0;left:0;right: 300px;bottom: 0;}
- .fp-2-2{top:0;right: 0px;bottom: 0; width: 300px;}
- .fp-3-1{top:0;left:0;right: 300px;bottom: 0;}
- .fp-3-2{top:0;right: 0;width:300px;height:50%;}
- .fp-3-3{top:50%;right: 0;bottom: 0;width:300px;}
- .fp-4-1{top:0;left:0;right: 50%;height:50%;}
- .fp-4-2{top:50%;left:0;right: 50%;bottom: 0;}
- .fp-4-3{top:0;right: 0;width:50%;height:50%;}
- .fp-4-4{top:50%;right: 0;bottom: 0;width:50%;}
- .fp-5-1{top:0;left:0;right: 300px;bottom: 252px;}
- .fp-5-2{top:0px;width:300px;right: 0;bottom: 252px;}
- .fp-5-3{height: 250px;left:0;width:30%;bottom: 0;}
- .fp-5-4{height: 250px;left:30%;width:30%;bottom: 0;}
- .fp-5-5{height: 250px;left:60%;bottom: 0;right: 0;}
- .fp-6-1{top:0;left:0;right: 300px;bottom: 252px;}
- .fp-6-2{top:0;width:300px;right: 0;height:250px;}
- .fp-6-3{top:250px;width:300px;right: 0;bottom: 252px;}
- .fp-6-4{height: 250px;left:0;width:30%;bottom: 0;}
- .fp-6-5{height: 250px;left:30%;width:30%;bottom: 0;}
- .fp-6-6{height: 250px;left:60%;bottom: 0;right: 0;}
- </style>
- </head>
- <body>
- <div class="header">
- header
- </div>
- <div class="container" id="displayArea">
- <!-- 分屏内容区 -->
- </div>
- <div class="footer">
- <div class="footerCon clearFix">
- <ul class="ulTab">
- <li class="currentLi" data-fp ="1" onclick="changeModel(this)">
- <div class="tabImg divImg"></div>
- </li>
- <li data-fp ="3" onclick="changeModel(this)">
- <table class="tabImg" cellpadding="0" cellspacing="0">
- <tr>
- <td rowspan="2"></td>
- <td></td>
- </tr>
- <tr>
- <td></td>
- </tr>
- </table>
- </li>
- <li data-fp ="6" onclick="changeModel(this)">
- <table class="tabImg td3Img" cellpadding="0" cellspacing="0">
- <tr>
- <td rowspan="2" colspan="2"></td>
- <td></td>
- </tr>
- <tr>
- <td></td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td></td>
- </tr>
- </table>
- </li>
- <li data-fp ="setting" onclick="changeModel(this)" title="设置">
- <table class="tabImg td3Img" cellpadding="0" cellspacing="0">
- <tr>
- <td rowspan="2" colspan="2"></td>
- <td></td>
- </tr>
- <tr>
- <td></td>
- </tr>
- <tr>
- <td></td>
- </tr>
- </table>
- </li>
- </ul>
- </div>
- </div>
- <script type="text/javascript" src="js/jquery-1.7.2.min.js"></script>
- <script type="text/javascript" src="js/splitScreen.js"></script>
- <script type="text/javascript">
- //分屏数据
- var iframes = [
- {
- id:'frames_1',
- frameName:'百度一下',
- src:'http://www.baidu.com'
- },
- {
- id:'frames_1',
- frameName:'百度地图',
- src:'http://map.baidu.com'
- },
- {
- id:'frames_1',
- frameName:'百度下',
- src:'http://www.baidu.com'
- },
- {
- id:'frames_1',
- frameName:'百度视频',
- src:'http://v.baidu.com'
- },
- {
- id:'frames_1',
- frameName:'百度新闻2',
- src:'http://news.baidu.com'
- },
- {
- id:'frames_1',
- frameName:'test6',
- src:'6.html'
- },
- {
- id:'frames_1',
- frameName:'百度新闻',
- src:'http://news.baidu.com'
- },
- {
- id:'frames_1',
- frameName:'88888',
- src:'6.html'
- },
- {
- id:'frames_1',
- frameName:'百度更多',
- src:'http://www.baidu.com/more/'
- }
- ];
- window.onload = function(){
- Panel.resize();
- }
- window.onresize = function(){
- Panel.resize();
- }
- //初始化分屏
- var splitScreen = new splitScreen($('#displayArea'),iframes);
- //监听removeSettingCls自定义事件
- splitScreen._on('removeSettingCls',function(){
- splitScreen.toggleTopbar(function(){
- $('.ulTab li[data-fp="setting"]').removeClass('currentLi');
- });
- });
- //分屏切换
- function changeModel(obj){
- var fpmodel = $(obj).attr('data-fp');
- if(fpmodel !="setting"){
- splitScreen.screenMode(fpmodel,function(){
- $(obj).addClass('currentLi').siblings().removeClass('currentLi');
- });
- }else{
- splitScreen.toggleTopbar(function(){
- $(obj).toggleClass('currentLi');
- });
- }
- }
- </script>
- </body>
- </html>
JS:
- /**
- * splitScren.js
- * v1.2
- * 2015-5-14
- * by linxia
- **/
- var splitScreen = function(elem, options) {
- this.elem = elem;
- this.options = options;
- this.initialize.apply(this);
- }
- splitScreen.prototype = {
- initialize: function() {
- this.handlers = {};
- this.screenMode(1);
- },
- screenMode: function(mode, callback) {
- this.elem.empty();
- this.data = null;
- this.defaultShow = null; //默认展示页面的索引
- switch (Number(mode)) {
- case 1:
- this.data = [
- ['fp-1-1']
- ];
- this.defaultShow = [0];
- break;
- case 2:
- this.data = [
- ['fp-2-1'],
- ['fp-2-2']
- ];
- this.defaultShow = [1, 2];
- break;
- case 3:
- this.data = [
- ['fp-3-1'],
- ['fp-3-2', 'fp-3-3']
- ];
- this.defaultShow = [1, 2, 3];
- break;
- case 4:
- this.data = [
- ['fp-4-1', 'fp-4-2'],
- ['fp-4-3', 'fp-4-4']
- ];
- this.defaultShow = [4, 1, 2, 3];
- break;
- case 5:
- this.data = [
- ['fp-5-1'],
- ['fp-5-2'],
- ['fp-5-3', 'fp-5-4', 'fp-5-5']
- ];
- this.defaultShow = [4, 5, 1, 2, 3];
- break;
- case 6:
- this.data = [
- ['fp-6-1'],
- ['fp-6-2', 'fp-6-3'],
- ['fp-6-4', 'fp-6-5', 'fp-6-6']
- ];
- this.defaultShow = [4, 5, 6, 7, 8, 8];
- break;
- default:
- alert("不支持" + mode + "分屏");
- }
- if (this.data != null) {
- this.renderPanel();
- this.bindPanel();
- }
- callback && callback();
- },
- //渲染DOM结构
- renderPanel: function() {
- var that = this;
- var options = this.options;
- var htmlstr = '';
- for (var item = 0; item < options.length; item++) {
- htmlstr += '<option value="' + options[item].src + '" label = "' + options[item].frameName + '">' + options[item].frameName + '</option>';
- }
- for (var i = 0; i < this.data.length; i++) {
- var moduleDiv = $('<div></div>').addClass('fp-module-' + i + '');
- for (var j = 0; j < this.data[i].length; j++) {
- var fpDiv = $('<div>').addClass(this.data[i][j]).addClass('fp-box');
- var topbarDiv = $('<div class="topbarDiv" style="display: none;">' +
- '<span class="optionsWrap">' +
- '<a class="btnBig" title="放大" href="javascript:void(0);">放大</a><a class="btnSmall" title="缩小" href="javascript:void(0);" style="display:none;">缩小</a> <a href="javascript:void(0);" class="btnCls" title="关闭"style="display:none;">关闭</a>' +
- '</span>' +
- '<div class="dropDiv">' +
- '<select class="fp-select"><option value="-1">请选择</option>' + htmlstr +
- '</select>' +
- '</div>' +
- '</div>');
- var iframe = $('<iframe width="100%" height="100%" frameBorder="0" scrolling = "auto"></iframe>');
- if (i == 0) {
- fpDiv.attr('zp', 'zp');
- }
- fpDiv.append(topbarDiv);
- fpDiv.append(iframe);
- moduleDiv.append(fpDiv);
- this.elem.append(moduleDiv);
- }
- }
- // render iframe
- this.elem.find('iframe').each(function(i) {
- if (options[i]['src']) {
- var frameSrc = options[that.defaultShow[i]]['src'];
- var frameName = options[that.defaultShow[i]]['frameName'];
- var curtopbar = $(this).siblings('.topbarDiv');
- that.loadIframe($(this), frameSrc, frameName);
- curtopbar.find('option').each(function() {
- if ($(this).attr('label') == frameName) {
- $(this).attr('selected', 'selected');
- }
- });
- }
- });
- },
- bindPanel: function() {
- var that = this;
- // add select Event
- this.elem.on('change', '.fp-select', function() {
- var value = $(this).find('option:selected').val();
- var label = $(this).find('option:selected').attr('label');
- var iframe = $(this).closest('.fp-box').find('iframe');
- if (value != "-1") {
- that.loadIframe(iframe, value, label);
- }
- });
- // btnbig Event
- this.elem.on('click', '.btnBig', function() {
- var obj = Panel.getSize();
- var btnSmall = $(this).siblings('.btnSmall');
- var btnCls = $(this).siblings('.btnCls');
- var fpbox = $(this).closest('.fp-box');
- fpbox.css({
- 'zIndex': 999
- }).stop().animate({
- 'top': 0,
- 'left': 0,
- 'width': obj.w - 2,
- 'height': obj.h,
- 'right': 0,
- 'bottom': 0
- }, 300).attr('scaleMode', 'large');
- that.elem.find('.fp-box:not([scaleMode="large"])').hide();
- $(this).hide();
- $('html,body').css({
- 'overflow': 'hidden'
- });
- btnSmall.show();
- //btnCls.show();
- });
- // btnsmall Event
- this.elem.on('click', '.btnSmall', function() {
- var btnBig = $(this).siblings('.btnBig');
- var fpbox = $(this).closest('.fp-box');
- var btnCls = $(this).siblings('.btnCls');
- fpbox.removeAttr('style').removeAttr('scaleMode');
- $(this).hide();
- that.elem.find('.fp-box').show();
- $('html,body').css({
- 'overflow': 'visible'
- });
- btnCls.hide();
- btnBig.show();
- });
- // btncls Event
- this.elem.on('click', '.btnCls', function() {
- var fpbox = $(this).closest('.fp-box');
- fpbox.remove();
- that.elem.find('.fp-box').show();
- that.fire('removeSettingCls');
- });
- },
- toggleTopbar: function(callback) {
- if (this.elem.find('.topbarDiv:visible').length > 0) {
- this.elem.find('.topbarDiv').hide();
- } else {
- this.elem.find('.topbarDiv').show();
- }
- callback && callback();
- },
- loadIframe: function(iframe, src, framename) {
- $(iframe).attr('src', src);
- $(iframe).attr('framename', framename);
- },
- _on: function(type, handler) {
- if (typeof this.handlers[type] == "undefined") {
- this.handlers[type] = [];
- }
- this.handlers[type].push(handler);
- return this;
- },
- fire: function(type, data) {
- if (this.handlers[type] instanceof Array) {
- var handlers = this.handlers[type];
- for (var i = 0, len = handlers.length; i < len; i++) {
- handlers[i](data);
- }
- }
- }
- };
- var Panel = {
- config: {
- header: $('.header'),
- container: $('.container'),
- footer: $('.footer'),
- win: $(window)
- },
- resize: function() {
- var topH = Panel.config.header.height();
- var botH = Panel.config.footer.height();
- var mainH = Panel.config.win.height() - topH - botH;
- mainH = mainH < 0 ? 100 : mainH;
- Panel.config.container.height(mainH);
- if ($('.fp-box[scaleMode="large"]').length > 0) {
- $('.fp-box[scaleMode="large"]').css({
- 'width': Panel.config.win.width() - 2,
- 'height': mainH
- });
- }
- },
- getSize: function() {
- var obj = {
- w: Panel.config.container.width(),
- h: Panel.config.container.height()
- };
- return obj;
- }
- };
完整demo下载地址:
水平有限,欢迎各位高手指点,不胜感激....
基于jquery的页面分屏切换模板的更多相关文章
- 基于jQuery商城网站全屏图片切换代码
基于jQuery商城网站全屏图片切换代码.这是一款商城网站全屏多张图片滑动切换代码.效果图如下: 在线预览 源码下载 实现的代码. html代码: <div class="slid ...
- 基于jQuery左侧大图右侧小图切换代码
基于jQuery左侧大图右侧小图切换代码是一款带右侧缩略图选项卡的jQuery图片切换特效.效果图如下: 在线预览 源码下载 实现的代码. html代码: <div class=" ...
- 基于jQuery扁平多颜色选项卡切换代码
基于jQuery扁平多颜色选项卡切换代码,支持自动轮播切换,鼠标滑过切换的jQuery特效.效果图如下: 在线预览 源码下载 实现的代码. html代码: <div class=" ...
- 基于jQuery图片遮罩滑动文字切换特效
基于jQuery图片遮罩滑动文字切换特效.这是一款jquery hover鼠标滑动选项卡切换透明背景遮罩文字显示特效.效果图如下: 在线预览 源码下载 实现的代码. html代码: <div ...
- 一款基于jquery超炫的图片切换特效
今天为给大家介绍一款基于jquery超炫的图片切换特效.由百叶窗飞入显示图片.图片消息的时候也是百叶窗渐行渐远.用于图片展示,效果还是非常好,我们一起看下效果图: 在线预览 源码下载 来看下实现的 ...
- jQuery Mobile页面跳转切换的几种方式
jQuery Mobile在移动开发中越来越受到欢迎. 而他的各个版本号也在持续不断的更新中.相同的我也非常喜欢它,它加快了我们开发HTML5的速度. 同一时候又具备jQuery一样的操作方法. 学起 ...
- 基于jQuery的自适应图片左右切换
效果预览:http://hovertree.com/code/jquery/smjv6d0n.htm 基于jQuery编写的横向自适应幻灯片切换特效 全屏自适应jquery焦点图切换特效,在IE6这个 ...
- 基于jQuery环形图标菜单旋转切换特效
分享一款基于jQuery环形图标旋转切换特效.这是一款鼠标点击图标菜单圆形顺时针或者逆时针旋转切换代码.效果图如下: 在线预览 源码下载 实现的代码. js代码: /* 图片地址可以是相对路径或绝 ...
- iterm 分屏切换快捷键与配色设置
(1)快捷键设置 ⌘ + d: 垂直分屏, ⌘ + shift + d: 水平分屏. ⌘ + ]和⌘ + [在最近使用的分屏直接切换. ⌘ + opt + 方向键切换到指定位置的分屏. ⌘ + 数字: ...
随机推荐
- 转-JavaWeb三大组件之Listener监听器
JavaWeb三大组件之Listener监听器一.概述1,它是一个接口,内容由我们来实现 2,它需要注册,例如注册在按钮上 3,监听器中的方法,会在特殊事件发生时被调用 二.JavaWeb中的监听器1 ...
- 005_tcp/ip监控
system.monitor.tcpstat 一.listen+established+time wait+close wait. listen:SELECT mean("listen&qu ...
- 023_nginx跨域问题
什么是跨域? 使用js获取数据时,涉及到的两个url只要协议.域名.端口有任何一个不同,都被当作是不同的域,相互访问就会有跨域问题.例如客户端的域名是www.redis.com.cn,而请求的域名是w ...
- Zabbix监控nginx性能的另外一种方式
Zabbix监控nginx性能的另外一种方式 nginx和php-fpm一样内建了一个状态页,对于想了解nginx的状态以及监控nginx非常有用,为了后续的zabbix监控,我们需要先启用nginx ...
- 运维与自动化系列③自动化部署基础与shell脚本实现
自动化部署基础与shell脚本实现 关于自动化的基础知识: 1.1:当前代码部署的实现方式: 运维纯手工scp到web服务器纯手工登录git服务器执行git pull或svn服务器执行svn upda ...
- Select查询命令
一开始SELECT查询的命令为 SELECT * FROM employee; SELECT 要查询的列名 FROM 表名字 WHERE 限制条件; 若要查询所有内容,就用*代 ...
- CentOS入门
1.因修改/etc/sudoers权限导致sudo和su不能使用问题 https://blog.csdn.net/u014029448/article/details/80944380 2.给用户分配 ...
- Struts2配置拦截器
<package name="loginaction" namespace="/" extends="struts-default"& ...
- 【MySql】Group By数据分组
GROUP BY 语句根据一个或多个列对结果集进行分组. 在分组的列上我们可以使用 COUNT, SUM, AVG,等函数. 因为聚合函数通过作用于一组数据而只返回一个单个值, 因此,在SELECT语 ...
- SpringMVC拦截器与异常处理
点击查看上一章 在我们SpringMVC中也可以使用拦截器对用户的请求进行拦截,用户可以自定义拦截器来实现特定的功能.自定义拦截器必须要实现HandlerInterceptor接口 package c ...