bookstopnew学习总结

本文介绍Java中for循环的新用法,通过示例展示如何遍历列表并打印元素。此外,深入探讨Spring框架中不同作用域的配置与使用方法,包括request、session和globalsession等作用域的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值