??xml version="1.0" encoding="utf-8" standalone="yes"?>成人国产免费视频,欧美视频亚洲视频,免费国产在线视频http://www.aygfsteel.com/zhangyuan/category/45559.htmll理的空?/description>zh-cnMon, 06 Sep 2010 13:23:43 GMTMon, 06 Sep 2010 13:23:43 GMT60JAVA拦截器原理及Struts2扩展http://www.aygfsteel.com/zhangyuan/archive/2010/09/06/331229.htmlえ经理ええ经理えMon, 06 Sep 2010 09:21:00 GMThttp://www.aygfsteel.com/zhangyuan/archive/2010/09/06/331229.htmlhttp://www.aygfsteel.com/zhangyuan/comments/331229.htmlhttp://www.aygfsteel.com/zhangyuan/archive/2010/09/06/331229.html#Feedback0http://www.aygfsteel.com/zhangyuan/comments/commentRss/331229.htmlhttp://www.aygfsteel.com/zhangyuan/services/trackbacks/331229.html最q发现很多朋友连拦截器都不知道,于是惛_个BLOGȝ一下?br /> java拦截器的基本原理其实非常单,说白了就是动态代理类?br /> 下面来看一个简单的例子
首先Q我建立一个拦截器的类InterceptorClassQ这里的before()和after()Ҏ是以后拦截器会执行的Ҏ
CODE清单一Q?br />

public class InterceptorClass {
 
public void before()
  System.out.println(
"拦截器InterceptorClassҎ调用:before()!"); 
 }
 
 
public void after()
     System.out.println(
"拦截器InterceptorClassҎ调用:after()!"); 
 }

}

 

我们模拟一个业务组件接口BusinessInterfaceQ和一个业务组件实现类BusinessClass
CODE清单二:

public interface BusinessInterface {
 
public void doSomething();
}

 

CODE清单三:

public class BusinessClass implements BusinessInterface {
 
public void doSomething() {
   System.out.println(
"业务lgBusinessClassҎ调用:doSomething()"); 
 }

}

 

然后Q创Z个动态代理类DynamicProxyHandlerQ这个类是集成InvocationHandler接口的,动态类的原理实际上是得当你执行一个动态方

法的时候,他可以把q个动态方法dispatch到这个动态类上来。这P你就可以在这个方法的前后嵌入自己的一些方法?br /> CODE清单四:
//包含了业务对象绑定动态代理类的处理,q实CInvocationHandler接口的invokeҎ

public class DynamicProxyHandler implements InvocationHandler {
 
private Object business;//被代理对?/span>
 private InterceptorClass inceptor = new InterceptorClass();//拦截?br />  
 
// 动态生成一个代理类对象,q绑定被代理cd代理处理?/span>
 public Object bind(Object business) {
   
this.business = business;
   
return Proxy.newProxyInstance(
     
//被代理类的ClassLoader
     business.getClass().getClassLoader(),
     
//要被代理的接?本方法返回对象会自动声称实现了这些接?/span>
     business.getClass().getInterfaces(), 
     
//代理处理器对?/span>
     this);
 }


 
 // 代理要调用的Ҏ,q在Ҏ调用前后调用q接器的Ҏ

