for的新用法
/**
* @param args
*/
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("aaa");
list.add("bbb");
for(String aaa: list){
System.out.println("aaa=="+aaa);
System.out.println("list==="+list);
}
}
}
输出结果:
aaa==aaa
list===[aaa, bbb]
aaa==bbb
list===[aaa, bbb]
**************************************************************************************************
使用scope="session"在spring中
需要在web.xml配置
<!-- 支持session scope的Spring bean -->
<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
使用session的原因
<bean id="cart" class="org.springside.bookstore.web.shop.support.Cart" scope="session">
<aop:scoped-proxy/>
</bean>
session 是个会话,一个用户的一次连接就是一次会话
说的简单点,如果一个用户用ie打开你的应用,这个javabean的存活期就是这个用户所有这个ie以及这个ie点记出来的ie窗口,当这些窗口全部被关掉时候
bean就被kill掉了
为什么使用<aop:scoped-proxy/>
首先看一下Spring文档上的两个例子对比:
<bean id="userPreferences" class="com.foo.UserPreferences" scope="session"/>
<bean id="userManager" class="com.foo.UserManager">
<property name="userPreferences" ref="userPreferences"/>
</bean>
<bean id="userPreferences" class="com.foo.UserPreferences" scope="session">
<aop:scoped-proxy/>
</bean>
<bean id="userManager" class="com.foo.UserManager">
<property name="userPreferences" ref="userPreferences"/>
</bean>
前一个例子没有使用<aop:scoped-proxy/>,并且userManager是singleton,所有userManager 仅被初始化一次,并且其属性userPreferences也仅被注射一次。当session失效后,userManager仍将保留 userPreferences实例。但后一个例子则不一样,userManager的属性userPreferences指向的是com.foo.UserPreferences实例的代理,当session过期后,userManager的属性userPreferences自然也不能再使用。网上有人解释说,这个代理只随着session的创建而创建,销毁而销毁。
意思是, 如此我取得的物件, 是把 userPreferences 加了一層外殼的東東,
而這東東會替我 access 實際的 userPreferences (session scope ) 嗎?
當不同的 session, 我雖然因為 singleton 只用同一份 instance, 但這外殼幫我對映, 操作了正港的 (目前 session ) 的 userPreferences
不知道這樣子想對嗎, 怕我理解有誤
**************************************************************************************************
spring 2.0三个新的web作用域的配置方式
在Spring2.0中除了以前的Singleton和Prototype外又加入了三个新的web作用域,分别为request、session和global session,它们的含义和用法请大家参考Spring官方手册的相关章节。如果你想让你的容器里的某个bean拥有其中某种新的web作用域,除了在bean级上配置相应的scope属性,还必须在容器级做一个额外的初始化配置。即在web应用的XML声明文件web.xml中增加下述ContextListener:
<web-app>
<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
</web-app>
如果你用的是早期版本的web容器(Servlet 2.4以前),那么你要使用一个javax.servlet.Filter的实现。
<web-app>
...
<filter>
<filter-name>requestContextFilter</filter-name>
<filter-class>org.springframework.web.filter.RequestContextFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>requestContextFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
...
</web-app>
两种方式完成完全一样的功能:基于LocalThread将HTTP request对象绑定到为该请求提供服务的线程上。这使得具有request和session作用域的bean能够在后面的调用链中被访问到。
Request作用域
<bean id="loginAction" class="com.foo.LoginAction" scope="request"/>
针对每次HTTP请求,Spring容器会根据loginAction bean定义创建一个全新的LoginAction bean实例,且该loginAction bean实例仅在当前HTTP request内有效,因此可以根据需要放心的更改所建实例的内部状态,而其他请求中根据loginAction bean定义创建的实例,将不会看到这些特定于某个请求的状态变化。当处理请求结束,request作用域的bean实例将被销毁。
Session作用域
<bean id="userPreferences" class="com.foo.UserPreferences" scope="session"/>
针对某个HTTP Session,Spring容器会根据userPreferences bean定义创建一个全新的userPreferences bean实例,且该userPreferences bean仅在当前HTTP Session内有效。与request作用域一样,你可以根据需要放心的更改所创建实例的内部状态,而别的HTTP Session中根据userPreferences创建的实例,将不会看到这些特定于某个HTTP Session的状态变化。当HTTP Session最终被废弃的时候,在该HTTP Session作用域内的bean也会被废弃掉。
global session作用域
<bean id="userPreferences" class="com.foo.UserPreferences" scope="globalSession"/>
global session作用域类似于标准的HTTP Session作用域,不过它仅仅在基于portlet的web应用中才有意义。Portlet规范定义了全局Session的概念,它被所有构成某个 portlet web应用的各种不同的portlet所共享。在global session作用域中定义的bean被限定于全局portlet Session的生命周期范围内。
请注意,假如你在编写一个标准的基于Servlet的web应用,并且定义了一个或多个具有global session作用域的bean,系统会使用标准的HTTP Session作用域,并且不会引起任何错误。
摘自spring 2.0文档
**********************************************************************************************************
jstl 用于格式化数字的 <fmt:formatNumber> 标签
2007-10-17 10:17
<fmt: formatNumber > 标 签用于格式化数字。它的属性和描述如表:
<fmt:formatNumber> 标签属性和说明
属性
描述
value
格式化的数字,该数值可以是 String 类型或 java.lang.Number 类型的实例
type
格式化的类型
pattern
格式化模式
var
结果保存变量
scope
变量的作用范围
maxIntegerDigits
指定格式化结果的最大值
minIntegerDigits
指定格式化结果的最小值
maxFractionDigits
指定格式化结果的最大值,带小数
minFractionDigits
指定格式化结果的最小值,带小数
<fmt:formatNumber> 标签实际是对应 java.util.NumberFormat 类, type 属性的可能值包括 currency (货币)、 number (数字)和 percent (百分比)。
下面看一个示例。
<fmt:formatNumber value="1000.888" type="currency" var="money"/>
该结果将被保存在“ money ”变量中,将根据 Locale 环境显示当地的货币格式。
****************************************************************************************
JSTL中 varStatus
2007-06-17
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://squll.blogbus.com/logs/5955546.html
不论是对整数还是对集合进行迭代, <c:forEach> 剩余的属性 varStatus 所起的作用相同。和 var 属性一样, varStatus 用于创建限定了作用域的变量。不过,由 varStatus 属性命名的变量并不存储当前索引值或当前元素,而是赋予 javax.servlet.jsp.jstl.core.LoopTagStatus 类的实例。该类定义了一组特性,它们描述了迭代的当前状态,下面列出了这些特性:
特性 Getter 描述
current getCurrent() 当前这次迭代的(集合中的)项
index getIndex() 当前这次迭代从 0 开始的迭代索引
count getCount() 当前这次迭代从 1 开始的迭代计数
first isFirst() 用来表明当前这轮迭代是否为第一次迭代的标志
last isLast() 用来表明当前这轮迭代是否为最后一次迭代的标志
begin getBegin() begin 属性值
end getEnd() end 属性值
step getStep() step 属性值
*******************************************************************************************
String... aaa可以传String[] aaa,String aaa
/**
* @param args
*/
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("aaa");
list.add("bbb");
for(String aaa: list){
System.out.println("aaa=="+aaa);
System.out.println("list==="+list);
}
}
}
输出结果:
aaa==aaa
list===[aaa, bbb]
aaa==bbb
list===[aaa, bbb]
**************************************************************************************************
使用scope="session"在spring中
需要在web.xml配置
<!-- 支持session scope的Spring bean -->
<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
使用session的原因
<bean id="cart" class="org.springside.bookstore.web.shop.support.Cart" scope="session">
<aop:scoped-proxy/>
</bean>
session 是个会话,一个用户的一次连接就是一次会话
说的简单点,如果一个用户用ie打开你的应用,这个javabean的存活期就是这个用户所有这个ie以及这个ie点记出来的ie窗口,当这些窗口全部被关掉时候
bean就被kill掉了
为什么使用<aop:scoped-proxy/>
首先看一下Spring文档上的两个例子对比:
<bean id="userPreferences" class="com.foo.UserPreferences" scope="session"/>
<bean id="userManager" class="com.foo.UserManager">
<property name="userPreferences" ref="userPreferences"/>
</bean>
<bean id="userPreferences" class="com.foo.UserPreferences" scope="session">
<aop:scoped-proxy/>
</bean>
<bean id="userManager" class="com.foo.UserManager">
<property name="userPreferences" ref="userPreferences"/>
</bean>
前一个例子没有使用<aop:scoped-proxy/>,并且userManager是singleton,所有userManager 仅被初始化一次,并且其属性userPreferences也仅被注射一次。当session失效后,userManager仍将保留 userPreferences实例。但后一个例子则不一样,userManager的属性userPreferences指向的是com.foo.UserPreferences实例的代理,当session过期后,userManager的属性userPreferences自然也不能再使用。网上有人解释说,这个代理只随着session的创建而创建,销毁而销毁。
意思是, 如此我取得的物件, 是把 userPreferences 加了一層外殼的東東,
而這東東會替我 access 實際的 userPreferences (session scope ) 嗎?
當不同的 session, 我雖然因為 singleton 只用同一份 instance, 但這外殼幫我對映, 操作了正港的 (目前 session ) 的 userPreferences
不知道這樣子想對嗎, 怕我理解有誤
**************************************************************************************************
spring 2.0三个新的web作用域的配置方式
在Spring2.0中除了以前的Singleton和Prototype外又加入了三个新的web作用域,分别为request、session和global session,它们的含义和用法请大家参考Spring官方手册的相关章节。如果你想让你的容器里的某个bean拥有其中某种新的web作用域,除了在bean级上配置相应的scope属性,还必须在容器级做一个额外的初始化配置。即在web应用的XML声明文件web.xml中增加下述ContextListener:
<web-app>
<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
</web-app>
如果你用的是早期版本的web容器(Servlet 2.4以前),那么你要使用一个javax.servlet.Filter的实现。
<web-app>
...
<filter>
<filter-name>requestContextFilter</filter-name>
<filter-class>org.springframework.web.filter.RequestContextFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>requestContextFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
...
</web-app>
两种方式完成完全一样的功能:基于LocalThread将HTTP request对象绑定到为该请求提供服务的线程上。这使得具有request和session作用域的bean能够在后面的调用链中被访问到。
Request作用域
<bean id="loginAction" class="com.foo.LoginAction" scope="request"/>
针对每次HTTP请求,Spring容器会根据loginAction bean定义创建一个全新的LoginAction bean实例,且该loginAction bean实例仅在当前HTTP request内有效,因此可以根据需要放心的更改所建实例的内部状态,而其他请求中根据loginAction bean定义创建的实例,将不会看到这些特定于某个请求的状态变化。当处理请求结束,request作用域的bean实例将被销毁。
Session作用域
<bean id="userPreferences" class="com.foo.UserPreferences" scope="session"/>
针对某个HTTP Session,Spring容器会根据userPreferences bean定义创建一个全新的userPreferences bean实例,且该userPreferences bean仅在当前HTTP Session内有效。与request作用域一样,你可以根据需要放心的更改所创建实例的内部状态,而别的HTTP Session中根据userPreferences创建的实例,将不会看到这些特定于某个HTTP Session的状态变化。当HTTP Session最终被废弃的时候,在该HTTP Session作用域内的bean也会被废弃掉。
global session作用域
<bean id="userPreferences" class="com.foo.UserPreferences" scope="globalSession"/>
global session作用域类似于标准的HTTP Session作用域,不过它仅仅在基于portlet的web应用中才有意义。Portlet规范定义了全局Session的概念,它被所有构成某个 portlet web应用的各种不同的portlet所共享。在global session作用域中定义的bean被限定于全局portlet Session的生命周期范围内。
请注意,假如你在编写一个标准的基于Servlet的web应用,并且定义了一个或多个具有global session作用域的bean,系统会使用标准的HTTP Session作用域,并且不会引起任何错误。
摘自spring 2.0文档
**********************************************************************************************************
jstl 用于格式化数字的 <fmt:formatNumber> 标签
2007-10-17 10:17
<fmt: formatNumber > 标 签用于格式化数字。它的属性和描述如表:
<fmt:formatNumber> 标签属性和说明
属性
描述
value
格式化的数字,该数值可以是 String 类型或 java.lang.Number 类型的实例
type
格式化的类型
pattern
格式化模式
var
结果保存变量
scope
变量的作用范围
maxIntegerDigits
指定格式化结果的最大值
minIntegerDigits
指定格式化结果的最小值
maxFractionDigits
指定格式化结果的最大值,带小数
minFractionDigits
指定格式化结果的最小值,带小数
<fmt:formatNumber> 标签实际是对应 java.util.NumberFormat 类, type 属性的可能值包括 currency (货币)、 number (数字)和 percent (百分比)。
下面看一个示例。
<fmt:formatNumber value="1000.888" type="currency" var="money"/>
该结果将被保存在“ money ”变量中,将根据 Locale 环境显示当地的货币格式。
****************************************************************************************
JSTL中 varStatus
2007-06-17
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://squll.blogbus.com/logs/5955546.html
不论是对整数还是对集合进行迭代, <c:forEach> 剩余的属性 varStatus 所起的作用相同。和 var 属性一样, varStatus 用于创建限定了作用域的变量。不过,由 varStatus 属性命名的变量并不存储当前索引值或当前元素,而是赋予 javax.servlet.jsp.jstl.core.LoopTagStatus 类的实例。该类定义了一组特性,它们描述了迭代的当前状态,下面列出了这些特性:
特性 Getter 描述
current getCurrent() 当前这次迭代的(集合中的)项
index getIndex() 当前这次迭代从 0 开始的迭代索引
count getCount() 当前这次迭代从 1 开始的迭代计数
first isFirst() 用来表明当前这轮迭代是否为第一次迭代的标志
last isLast() 用来表明当前这轮迭代是否为最后一次迭代的标志
begin getBegin() begin 属性值
end getEnd() end 属性值
step getStep() step 属性值
*******************************************************************************************
String... aaa可以传String[] aaa,String aaa