??xml version="1.0" encoding="utf-8" standalone="yes"?>
用来定义manifest文g的版本,例如QManifest-Version: 1.0
2. Created-By
声明该文件的生成者,一般该属性是由jar命o行工L成的Q例如:Created-By: Apache Ant 1.5.1
3. Signature-Version
定义jar文g的签名版?br />
4. Class-Path
应用E序或者类装蝲器用该值来构徏内部的类搜烦路径
? 应用E序相关属?br />
1. Main-Class
定义jar文g的入口类Q该cdL一个可执行的类Q一旦定义了该属性即可通过 java -jar x.jar来运行该jar文g?br />
? 程?Applet)相关属?br />
1. Extendsion-List
该属性指定了程序需要的扩展信息列表Q列表中的每个名字对应以下的属?br />
2. <extension>-Extension-Name
3. <extension>-Specification-Version
4. <extension>-Implementation-Version
5. <extension>-Implementation-Vendor-Id
5. <extension>-Implementation-URL
? 扩展标识属?br />
1. Extension-Name
该属性定义了jar文g的标识,例如Extension-Name: Struts Framework
? 包扩展属?br />
1. Implementation-Title 定义了扩展实现的标题
2. Implementation-Version 定义扩展实现的版?br />
3. Implementation-Vendor 定义扩展实现的组l?br />
4. Implementation-Vendor-Id 定义扩展实现的组l的标识
5. Implementation-URL : 定义该扩展包的下载地址(URL)
6. Specification-Title 定义扩展规范的标?br />
7. Specification-Version 定义扩展规范的版?br />
8. Specification-Vendor 声明了维护该规范的组l?br />
9. Sealed 定义jar文g是否存Q值可以是true或者false
? {相关属?br />
{斚w的属性我们可以来参照JavaMail所提供的mail.jar中的一D?br />
Name: javax/mail/Address.class
Digest-Algorithms: SHA MD5
SHA-Digest: AjR7RqnN//cdYGouxbd06mSVfI4=
MD5-Digest: ZnTIQ2aQAtSNIOWXI1pQpw==
q段内容定义cȝ名的cd、计摘要的法名以及对应的摘要内容(使用BASE64Ҏq行~码)
]]>
]]>del package_zh_CN.properties
copy package.properties package_zh_CN.properties.utf8
native2ascii -encoding utf-8 package_zh_CN.properties.utf8 package_zh_CN.properties
del package_zh_CN.properties.utf8
del *.bak
]]>
]]>
]]>
假如你能Cq算W优先次序表Q我从来C住)Q那么就可以写出?#8220;聪明”的代码。但再深入想一层,那也会代码的读者/l护者感到困扰。所以忘了那些次序吧Q在拿不准的时候加上括号即可?br />
]]>package org.siyn.util;
import java.io.InputStream;
import java.util.Properties;
/**
* <p>
* 本类用提供一个线E同步的Ҏ,d资源文g中的配置信息
* </p>
*
* @author siyn
* @date 2008-7-10
*/
public class PropertiesReader
{
private String file;
private Properties properties;
/**
* 构?nbsp;PropertysReader
* @param {String} path 相对于classes的文件\?br />
*/
public PropertiesReader(String path)
{
this.file = path;
this.properties = new Properties();
}
/**
* <p>
* 本方法根据资源名获取资源内容
* <p>
*
* @param {String} key 资源文g内key
* @param {Stirng} defaultValue 默认?br />
*
* @reaurn String key对应的资源内?br />
*/
public synchronized String getProperty(String key, String defaultValue)
{
try
{
InputStream in = this.getClass().getClassLoader()
.getResourceAsStream(this.file);
properties.load(in);
}
catch (Exception ex1)
{
System.out.println("没有扑ֈ资源文g:" + this.file);
}
return properties.getProperty(key, defaultValue);
}
/**
* <p>
* 本方法根据资源名获取资源内容
* <p>
*
* @param {String} key 资源文g内key
* @param {Stirng} defaultValue 默认?br />
* @param {boolean} isnull 如果配置文gvalue为空Q是否用默认?br />
*
* @reaurn String key对应的资源内?br />
*/
public synchronized String getProperty(String key, String defaultValue,boolean isnull)
{
String value = null;
value = getProperty(key,defaultValue);
if(isnull && (value == null || "".equals(value.trim()) ) )
value = defaultValue;
return value;
}
public static void main(String[] args)
{
PropertiesReader preader = new PropertiesReader("log4j.properties");
String rootLogger = preader.getProperty("aaa", "defaul");
System.out.println(rootLogger);
}
}
]]>
源码siyn-pager.rar下蝲
下面主要介绍一下其使用Ҏ:
1.把siyn-pager.jar攑ֈlib下,
2.把siyn-pager.tld攑ֈ/WEB-INF/?
3.修改web.xml文g,dtld配置
JAVA通过接口来实现CALLBACK?nbsp;
例:
1.class A,class B
2.class A实现接口operate
3.class B拥有一个参Cؓoperate接口cd的函数test(operate o)
4.class Aq行时调用class B中test函数,以自w传入参?nbsp;
5.class B已取得AQ就可以随时回调A所实现的operate接口中的Ҏ
=========================================================================
接口和回?~程一个常用的模式是回调模式,在这U模式中你可以指定当一个特定时间发生时回调对象上的Ҏ?/p>
==========================================================================
概括一句:回调函数实际上就是在调用某个函数Q通常是API函数Q时Q将自己的一个函敎ͼq个函数为回调函敎ͼ的地址作ؓ参数传递给那个函数。而那个函数在需要的时候,利用传递的地址调用回调函数Q这时你可以利用q个Z在回调函C处理消息或完成一定的操作?/p>
===========================================================================
借用John D. Mitchell的例子应该比较好理解
在MS-Windows或者X-Windowpȝ的事仉动模型中Q当某些事g发生的时候,开发h员已l熟悉通过传递函数指针来调用处理Ҏ。而在Java的面向对象的模型中,不能支持q种ҎQ因而看h好像排除了用这U比较舒服的机制Q但事实q如此?/p>
Java的接口提供了一U很好的机制来让我们辑ֈ和回调相同的效果。这个诀H就在于定一个简单的接口Q在接口之中定义一个我们希望调用的Ҏ?/p>
举个例子来说Q假讑ֽ一个事件发生的时候,我们惛_被通知Q那么我们定义一个接口:
q就l我们一个控制实C该接口的所有类的对象的控制炏V因此,我们不需要关心Q何和自己相关的其它外界的cd信息。这U方法比C函数更好Q因为在C++风格的代码中Q需要指定一个数据域来保存对象指针,而Java中这U实现ƈ不需要?/p>
发出事g的类需要对象实现InterestingEvent接口Q然后调用接口中的interestingEvent ()Ҏ?/p>
在这个例子中Q我们用了somethingHappenedq个标志来跟t是否事件应该被Ȁ发。在许多事例中,被调用的Ҏ能够Ȁ发interestingEvent()Ҏ才是正确的?/p>
希望收到事g通知的代码必d现InterestingEvent接口Qƈ且正的传递自w的引用C仉知器?/p>
<option value="image/bmp">BMP</option>
<option value="image/gif">GIF</option>
<option value="image/jpeg">JPEG</option>
<option value="image/tiff">TIFF</option>
<option value="image/x-dcx">DCX</option>
<option value="image/x-pcx">PCX</option>
<option value="text/html">HTML</option>
<option value="text/plain">TXT</option>
<option value="text/xml">XML</option>
<option value="application/afp">AFP</option>
<option value="application/pdf">PDF</option>
<option value="application/rtf">RTF</option>
<option value="application/msword">MSWORD</option>
<option value="application/vnd.ms-excel">MSEXCEL</option>
<option value="application/vnd.ms-powerpoint">MSPOWERPOINT</option>
<option value="application/wordperfect5.1">WORDPERFECT</option>
<option value="application/vnd.lotus-wordpro">WORDPRO</option>
<option value="application/vnd.visio">VISIO</option>
<option value="application/vnd.framemaker">FRAMEMAKER</option>
<option value="application/vnd.lotus-1-2-3">LOTUS123</option>