作用域

JSP + Session Cookie详解

左心房为你撑大大i 提交于 2019-12-12 18:14:31
篇幅较大,对JSP进行了非常详细的讲解,并解释了Session和Cookie的实现原理 ,预计看完需要20分钟左右,慢慢享受吧 JSP概述 掌握了servlet后,就可以利用servlet来开发动态页面了,但是使用Servlet开发动态页面,存在种种问题,来看下面的例子: 使用Servlet来开发百度首页: 分析上面的案例不难发现以下问题: Html与Java代码混合在一起,维护困难 每一行都是一个println语句,效率低下 编译器无法检测问题,调试麻烦 JSP概念 全称JavaServerPage服务器页面,为了使开发动态页面更加简单而出现,本质上也是一个Servlet 动态与静态 一个页面如果不会随着任何条件(时间,用户信息...)改变而发生变化,那它就是静态的,静态页面通常只能提供最基本的信息展示 动态页面是会随着访问时的时间,地点,提交的数据不同而展示不同的内容,它就是动态页面,例如可以根据登录用户的不同而展示的不同的购物信息,通常页面的数据来自于数据库 特点: JSP可将原本都在Servlet中的java代码与HTML分离,降低耦合,可维护性好 可编写原生HTML,且编译器会进行语法检查,开发效率更高 JSP本质就是Servlet,被执行前会被先转译为java文件 注意 :JSP文件需放在web(webContent)资源目录下,后缀为.jsp jsp执行过程 示例:

浅谈js闭包