 /**
  * 
@param proxy  代理cd?br />   * @param method 被代理的接口Ҏ
  * 
@param args   被代理接口方法的参数
  * 
@throws Throwable
  
*/

 
public Object invoke(Object proxy, Method method, Object[] args)
   
throws Throwable {
  Object result 
= null;
  inceptor.before();
  result
=method.invoke(business,args);
  inceptor.after();
  
return result;
 }


OKQ我们来写个cL试一?br /> CODE清单五:

public static void main(String[] args) {
  
//生成动态代理类实例
  DynamicProxyHandler handler = new DynamicProxyHandler();
  
//生成待测试的业务lg对象
        BusinessInterface business = new BusinessClass();
        
//业务组件对象和动态代理类实例l定
        BusinessInterface businessProxy = (BusinessInterface) handler.bind(business);
        
//用动态代理类调用Ҏ
        businessProxy.doSomething();
 }


来看看结果:


q期struts2很流行,而且拦截器是struts2里面一个比较好的功能,下面举个例子说明一下拦截器在struts2中的用法?br /> struts2Ҏ截器实现做了一个封装,使得我们在实现的时候比较简单?br /> 首先我们要徏一个拦截器c?br /> CODE清单六:

public class AuthorizationInterceptor extends AbstractInterceptor {
 @Override
 
public String intercept(ActionInvocation invocation) throws Exception {
  Map session 
= invocation.getInvocationContext().getSession();
  String userName 
= (String) session.get("userName");
  
if ( userName != null && userName.equals("test")) {
   System.out.println(
"拦截器:合法用户d---");
   
return invocation.invoke();
  }

  
else
  
{
   System.out.println(
"拦截器:用户未登?--");
   
return Action.LOGIN;
  }

 }

}


q个cL必须要承struts2包中提供的AbstractInterceptorc,q个cL一个抽象方法interceptQ这个方法是必须要实现的?br /> 那么l理在这个拦截器里面写了一个简单的实现Q对url用户合法性做了一个限制?/p>

接下来比较关键的是过滤器在struts2中的配置Q先看看代码
CODE清单七:

<package name="system" extends="struts-default">
  
<interceptors>
   
<!--  定义权限控制拦截?nbsp; -->
   
<interceptor name="authority" 

class
="com.sharesin.biz.common.intercepts.struts2.AuthorizationInterceptor"/>
   
<!-- 定义一个包含权限控制的拦截器栈   -->
   
<interceptor-stack name="mystack">
    
<interceptor-ref name="defaultStack"></interceptor-ref>
    
<interceptor-ref name="authority"></interceptor-ref>
   
</interceptor-stack>
  
</interceptors>
   
<!--定义默认拦截?nbsp;  -->
        
<default-interceptor-ref name="mystack" />
   
<!--定义全局处理l果   -->
  
<global-results>
   
<result name="login">index.jsp</result>
  
</global-results>
  
<action name="login_*" class="com.sharesin.biz.web.system.LoginAction" method="{1}">
   
<result name="success">system/homepage.jsp</result>
  
</action>
 
</package>


在interceptors节点里,我们可以定义多个拦截器,q里的名为authority的只是其中的一个。struts2的拦截器栈我是先执行struts2默认的拦

截器defaultStackQ然后再执行我的。然后只需要用default-interceptor-ref标签讄好这个system包中的默认拦截器个拦截器OK了?/p>

struts2中引入了packageq个概念Q我觉得十分实用Q当然这对struts2拦截器也是个实惠Q我们可以根据不同的action来分包和不同的拦截器


okQ来q行试一下?/p>


l果..


 

 

 

 

 



え经理え 2010-09-06 17:21 发表评论
]]>
关于Integer大小比较的问?/title><link>http://www.aygfsteel.com/zhangyuan/archive/2010/07/24/327011.html</link><dc:creator>え经理え</dc:creator><author>え经理え</author><pubDate>Sat, 24 Jul 2010 08:03:00 GMT</pubDate><guid>http://www.aygfsteel.com/zhangyuan/archive/2010/07/24/327011.html</guid><wfw:comment>http://www.aygfsteel.com/zhangyuan/comments/327011.html</wfw:comment><comments>http://www.aygfsteel.com/zhangyuan/archive/2010/07/24/327011.html#Feedback</comments><slash:comments>10</slash:comments><wfw:commentRss>http://www.aygfsteel.com/zhangyuan/comments/commentRss/327011.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/zhangyuan/services/trackbacks/327011.html</trackback:ping><description><![CDATA[昨天跟朋友一起吃饭,他说C个Integercd值比较是否相{的问题。经理也在这里把java的Integer值比较的问题拿出来说一说。因为在面试的时候这个是l常遇到的问题?br /> 首先l大家看一个例子:<br /> <div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #008080"> 1</span><img id="Codehighlighter1_18_273_Open_Image" onclick="this.style.display='none'; Codehighlighter1_18_273_Open_Text.style.display='none'; Codehighlighter1_18_273_Closed_Image.style.display='inline'; Codehighlighter1_18_273_Closed_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" alt="" /><img style="display: none" id="Codehighlighter1_18_273_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_18_273_Closed_Text.style.display='none'; Codehighlighter1_18_273_Open_Image.style.display='inline'; Codehighlighter1_18_273_Open_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" alt="" /><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">class</span><span style="color: #000000"> Test </span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_18_273_Closed_Text"><img src="http://www.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_18_273_Open_Text"><span style="color: #000000">{<br /> </span><span style="color: #008080"> 2</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" /><br /> </span><span style="color: #008080"> 3</span><span style="color: #000000"><img id="Codehighlighter1_22_64_Open_Image" onclick="this.style.display='none'; Codehighlighter1_22_64_Open_Text.style.display='none'; Codehighlighter1_22_64_Closed_Image.style.display='inline'; Codehighlighter1_22_64_Closed_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" alt="" /><img style="display: none" id="Codehighlighter1_22_64_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_22_64_Closed_Text.style.display='none'; Codehighlighter1_22_64_Open_Image.style.display='inline'; Codehighlighter1_22_64_Open_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" alt="" />    </span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_22_64_Closed_Text">/** */</span><span id="Codehighlighter1_22_64_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000"><br /> </span><span style="color: #008080"> 4</span><span style="color: #008000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />     * 关于Integer大小比较问题<br /> </span><span style="color: #008080"> 5</span><span style="color: #008000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />     * </span><span style="color: #808080">@author</span><span style="color: #008000"> l理<br /> </span><span style="color: #008080"> 6</span><span style="color: #008000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" alt="" />     </span><span style="color: #008000">*/</span></span><span style="color: #000000"><br /> </span><span style="color: #008080"> 7</span><span style="color: #000000"><img id="Codehighlighter1_106_271_Open_Image" onclick="this.style.display='none'; Codehighlighter1_106_271_Open_Text.style.display='none'; Codehighlighter1_106_271_Closed_Image.style.display='inline'; Codehighlighter1_106_271_Closed_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" alt="" /><img style="display: none" id="Codehighlighter1_106_271_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_106_271_Closed_Text.style.display='none'; Codehighlighter1_106_271_Open_Image.style.display='inline'; Codehighlighter1_106_271_Open_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" alt="" />    </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">static</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> main(String[] args) </span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_106_271_Closed_Text"><img src="http://www.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_106_271_Open_Text"><span style="color: #000000">{<br /> </span><span style="color: #008080"> 8</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />        Integer a </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">10</span><span style="color: #000000">;<br /> </span><span style="color: #008080"> 9</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />        Integer b </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">10</span><span style="color: #000000">;<br /> </span><span style="color: #008080">10</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />        System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">a==b : </span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> String.valueOf(a</span><span style="color: #000000">==</span><span style="color: #000000">b));<br /> </span><span style="color: #008080">11</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />        System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">a.equals(b) : </span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> String.valueOf(a.equals(b)));<br /> </span><span style="color: #008080">12</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" alt="" />    }</span></span><span style="color: #000000"><br /> </span><span style="color: #008080">13</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" alt="" />}</span></span><span style="color: #000000"><br /> </span><span style="color: #008080">14</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /></span></div> q行一下,在控制台得到的结果是q样?br /> <div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /><span style="color: #000000">a</span><span style="color: #000000">==</span><span style="color: #000000">b : </span><span style="color: #0000ff">true</span><span style="color: #000000"><br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />a.equals(b) : </span><span style="color: #0000ff">true</span></div> <br /> 当是当我们变换一下?br /> <div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #008080"> 1</span><img id="Codehighlighter1_18_277_Open_Image" onclick="this.style.display='none'; Codehighlighter1_18_277_Open_Text.style.display='none'; Codehighlighter1_18_277_Closed_Image.style.display='inline'; Codehighlighter1_18_277_Closed_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" alt="" /><img style="display: none" id="Codehighlighter1_18_277_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_18_277_Closed_Text.style.display='none'; Codehighlighter1_18_277_Open_Image.style.display='inline'; Codehighlighter1_18_277_Open_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" alt="" /><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">class</span><span style="color: #000000"> Test </span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_18_277_Closed_Text"><img src="http://www.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_18_277_Open_Text"><span style="color: #000000">{<br /> </span><span style="color: #008080"> 2</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" /><br /> </span><span style="color: #008080"> 3</span><span style="color: #000000"><img id="Codehighlighter1_22_64_Open_Image" onclick="this.style.display='none'; Codehighlighter1_22_64_Open_Text.style.display='none'; Codehighlighter1_22_64_Closed_Image.style.display='inline'; Codehighlighter1_22_64_Closed_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" alt="" /><img style="display: none" id="Codehighlighter1_22_64_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_22_64_Closed_Text.style.display='none'; Codehighlighter1_22_64_Open_Image.style.display='inline'; Codehighlighter1_22_64_Open_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" alt="" />    </span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_22_64_Closed_Text">/** */</span><span id="Codehighlighter1_22_64_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000"><br /> </span><span style="color: #008080"> 4</span><span style="color: #008000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />     * 关于Integer大小比较问题<br /> </span><span style="color: #008080"> 5</span><span style="color: #008000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />     * </span><span style="color: #808080">@author</span><span style="color: #008000"> l理<br /> </span><span style="color: #008080"> 6</span><span style="color: #008000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" alt="" />     </span><span style="color: #008000">*/</span></span><span style="color: #000000"><br /> </span><span style="color: #008080"> 7</span><span style="color: #000000"><img id="Codehighlighter1_106_275_Open_Image" onclick="this.style.display='none'; Codehighlighter1_106_275_Open_Text.style.display='none'; Codehighlighter1_106_275_Closed_Image.style.display='inline'; Codehighlighter1_106_275_Closed_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" alt="" /><img style="display: none" id="Codehighlighter1_106_275_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_106_275_Closed_Text.style.display='none'; Codehighlighter1_106_275_Open_Image.style.display='inline'; Codehighlighter1_106_275_Open_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" alt="" />    </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">static</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> main(String[] args) </span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_106_275_Closed_Text"><img src="http://www.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_106_275_Open_Text"><span style="color: #000000">{<br /> </span><span style="color: #008080"> 8</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />        Integer a </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">1000</span><span style="color: #000000">;<br /> </span><span style="color: #008080"> 9</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />        Integer b </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">1000</span><span style="color: #000000">;<br /> </span><span style="color: #008080">10</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />        System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">a==b : </span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> String.valueOf(a</span><span style="color: #000000">==</span><span style="color: #000000">b));<br /> </span><span style="color: #008080">11</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />        System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">a.equals(b) : </span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> String.valueOf(a.equals(b)));<br /> </span><span style="color: #008080">12</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" alt="" />    }</span></span><span style="color: #000000"><br /> </span><span style="color: #008080">13</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" alt="" />}</span></span></div> <br /> q行一下,控制台的l果又是<br /> <div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /><span style="color: #000000">a</span><span style="color: #000000">==</span><span style="color: #000000">b : </span><span style="color: #0000ff">false</span><span style="color: #000000"><br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />a.equals(b) : </span><span style="color: #0000ff">true</span></div> <br /> q是什么原因呢Q我当时也有点犯p涂。有点冲动就直接开源码看了?br /> 实际上在我们用Integer a = 数字Q来赋值的时候Integerq个cL调用的public static Integer valueOf(int i)q个Ҏ?br /> <div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #008080">1</span><img id="Codehighlighter1_37_187_Open_Image" onclick="this.style.display='none'; Codehighlighter1_37_187_Open_Text.style.display='none'; Codehighlighter1_37_187_Closed_Image.style.display='inline'; Codehighlighter1_37_187_Closed_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" alt="" /><img style="display: none" id="Codehighlighter1_37_187_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_37_187_Closed_Text.style.display='none'; Codehighlighter1_37_187_Open_Image.style.display='inline'; Codehighlighter1_37_187_Open_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" alt="" /><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">static</span><span style="color: #000000"> Integer valueOf(</span><span style="color: #0000ff">int</span><span style="color: #000000"> i) </span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_37_187_Closed_Text"><img src="http://www.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_37_187_Open_Text"><span style="color: #000000">{<br /> </span><span style="color: #008080">2</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />        </span><span style="color: #0000ff">if</span><span style="color: #000000">(i </span><span style="color: #000000">>=</span><span style="color: #000000"> </span><span style="color: #000000">-</span><span style="color: #000000">128</span><span style="color: #000000"> </span><span style="color: #000000">&&</span><span style="color: #000000"> i </span><span style="color: #000000"><=</span><span style="color: #000000"> IntegerCache.high)<br /> </span><span style="color: #008080">3</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />            </span><span style="color: #0000ff">return</span><span style="color: #000000"> IntegerCache.cache[i </span><span style="color: #000000">+</span><span style="color: #000000"> </span><span style="color: #000000">128</span><span style="color: #000000">];<br /> </span><span style="color: #008080">4</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />        </span><span style="color: #0000ff">else</span><span style="color: #000000"><br /> </span><span style="color: #008080">5</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />            </span><span style="color: #0000ff">return</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> Integer(i);<br /> </span><span style="color: #008080">6</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" alt="" />    }</span></span></div> 我们来看看ValueOf(int i)的代码,可以发现他对传入参数i做了一个if判断。在-128<=i<=127的时候是直接用的int原始数据cdQ而超Zq个范围则是new了一个对象。我们知?=="W号在比较对象的时候是比较的内存地址Q而对于原始数据类型是直接比对的数据倹{那么这个问题就解决了?br /> 至于Z么用int型的时候g?128<=i<=127范围呢呢?我们知道八位二进制的表示的范围正好就?128?27。大概就是因吧?br /> <br /> 把^时出现的问题记录下来Q自己就可以一点一点进步了? <img src ="http://www.aygfsteel.com/zhangyuan/aggbug/327011.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/zhangyuan/" target="_blank">え经理え</a> 2010-07-24 16:03 <a href="http://www.aygfsteel.com/zhangyuan/archive/2010/07/24/327011.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JAVAd配置文ghttp://www.aygfsteel.com/zhangyuan/archive/2010/07/12/325843.htmlえ经理ええ经理えMon, 12 Jul 2010 03:48:00 GMThttp://www.aygfsteel.com/zhangyuan/archive/2010/07/12/325843.htmlhttp://www.aygfsteel.com/zhangyuan/comments/325843.htmlhttp://www.aygfsteel.com/zhangyuan/archive/2010/07/12/325843.html#Feedback4http://www.aygfsteel.com/zhangyuan/comments/commentRss/325843.htmlhttp://www.aygfsteel.com/zhangyuan/services/trackbacks/325843.html q里写了一个例子,先给大家看看目录l构

l理是用properties文g来做的,因ؓq个非常单,而且dproperties文g的速度比读xml要快的多?br /> q里的主要文件有两个Qconfig.properties是配|文ӞTest是测试javac?br /> config文g的内容就是一个ip一个port

原理很简单就是首先取得config.properties的二q制,然后用JAVA装好的PropertiescLq个loadq来Q最后只需要用Properties对象中的getProperty(String key)Ҏ可以取g。是不是很简单?br /> l大家看看代码:

我们来运行下l果Q?br />
成功了~


え经理え 2010-07-12 11:48 发表评论
]]>
վ֩ģ壺 | | | ϽϽ| ຣʡ| ʤ| | ƺ| ϰˮ| з| ̫| | ϼ| | ϴ| | ׶| | Ϫ| | | | | ׳| | ԰| | | ˮ| | | Ӫ| | | | ͼʲ| ڳ| | | | ˱|