- 浏览: 9811 次
- 性别:
- 来自: 南京
最新评论
文章列表
此文未经许可禁止转载,谢谢
定义:确保某一个类只有一个实例,而且自行实例化并向系统提供这个实例。
使用场景:在一个系统中,要求一个类有且仅有一个对象,如果出现多个对象就会出现“不良反应”,可以采用单例模式。
如1.要求生成唯一序列号的环境;
2.在整个项目中需要一个共享访问点或共享数据,例如一个WEB页面上的计数器,可以不用把每次刷新都记录到数据库中,使用单例模式保持计数器的值,并确保是线程安全的;
3.创建一个对象消耗的资源过多,如要访问IO和数据库等资源;
4.需要定义大量的静态常量和静态方法的(如工具类)环境,可以采用单例模式。
注意的问题:非static单例对象如 ...
类的生命周期
在一个类编译完成之后,下一步就需要开始使用类,如果要使用一个类,肯定离不开JVM。在程序执行中JVM通过装载,链接,初始化这3个步骤完成。
类的装载是通过类加载器完成的,加载器将.class文件的二进制文件装入JVM的方法区,并且在堆区创建描述这个类的java.lang.Class对象。用来封装数据。 但是同一个类只会被类装载器装载以前
链接就是把二进制数据组装为可以运行的状态。
链接分为校验,准备,解析这3个阶段
校验一般用来确认此二进制文件是否适合当前的JVM(版本),
准备就是为静态成员分配内存空间,。并设置默认值
解析指的是转换常量池中的代码作为直接引用 ...
”==”与”===”是不同的,一个是判断值是否相等,一个是判断值及类型是否完全相等。
下面的规则用于判定===运算符比较的两个值是否相等的判断条件
•如果两个值的类型不同,它们就不相同。
•如果两个值是数字,而且值相同,那么除非其中一个或两个都是NaN(这种情况它们不是等同的),否则它们是等同的。值NaN永远不会与其他任何值等同,包括它自身(奇怪的家伙),要检测一个值是否是NaN,可以使用全局函数isNaN()。
•如果两个值都是字符串,而且在串中同一位置上的字符完全相同,那么它们就完全等同。如果字符串的长度或内容不同,它们就不是等同的。
•如果两个值都是布尔型true,或者两个值都是布尔型fa ...
首先,先来先讲讲适配器。适配就是由“源”到“目标”的适配,而当中链接两者的关系就是适配器。它负责把“源”过度到“目标”。举个简单的例子,比如有一个“源”是一个对象人,他拥有2种技能分别是说日语和说英语,而某个岗位(目标)需要你同时回说日语、英语、和法语,好了,现在我们的任务就是要将人这个“源”适配的这个岗位中,如何适配呢?显而易见地我们需要为人添加一个说法语的方法,这样才能满足目标的需要。
接着讨论如何加说法语这个方法,也许你会说,为什么不直接在“源”中直接添加方法,我的理解是,适配是为了实现某种目的而为一个源类暂时性的加上某种方法,所以不能破坏原类的结构。同时不这么做也符合Java的高 ...
javascript 是一种 prototype based programming 的语言, 而与我们通常的 class based programming 有很大 的区别,我列举重要的几点如下:
函数是first class object, 也就是说函数与对象具有相同的语言地位
没有类,只有对象
函数也是一种对象,所谓的 ...
Struts2中的动态方法调用DMI
- 博客分类:
- Struts2
Struts2动态方法调用
转载自:http://www.cnblogs.com/yangy608/archive/2010/11/08/1871958.html
动态方法调用
在Struts2中动态方法调用有三种方式,动态方法调用就是为了解决一个Action对应多个请求的处理,以免Action太多
第一种方式:指定method属性
这种方式我们前面已经用到过,类似下面的配置就可以实现
<action name="chainAction" class="chapter2.action.Chapter2Action"
method="cha ...
1. 传值到Struts2的action方法:
<input name="userName" type="text" size="15">
userName属性需要在访问的action中提供相应的属性,并有SET/GET方法。
可以不在访问的action中提供相应的属性,用request.getParameter(”userName”);
2. 页面从Struts2的action取值方法:
4种拿到值得的办法:
1) <s:property value="username"/> ...
创建直接的实例:
这个例子创建了对象的一个新实例,并向其添加了四个属性:
var person = new Object();
person.firstName = "Bill";
person.lastName = "Gates";
person.age = "56";
person.eyeColor = "blue";
或
var person = {firstName:"John",lastName:"Doe",age:50,eyeColor:&q ...
HTML5的input标签新增了很多属性,也是让大家非常兴奋的一件事,用简单的一个属性搞定以前复杂的JS验证。input新增的这些属性,使得html和js的分工更明确了,使用起来十分舒畅。
新增属性一:autoconmplete
autoconmplete可以赋值为 on 或者 off。当为 on的时候,浏览器能自动存储用户输入的内容。当用户返回到曾经填写过值的页面的时候,浏览器能把用户写过的值自动填写在相应的input框里。
现在很多网站都实现了这个功能,不过基本都是用php来实现的。用了这个属性,无疑可以减少很多前端和后台的交流量和工作量。
新增属性二:autofocus
autofoc ...
(一)字体标签
<h1>(h6)...</h1>(h6)标题字
<i>...</i>斜体字
<b>...</b>粗体字
<u>...</u>底线
<s>...</s>删除线
<em>...</em>斜体字(强调)
<var>...</var>
<del>...</del>删除线(表示删除)
...
在使用struts2的标签的时候,有没有因为默认产生的布局样式而抓破头呢?下面有两种方法解决这个问题,网上很多大牛说这个是struts2的优先,可能小虾涉世未深,还未能体会到,这里讲讲这两种方法吧。
第一种:
查看struts.properties或$ {struts-core2.06.jar}/org/apache/struts2/default.properties文件,其中有如下配置:
struts.ui.theme=xhtml
struts.ui.templateDir=template
struts.ui.templateSuffix=ftl
这一段就是关于str ...
1.url:
要求为String类型的参数,(默认为当前页地址)发送请求的地址。
2.type:
要求为String类型的参数,请求方式(post或get)默认为get。注意其他http请求方法,例如put和delete也可以使用,但仅部分浏览器支持。
3.timeout:
要求为Number类型的参数,设置请求超时时间(毫秒)。此设置将覆盖$.ajaxSetup()方法的全局设置。
4.async:
要求为Boolean类型的参数,默认设置为true,所有请求均为异步请求。如果需要发送同步请求,请将此选项设置为false。注意,同步请求将锁住浏览器,用户其他操作必须等待请求完成才 ...
拦截器的作用主要就是拦截东西,拦截什么呢?当然是'action'了,在执行'action'之前 拦截器会起作用,执行一些预先处理的代码,
接着去执行action中相关的方法,之后,流程又会回到拦截器里面,接着去执行后续的一些操作。
先看配置,这些配置都是在struts.xml里面的。配置相当简单,不过底层都是很复杂的。在这章之前,我专门看了下动态代理,感觉真的是开发者花了不少的心血,
首先先建一个包,放我们的interceptor。
过滤器和拦截器是非常相似的,public interface Filter类里面有三个方法:
init(FilterConfig filte ...
struts2接收前台传来的参数有3种方法
1、第一种:action 设置 相应的变量
在相应的action中设置与将要传进来的参数名相同的变量
eg: 前台传给后台两个参数 name=chance & age = 1,那么后台的action中 要设定这样的变量:private String name; private int age;同时,必须设置set,和 get方法
那么在访问action过程中,struts会自动的为action中的这两个变量设置前台传来的值
(深度解析:
实际上,当前台想后台的一个action发出请求的时候,str ...