送分小仙女□ 提交于 2019-12-12 14:25:39
什么是闭包? 闭包是指有权访另一个函数作用域中的变量的函数。 学过作用域我们就会知道,凡是函数内部的函数,都可以值执行的前一刻,拿到父级函数的AO对象,也就是父级作用域,而这样的现象会引发什么样的问题呢,我今天就来谈一下。 unction a ( ) { var sum = 10 ; function b ( ) { sum ++ ; console . log ( sum ) } return b ; } var c = test ( ) ; for ( var i = 0 ; i < 10 ; i ++ ) { c ( ) ; // 打印11到20 } c执行就是函数b执行,函数b拿到了函数a的变量sum,并且在函数a执行完成以后,没有销毁a函数作用域,由c函数一直保留下来,实现累加器功能。在这个过程中c函数访问到了a函数作用域里的变量,我们就称之为闭包。 这样的好处就是,js函数都是独立的,外界无法看到其内部的内容。但是运用闭包我们就可以访问到函数内部的变量了,同时因为作用域不会被销毁,变量可以一直保存在内存中。 这样是有缺点的,js本身具有 垃圾收集机制 :找出不再使用的变量,释放其占用的内存。但是在形成闭包时,由于外部函数的作用域一直被保存在内部函数的作用域链中,不能被释放,就会造成 内存泄漏 。所谓内存泄漏其实就是本来应该被回收的内存没有被释放,造成你内存空间的减小

ES6新增变量

徘徊边缘 提交于 2019-12-12 13:48:57
ES6变量 let 定义 let解决,闭包循环问题 块级作用域 const 定义 let 定义 不存在变量提升 不存在变量提升typeOf也无法使用 只要在块级作用域内存在let命令,它所声明的变量就绑定在这个区域,不再受外部的影响。 命名不能重复 var c = 1 ; { //console.log("before",c);//不存在变量提升 //console.log("typeOf",typeOf c);//typeOf let c = 2 ; //let c = 3;//命名不能重复 console . log ( 'in' , c ) ; } console . log ( 'out' , c ) //in 2 //只要在块级作用域内存在let命令,它所声明的变量就绑定在这个区域,不再受外部的影响。 //out 1 let解决,闭包循环问题 document . body . innerHTML = '<div id=div1>aaa</div><div id=div2>aaa</div><div id=div3>aaa</div>' ; for ( var i = 1 ; i < 4 ; i ++ ) { //点击enter后 循环就结束了 document . getElementById ( 'div' + i ) . addEventListener (

JavaScript 作用域产生时间

混江龙づ霸主 提交于 2019-12-12 04:09:09
// 全局作用域产生时间 --- > window对象创建时候 // window对象创建时间 --- > 当前页面启动浏览器的时候。 // 每次刷新浏览器都会重新创建window对象 // 全局作用域销毁时间 --- > 关闭当前页面时候 // ---- > 在关闭程序时候 内存数据赋值为null 。 // 初始化代码:刚开始的时候执行的,并且只执行一次。 var a = '页面初始化时候,就执行了这行代码' // 局部作用域产生时间---- > AO对象创建时候 // AO创建时间 --- > 函数执行时,非定义时 // 局部作用域销毁时间-- > 函数执行完毕时 // 局部作用域销毁;执行时创建的AO对象也销毁 // 函数每次执行都会创建AO对象;执行完毕销毁AO对象 // 优点保证每次函数体中代码每次都是初始化状态 // 缺点 计算量大 function fun ( ) { var b = '私有变量' ; } 来源: CSDN 作者: 提拉米苏-杨 链接: https://blog.csdn.net/tlmis/article/details/103484703

spring学习5-bean的作用范围与生命周期

送分小仙女□ 提交于 2019-12-12 01:15:21
作用范围与生命周期 作用范围 在Spring中,那些组成应用程序的主体及由Spring IoC容器所管理的对象,被称之为bean。简单地讲,bean就是由IoC容器初始化、装配及管理的对象 . 使用的是bean标签的scope属性,scope的作用是用于指定bean的作用范围 取值有四个常用的就是单例的和多例的 生命周期 说明 singleton 单例的(默认值),在spring ioc容器中仅有一个bean实例,bean以单例的方式存在 prototype 多例的,每次从容器中调用bean时,都返回一个新的实例,即getBean() --> new XxxBean() request 作用于web应用的请求范围,每次http请求都会创建一个新的bean,该作用域仅适用于webApplicationContext环境 sesson 作用于web应用的会话范围,同一个httpSession共享一个bean,不同的session使用不同的bean,仅适用于webApplicationContext环境 user package com.cong.pojo; public class User { private String name; public String getName() { return name; } public void setName(String name) {

我是研究僧i 提交于 2019-12-11 13:16:42
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> //赋值是从右往左的,b在块里面没有申明,所以js引擎会在全局作用域里面申明一个,然后执行的时候就会赋值5. // a是声明了的,在外部作用域无法访问 (function () { var a=b=5; })(); console.log(a); //报错a is not defined console.log(b); //5 var fullName = '1'; var obj = { fullName:2, prop:{ fullName:3, getFullName: () => { console.log(this.fullName); } } } //依次输出123,这是this的绑定机制 //如果把getFullName换成箭头函数的话,结果会是怎么样的呢 输出全部是1 ,因为obj不会产生作用域 //箭头函数的this是继承自自己作用域链的上一层的this,任何方法都改变不了,包括call,apply,bind。 //普通函数的this指向调用它的那个对象。 obj.prop.getFullName(); obj.prop.getFullName.call(window); obj.prop.getFullName.call(obj); obj.prop.getFullName.call(obj

JSP九大内置对象及四个作用域详解

妖精的绣舞 提交于 2019-12-11 12:04:28
一共有九大内置对象: request、response、out、session、application、pageContext、page、config、exception 内置对象(又叫隐含对象),就是在jsp中,不需要创建(由服务器<容器>来创建),可以直接使用的对象。 request 请求对象  类型 javax.servlet.ServletRequest 作用域 Request response 响应对象 类型 javax.servlet.ServletResponse 作用域 Page pageContext 页面上下文对象 类型 javax.servlet.jsp.PageContext 作用域 Page session 会话对象 类型 javax.servlet.http.HttpSession 作用域 Session application 应用程序对象 类型 javax.servlet.ServletContext 作用域 Application out 输出对象 类型 javax.servlet.jsp.JspWriter 作用域 Page config 配置对象 类型 javax.servlet.ServletConfig 作用域 Page page 页面对象 类型 java.lang.Object 作用域 Page exception 例外对象 类型

Eclipse快捷键大全

浪子不回头ぞ 提交于 2019-12-11 11:54:25
Ctrl+1 快速修复 Ctrl+D: 删除当前行 Ctrl+Alt+↓ 复制当前行到下一行(复制增加) Ctrl+Alt+↑ 复制当前行到上一行(复制增加) Alt+↓ 当前行和下面一行交互位置(可以省去先剪切,再粘贴了) Alt+↑ 当前行和上面一行交互位置(同上) Alt+← 前一个编辑的页面 Alt+→ 下一个编辑的页面 Alt+Enter 显示当前选择资源(工程,or 文件 or文件)的属性 Shift+Enter 在当前行的下一行插入空行(这时鼠标可以在当前行的任一位置,不一定是最后) Shift+Ctrl+Enter 在当前行插入空行(原理同上条) Ctrl+Q 定位到最后编辑的地方 Ctrl+L 定位在某行 Ctrl+M 最大化当前的Edit或View (再按则反之) Ctrl+/ 注释当前行,再按则取消注释 Ctrl+O 快速显示 OutLine Ctrl+T 快速显示当前类的继承结构 Ctrl+W 关闭当前Editer Ctrl+K 参照选中的Word快速定位到下一个 Ctrl+E 快速显示当前Editer的下拉列表(如果当前页面没有显示的用黑体表示) Ctrl+/(小键盘) 折叠当前类中的所有代码 Ctrl+×(小键盘) 展开当前类中的所有代码 Ctrl+Space 代码助手完成一些代码的插入(但一般和输入法有冲突,可以修改输入法的热键,也可以暂用Alt+

ECMAScript 6 入门——let和const命令

情到浓时终转凉″ 提交于 2019-12-11 10:46:34
一、let和const命令 let命令 只在let所在的代码块内有效 例子(识别var和let的作用域区别,for说明) for循环的计数器,就很合适使用let命令。 for (let i = 0; i < 10; i++) { // … } console.log(i); // ReferenceError: i is not defined 下面的代码如果使用var,最后输出的是10。 var a = []; for (var i = 0; i < 10; i++) { a[i] = function () { console.log(i); }; } a[6](); // 10 如果使用let,声明的变量仅在块级作用域内有效,最后输出的是 6。 var a = []; for (let i = 0; i < 10; i++) { a[i] = function () { console.log(i); }; } a[6](); // 6 for循环还有一个特别之处,就是设置循环变量的那部分是一个父作用域,而循环体内部是一个单独的子作用域。 for (let i = 0; i < 3; i++) { let i = 'abc'; console.log(i); } // abc // abc // abc ES6变量定义不存在 变量提升 var在脚本开始运行时变量就存在

VB 变量的声明及作用域

♀尐吖头ヾ 提交于 2019-12-11 08:16:23
一、变量的声明 一般来说,变量必须先声明后使用。即告诉编译器在程序中使用了哪些变量,及为变量开辟多大的内存空间。 声明变量有两种方式:隐式声明、显式声明。 1隐式声明:vb的变量可以不经声明直接使用(但不易检查错误,不建议使用) 2显式声明:用声明语句创建变量。格式为:declare 变量名 as 类型 强制显式声明变量: 为了避免写错变量名引起的麻烦,可在类模块、窗体模块或标准模块的声明段中加入语句Option Explicit,VB将自动检查程序中是否有未定义的变量,若有将显示错误信息。 声明语句有以下四种格式: 1、Dim<变量名>[As<数据类型>] 用于在标准模块(Module)、窗体模块(Form)或过程(Procedure)中定义变量或数组。 用Dim语句在窗体的过程中声明的变量称为局部变量,其作用域仅局限在本过程内部,过程一旦执行完毕,其值也就消失了。 2、Private<变量名>[As<数据类型>] 用于声明模块变量。 如果要在一个窗体模块的所有过程中共享同一个变量,则应在这个窗体模块的声明段用Private语句进行声明。这种变量称为模块级变量,其作用域为整个窗体模块。 3、Public<变量名>[As<数据类型> ] 用于在标准模块中定义全局变量或数组。 如果在标准模块的声明段中用Public关键字来声明模块级变量,那么这个变量的作用域是整个工程