亚洲成在人线电影天堂色,亚洲精品无码久久一线,狠狠亚洲狠狠欧洲2019http://www.tkk7.com/forget/category/3183.html<h2>能吃能睡是福;能忘是大福......</h2>zh-cnFri, 13 May 2011 13:41:58 GMTFri, 13 May 2011 13:41:58 GMT60SVN完整安裝及簡略使用http://www.tkk7.com/forget/archive/2006/08/08/62304.html橘子橘子Tue, 08 Aug 2006 02:33:00 GMThttp://www.tkk7.com/forget/archive/2006/08/08/62304.htmlhttp://www.tkk7.com/forget/comments/62304.htmlhttp://www.tkk7.com/forget/archive/2006/08/08/62304.html#Feedback0http://www.tkk7.com/forget/comments/commentRss/62304.htmlhttp://www.tkk7.com/forget/services/trackbacks/62304.html閱讀全文

橘子 2006-08-08 10:33 發表評論
]]>
php開發wap常用技巧http://www.tkk7.com/forget/archive/2006/06/17/53462.html橘子橘子Sat, 17 Jun 2006 03:43:00 GMThttp://www.tkk7.com/forget/archive/2006/06/17/53462.htmlhttp://www.tkk7.com/forget/comments/53462.htmlhttp://www.tkk7.com/forget/archive/2006/06/17/53462.html#Feedback1http://www.tkk7.com/forget/comments/commentRss/53462.htmlhttp://www.tkk7.com/forget/services/trackbacks/53462.html在php中輸出返回上一級的代碼:
echo "<a href=".$_SERVER["HTTP_REFERER"].">點擊這里返回</a>";
在wap中的代碼是:
<?php
@header("Content-Type:text/vnd.wap.wml");
?>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.3//EN" "<wml>
<head>
<meta http-equiv="expires" content="0" />
</head>
<card title="輸入標題">
<do type="prev" label="返回上頁">
<prev/>
<!--provide a button you can clink to back a step-->
</do><br/>
<!--<anchor>
<prev/>后退
</anchor>-->?
</card>
</wml>
在wap中打電話的代碼:
<?php
?@header("Content-Type:text/vnd.wap.wml");
?>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.3//EN" "
<wml>
<head>
<meta http-equiv="expires" content="0" />
</head>
<card title="標題">
<p>
<input name="phone_no" format="*m" value="13"/>
<do type="option" >
<go href="wtai://wp/mc;$(phone_no)"/>
</do><br/>
或者
<a href="wtai://wp/mc;13333333333">撥打電話</a>
<br />
</p>
</card>
</wml>

加入WAP書簽

<?xml version="1.0"?>
<!DOCTYPE CHARACTERISTIC-LIST SYSTEM "/DTD/characteristic_list.xml">
<CHARACTERISTIC-LIST>
<CHARACTERISTIC TYPE="ADDRESS">
<PARM NAME="BEARER" VALUE="GPRS"/>
<PARM NAME="PROXY" VALUE="10.0.0.172"/>
<PARM NAME="PORT" VALUE="9201"/>
<PARM NAME="GPRS_ACCESSPOINTNAME" VALUE="wap.02826.com"/>
<PARM NAME="PPP_AUTHTYPE" VALUE="PAP"/>
</CHARACTERISTIC>
<CHARACTERISTIC TYPE="NAME">
<PARM NAME="NAME" VALUE="wmzsoft GPRS"/>
</CHARACTERISTIC>
<CHARACTERISTIC TYPE="BOOKMARK"/>
<PARM NAME="NAME" VALUE="02826"/>
<PARM NAME="URL" VALUE="
http://wap.02826.com "/>
</CHARACTERISTIC>
</CHARACTERISTIC-LIST>


橘子 2006-06-17 11:43 發表評論
]]>
點中復選框使得復選框后的文本框內容顯示出指定的內容http://www.tkk7.com/forget/archive/2006/06/09/51764.html橘子橘子Fri, 09 Jun 2006 15:08:00 GMThttp://www.tkk7.com/forget/archive/2006/06/09/51764.htmlhttp://www.tkk7.com/forget/comments/51764.htmlhttp://www.tkk7.com/forget/archive/2006/06/09/51764.html#Feedback0http://www.tkk7.com/forget/comments/commentRss/51764.htmlhttp://www.tkk7.com/forget/services/trackbacks/51764.html<!--
function test(obj) {
??? if (obj.checked) {document.all(obj.name+'_t').value=obj.value}
??? else {document.all(obj.name+'_t').value=''}
}
//-->
</script>
<input type="checkbox" name="cb1" value="aaaa" onClick="test(this)">aaaa
<input type="text" name="cb1_t">
<br>
<input type="checkbox" name="cb2" value="bbbb" onClick="test(this)">bbbb
<input type="text" name="cb2_t">
<br>
<input type="checkbox" name="cb3" value="cccc" onClick="test(this)">cccc
<input type="text" name="cb3_t">
<br>
<input type="checkbox" name="cb4" value="dddd" onClick="test(this)">dddd
<input type="text" name="cb4_t">

這樣一來 如果想輸入某個確定的值時就不用那么辛辛苦苦的復制了,點擊就自動選擇!

橘子 2006-06-09 23:08 發表評論
]]>
php上傳多個文件http://www.tkk7.com/forget/archive/2006/06/08/51520.html橘子橘子Thu, 08 Jun 2006 14:31:00 GMThttp://www.tkk7.com/forget/archive/2006/06/08/51520.htmlhttp://www.tkk7.com/forget/comments/51520.htmlhttp://www.tkk7.com/forget/archive/2006/06/08/51520.html#Feedback1http://www.tkk7.com/forget/comments/commentRss/51520.htmlhttp://www.tkk7.com/forget/services/trackbacks/51520.html前面提到了上傳單個文件的方法,上傳多個文件的思想類似
1、在表單頁面動態生成多個文件提交框,這里注意一下,多個文件提交框的名字要設置為數組,否則只有一個文件會上傳。
此時在$_FILES數組構造方式是這樣:$_FILES["files"][xxxxfileProperty][xxxcount]; 比如說我要知道第一個文件的error值:$_FILES["userfiles"]["error"][0] ,第一個文件客戶端名字:$_FILES["userfiles"]["name"][0]等等。
2、接收端接收,操作和單個的是一樣,只是需要做個循環,有多少個文件做多少次循環,以便所有的文件都能正確發送。
示例代碼:
表單頁面
<form enctype="multipart/form-data" action="post.php" method="post">
&nbsp;&nbsp;文章標題:&nbsp;&nbsp;<input name="title" type="text"/>&nbsp;標題不能為空!
<br />&nbsp;&nbsp;淘吧名字:&nbsp;&nbsp;<input name="bar_name" type="text"/>
<?php
echo "請選擇一個!\t(";
for ($i=0; $i<count($name); $i++ ){
?echo mb_convert_encoding($name[$i]["name"],"UTF-8","GB2312");
?echo "? ";
}
echo ")";
?>
<br />
<textarea name="text" cols="90" rows="20"></textarea>
<?php
for ($i=0;$i<3;$i++){
?echo "<input name=\"userfile[]\" type=\"file\"/>";
}
echo "<input name=\"i\" type=\"hidden\" value=\"$i\" />";
?>
</td></tr>
</table>
<table align="center" cellpadding="0" cellspacing="0"><tr><td>
<input name="submit" type="submit" value="確定提交"/>&nbsp;&nbsp;
<input name="reset" type="reset" value="重新來過"/>
</form>
處理頁面
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "<html xmlns="<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>提交</title>
</head>

<body>
<?php
$title=$_POST["title"];
$text=$_POST["text"];
$name=$_POST["name"];
$count=$_POST["i"];
include_once("數據庫連接文件");
if (empty($title)||empty($text)||empty($bar_name)){
?echo "標題或內容不能空
?die("<br /><a href=\"index.php\">重新來過</a>");
}

/*這里是數據查詢語言取出要用的數據*/

if(in_array("0", $_FILES['userfile']['error'])){//上傳文件開始
?$uploaddir= 'attfile/';//設置上傳的文件夾地址
?$FILES_EXT=array('.gif','.jpg','.mp3','.3gp');//設置允許上傳文件的類型
?$MAX_SIZE = 20000000;//設置文件上傳限制20000000byte=2M
?for ($i=0;$i<$count;$i++){
??$FILES_NAME=$_FILES['userfile']['name'][$i];//客戶端文件名
??//取出文件后綴名,strrpos()從標記開始前字節個數(不算標記),substr()顯示從第strrpos()之后的字符
??$file_ext=substr($FILES_NAME,strrpos($FILES_NAME,"."));
??//檢查文件大小
??if($_FILES['userfile']['size'][$i]>$MAX_SIZE){
???echo "文件大小超程序允許范圍!";
???exit;
??}
??//檢查文件類型
??if(in_array($file_ext, $FILES_EXT)){
???$_FILES['userfile']['name'][$i]=date("YmdHis").rand(10000,1000000).$file_ext;
???//echo $_FILES['userfile']['name'][$i];
???$uploadfile = $uploaddir.$_FILES['userfile']['name'][$i];//上傳后文件的路徑及文件名
???//echo $uploadfile;
???//用move函數生成臨時文件名,并按照 $_FILES['userfile']['name']上傳到$uploaddir下
???if (move_uploaded_file($_FILES['userfile']['tmp_name'][$i], $uploadfile)) {
????//將上傳后的路徑寫入到數據庫中
????$post_id=(int)$post_id;
????$uploadfile="attfile/".$_FILES['userfile']['name'][$i];
????$sql=插入語句
????$stmt=$db->prepare($sql);
????$stmt->execute();
????print "<br />文件\n{$FILES_NAME}\n上傳成功!";
???} else {
????print "上傳錯誤!? 以下是上傳的信息:\n";
????print_r($_FILES);
???}
??}
??else{
???echo "{$FILES_NAME}\n不是允許上傳的文件類型!";
???exit;
??}
?}
}

?>
</body>
</html>



橘子 2006-06-08 22:31 發表評論
]]>
php上傳單個文件http://www.tkk7.com/forget/archive/2006/06/08/51506.html橘子橘子Thu, 08 Jun 2006 14:09:00 GMThttp://www.tkk7.com/forget/archive/2006/06/08/51506.htmlhttp://www.tkk7.com/forget/comments/51506.htmlhttp://www.tkk7.com/forget/archive/2006/06/08/51506.html#Feedback0http://www.tkk7.com/forget/comments/commentRss/51506.htmlhttp://www.tkk7.com/forget/services/trackbacks/51506.html ??? PHP上傳文件的問題:
一:1、上傳單個文件的時候。在表單頁面設置文件輸入域,<input name="userfile" type="file" />然后表單要加入<form enctype="multipart/form-data" action="post.php" method="post">這個屬性,這是告訴瀏覽器我要上傳文件的屬性,一定要加上。
??? 2、設置好了表單,接下來的事就是讀取表單的變量,如果你還定義了其他的變量,那么php使用$_POST來讀出,如:$uservar=$_POST["uservar"],然而文件是存在$_FILES中,具體見下面:
?
? * $_FILES['userfile']['name'] 客戶端機器文件的原名稱。
? ?* $_FILES['userfile']['type'] 文件的 MIME 類型,需要瀏覽器提供該信息的支持,例如“image/gif”。
? ?* $_FILES['userfile']['size'] 已上傳文件的大小,單位為字節。
? ?* $_FILES['userfile']['tmp_name'] 文件被上傳后在服務端儲存的臨時文件名。
? ?* $_FILES['userfile']['error'] 和該文件上傳相關的錯誤代碼

? 1. 值:0; 沒有錯誤發生,文件上傳成功。
? 2. 值:1; 上傳的文件超過了 php.ini 中 upload_max_filesize 選項限制的值。
? 3. 值:2; 上傳文件的大小超過了 HTML 表單中 MAX_FILE_SIZE 選項指定的值。
? 4. 值:3; 文件只有部分被上傳。
? 5. 值:4; 沒有文件被上傳。
3、完成上傳過程。示例代碼:
(1)
<?php
$upload_file=$_FILES['userfile']['tmp_name'];
$upload_file_name=$_FILES['userfile']['name'];
if($upload_file){
?$file_size_max = 20000000;// 1M限制文件上傳最大容量(bytes)
?$store_dir = "attfile/";// 上傳文件的儲存位置
?$accept_overwrite = 1;//是否允許覆蓋相同文件
?// 檢查文件大小
?if ($upload_file_size > $file_size_max) {
??echo "對不起,你的文件容量大于規定";
??exit;
?}
?// 檢查讀寫文件
?if (file_exists($store_dir . $upload_file_name) && !$accept_overwrite) {
??echo?? "存在相同文件名的文件";
??exit;
?}
?//復制文件到指定目錄
?if (!move_uploaded_file($upload_file,$store_dir.$upload_file_name)) {
??echo "復制文件失敗";
??exit;
?}
}
echo?? "<p>你上傳了文件:";
echo $_FILES['userfile']['name'];
echo "<br>";
//客戶端機器文件的原名稱。
Echo?? "文件的 MIME 類型為:";
echo $_FILES['userfile']['type'];
//文件的 MIME 類型,需要瀏覽器提供該信息的支持,例如“image/gif”。
echo "<br>";

Echo?? "上傳文件大小:";
echo $_FILES['userfile']['size'];
//已上傳文件的大小,單位為字節。
echo "<br>";

Echo?? "文件上傳后被臨時儲存為:";
echo $_FILES['userfile']['tmp_name'];
//文件被上傳后在服務端儲存的臨時文件名。
echo "<br>";

$Erroe=$_FILES['userfile']['error'];
switch($Erroe){
?case 0:
?Echo?? "上傳成功"; break;
?case 1:
?Echo?? "上傳的文件超過了 php.ini 中 upload_max_filesize 選項限制的值."; break;
?case 2:
?Echo?? "上傳文件的大小超過了 HTML 表單中 MAX_FILE_SIZE 選項指定的值。";?? break;
?case 3:
?Echo?? "文件只有部分被上傳";break;
?case 4:
?Echo?? "沒有文件被上傳";break;
}
?>
(2)<?php
$uploaddir= '../attfile/';//設置上傳的文件夾地址
$FILES_EXT=array('.gif','.jpg','.bmp');//設置允許上傳文件的類型
$MAX_SIZE = 20000000;//設置文件上傳限制20000000byte=2M
for ($i=0;$i<count($userfile);$i++){
?$FILES_NAME=$_FILES['userfile']['name'][$i];//客戶端文件名
}
//echo $FILES_NAME;
//取出文件后綴名,strrpos()從標記開始前字節個數(不算標記),substr()顯示從第strrpos()之后的字符
$file_ext=substr($FILES_NAME,strrpos($FILES_NAME,"."));
//echo $file_ext;
//檢查文件大小
if($_FILES['userfile']['size']>$MAX_SIZE){
?echo "文件大小超程序允許范圍!";
?exit;
}
//檢查文件類型
if(in_array($file_ext, $FILES_EXT)){
?$_FILES['userfile']['name']=date("YmdHis").rand().$file_ext;
?$uploadfile = $uploaddir.$_FILES['userfile']['name'];//上傳后文件的路徑及文件名
?//將上傳后的路徑寫入到數據庫中

?//用move函數生成臨時文件名,并按照 $_FILES['userfile']['name']上傳到$uploaddir下
?if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
??print "\n上傳成功!";
?} else {
??print "上傳錯誤!? 以下是上傳的信息:\n";
??print_r($_FILES);
?}
}
else{
?echo "{$file_ext}不是允許上傳的文件類型!";
?exit;
}
?>



小技巧>>1、當在提交時,希望確認是否要提交可以在<form>里如這樣加入:<form onsubmit="return confirm('你真的要提交嗎?')">
2、在php里希望返回時所有在文本框里的東西都保留可以這樣:<a href=javascript:history.back(1)>重新來過</a>。



橘子 2006-06-08 22:09 發表評論
]]>
Java中文問題的一般解決辦法http://www.tkk7.com/forget/archive/2006/03/29/38006.html橘子橘子Wed, 29 Mar 2006 03:17:00 GMThttp://www.tkk7.com/forget/archive/2006/03/29/38006.htmlhttp://www.tkk7.com/forget/comments/38006.htmlhttp://www.tkk7.com/forget/archive/2006/03/29/38006.html#Feedback0http://www.tkk7.com/forget/comments/commentRss/38006.htmlhttp://www.tkk7.com/forget/services/trackbacks/38006.html 漢字編碼的常識

我們知道,英文字符一般是以一個字節來表示的,最常用的編碼方法是 ASCII 。但一個字節最多只能區分256個字符,而漢字成千上萬,所以現在都以雙字節來表示漢字,為了能夠與英文字符分開,每個字節的最高位一定為1,這樣雙字節最多可以表示64K格字符。我們經常碰到的編碼方式有 GB2312、BIG5、UNICODE 等。關于具體編碼方式的詳細資料,有興趣的讀者可以查閱相關資料。我膚淺談一下和我們關系密切的 GB2312 和 UNICODE。GB2312 碼,中華人民共和國國家標準漢字信息交換用編碼,是一個由中華人民共和國國家標準總局發布的關于簡化漢字的編碼,通行于中國大陸地區及新加坡,簡稱國標碼。兩個字節中,第一個字節(高字節)的值為區號值加32(20H),第二個字節(低字節)的值為位號值加32(20H),用這兩個值來表示一個漢字的編碼。UNICODE 碼是微軟提出的解決多國字符問題的多字節等長編碼,它對英文字符采取前面加“0”字節的策略實現等長兼容。如 “A” 的 ASCII 碼為0x41,UNICODE 就為0x00,0x41。利用特殊的工具各種編碼之間可以互相轉換。


事實上,Java的中文問題都是由于Java應用所采用的缺省編碼格式與目標或者應用所要讀入字符的編碼格式不同而造成的(具體參見文獻1)。對于如何解決Java的中文問題,通常有四種方法:

1) 選擇JDK的中文本地化版本。盡管Java2 JDK的中文本地化版本(http://java.sun.com/products/jdk/1.2/chinesejdk.html)并不是一個官方的版本,Sun公司也沒有承諾會對該本地化版本進行升級,但其仍不失為一個Java中文問題的解決方案。

2) 選擇合適的編譯參數。對于Java的國際版本來講,我們也可以在編譯Java應用的時候通過指定確定的編碼機制來實現其編譯結果對中文的支持。例如,對于需要支持繁體中文和簡體中文應用可以通過javac -encoding big5 sourcefile.java 和javac -encoding gb2312 sourcefile.java來編譯源程序。

3) 通過編程的方式實現字符編碼的轉換代碼。通過編程的方式來解決Java的中文問題,已經成為了一種較為普遍的做法。下面就是一種最常見的字符編碼轉換函數,其將字符的編碼格式轉換為中文Windows系統的GBK編碼形式。

public ? static ?String?toChinese(String?strvalue)
???
{
?????
try {
???????
if (strvalue == null )
?????????
return ? null ;
???????
else
?????????
{
???????????strvalue?
= ? new ?String(strvalue.getBytes( " ISO8859_1 " ),? " GBK " );
???????????
return ?strvalue;
?????????}

?????????}
catch (Exception?e) {
???????????????
return ? null ;
??????}

???}

4) 定義字符輸出集。對于JSP應用,我們可以通過<%@ page contentType="text/html; charset=GBK" %>或<%@ page contentType="text/html; charset=GB2312" %>來定義JSP頁面的字符輸出集。當然,我們也可以通過HTML的標記<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb2312">來定義字符的輸出集。

分析的原則

總的說來,所有解決Java中文處理的方法都不是很復雜。相反的是,由于Java技術特別是J2EE技術涉及的內容繁多,各種Web服務器、應用服務器以及JDBC數據庫驅動等參差不齊,所以如何正確而及時的發現應用的中文處理問題則變得相對復雜的多。那么我們如何來發現這些問題呢?

通常,Java處理中文時所產生的問題都是由于用戶的Java應用所采用的缺省編碼格式與目標或者應用所要讀入字符的編碼格式不同而造成的,而引起這些不同的一個主要原因就是用戶的Java應用與其它應用進行了編碼格式不匹配的數據交換(包括直接或間接的數據輸入、輸出)。所以,為了及時發現問題,我們可以由這一點入手,根據以下的原則對應用進行分析:

  1. 注意字符變量情況。由于變量的字符編碼形式較為隱蔽,多次變量間數值的改變和運算可能會引起字符集的改變;在變量與頁面所提交數據的各種操作中,較容易發生不同編碼格式字符進行運算的情況。
  2. 注意任何形式的字符讀入與輸出。之所以要提到任何形式,是因為Java應用大多數都是作為網絡應用開發的,所以與其它語言的應用相比,Java應用需要面對網絡世界各種各樣的字符數據交換形式。例如各種表單的數據提交,URL形式的數據讀入,經過加密運算的字符數據交換,網頁控件選擇結果的輸入,控件內容的的顯示(如List控件)等等。
  3. 小心使用第三方的組件和應用。由于第三方組件和應用的實現是非透明的,所以一般情況下,我們很難判斷這些組件或驅動的缺省編碼格式是什么,也無法對其進行控制。因此,在使用它們所提供的接口函數進行數據交換的時候要特別注意,如果確實出現中文無法正確處理情況,應首先檢查我們自己的代碼并調整相關代碼以適應這些接口,因為這些組件或者應用基本上不會提供調整編碼機制的接口。必要時,我們可能需要采用其它可替換的組件或者應用。
  4. 注意被請求對象所含有的數據輸入與輸出。這是非常隱蔽的一類情況,當我們的應用以對象的方式(例如序列化的對象)進行交互時,如果這個對象內部含有字符數據的處理過程,或者含有某些數據的輸入、輸出,甚至是拋出一段用中文注解的異常,都可能出現中文無法正確顯示等問題。由于這些行為往往被封裝在對象中,所以我們在編寫程序時,很容易忽略這種可能情況。并且這種情況帶有一定的不可預見性,例如我們可能不清楚這個對象會在什么時候拋出什么樣的異常,所以這時我們就需要做一定的測試工作。
  5. 注意數據庫的數據訪問過程。Java通過JDBC與數據庫建立連接。對于JDBC驅動程序來說,由于目前大部分的JDBC驅動程序并不是針對中文系統而設計的(中文數據大都采用ISO-8859-1編碼方式),所以一般情況下在數據讀寫過程中往往都需要字符編碼的轉化。但是我們仍建議用戶在使用這些JDBC驅動時,仔細閱讀它的說明。如果確實無法弄清JDBC字符數據的編碼到底是什么,我們的建議是做一些必要的測試。例如下面是一組在簡體中文Win2000平臺下,采用Weblogic 6.0所提供的JDBC驅動從MS SQL Server2000中正確讀入中文字符的代碼(例子中進行了字符運算):
    ????
    Class.forName(
    "weblogic.jdbc.mssqlserver4.Driver").newInstance();
    ??????conn?
    =?myDriver.connect("jdbc:weblogic:mssqlserver4",?props);
    ??????conn.setCatalog(
    "labmanager");
    ?????Statement?st?
    =?conn.createStatement();
    ????????
    //execute?a?query
    ????String??testStr;
    String?testTempStr?
    =?new?String()?;
    ????????testStr?
    =?new?String(testTempStr.getBytes("ISO-8859-1"));//編碼轉化
    ????DatabaseMetaData?DBMetaData?=conn.getMetaData();
    ????ResultSet?rs?
    =?DBMetaData.getTables(null,?null,null,new?String[]{"TABLE"}?);
    ????
    while?(rs.next()){
    ????????
    for(int?j=1;?j<=rs.getMetaData().getColumnCount();?j++){
    testStr?
    =?testStr?+String(rs.getObject(j).toString().getBytes("ISO-8859-1"));
    ????????????}

    ????????}
  6. 然而,需要注意的是,不同的JDBC驅動對相同的數據庫的支持并不同,而同一類JDBC驅動對不同的??數據庫的支持也不相同,也就是說我們的字符轉化代碼在JDBC驅動改變甚至是版本變化情況下都有可能無法正確工作。例如對于上面的例子,在同樣的環境下改用i-net 的Una 2000 Driver Version 2.03 for MS SQL Server時,是無法正確處理中文的。原因很簡單,這個JDBC驅動本身支持的就是GBK的編碼機制,所以根本就不需要做任何的編碼轉化。?
  7. ?必要的測試。由于Java中文問題的產生隨著Web服務器,瀏覽器,運行環境和開發工具的不同都可能發生變化,所以為了更好的避免問題的發生,我們必須作一些針對性的測試。另外,在我們確實無法通過分析來確定Java的中文處理問題是否可能發生的情況下或者無法知道問題的發生是由于哪個環節(是Web服務器,瀏覽器還是JDBC數據驅動等等)引起的時候,測試工作則變得非常重要。并且我們可能需要較為全面的測試,例如對Web服務器,瀏覽器和JDBC數據驅動等都要做測試,這樣有利于我們找出那些隱藏在多個環節協調過程中所產生的問題。


Java 的基本類也可能存在問題。由于國際化的工作并不是在國內完成的,所以在這些基本類發布之前,沒有經過嚴格的測試,所以對中文字符的支持并不像 Java Soft 所聲稱的那樣完美。前不久,我的一位技術上的朋友發信給我說,他終于找到了 Java Servlet 中文問題的根源。兩周以來,他一直為 Java Servlet 的中文問題所困擾,因為每面對一個含有中文字符的字符串都必須進行強制轉換才能夠得到正確的結果(這好象是大家公認的唯一的解決辦法)。后來,他確實不想如此繼續安分下去了,因為這樣的事情確實不應該是高級程序員所要做的工作,他就找出 Servlet 解碼的源代碼進行分析,因為他懷疑問題就出在解碼這部分。經過四個小時的奮斗,他終于找到了問題的根源所在。原來他的懷疑是正確的, Servlet 的解碼部分完全沒有考慮雙字節,直接把 %XX 當作一個字符。(原來 Java Soft 也會犯這幺低級的錯誤!)

如果你對這個問題有興趣或者遇到了同樣的煩惱的話,你可以按照他的步驟 對Servlet.jar 進行修改

找到源代碼 HttpUtils 中的 static private String parseName ,在返回前將 sb(StringBuffer) 復制成 byte bs[] ,然后 return new String(bs,”GB2312”)。作上述修改后就需要自己解碼了:

HashTable form=HttpUtils .parseQueryString(request.getQueryString())或者

form=HttpUtils.parsePostData(……)

千萬別忘了編譯后放到 Servlet.jar 里面。


java中文問題詳解
http://www.cn-java.com/target/news.php?news_id=210
關于Java中文問題的幾條分析原則http://www-900.ibm.com/developerWorks/cn/java/l-javachinese/index.shtml
全方位解決xml中文問題http://www.csdn.net/develop/read_article.asp?id=18901
servlet 中的漢字編碼問題http://www-900.ibm.com/developerWorks/cn/java/jsp_dbcsz/index.shtml
Java程序的國際化和本地化介紹http://www-900.ibm.com/developerWorks/cn/java/joy-i18n/index.shtml
Java 編程技術中漢字問題的分析及解決http://www-900.ibm.com/developerWorks/cn/java/java_chinese/index.shtml
Unicode專題http://www-900.ibm.com/developerWorks/cn/theme/unicode.shtml
這里也有篇專家寫的文章:
http://www.javaworld.com/javaworld/jw-04-2004/jw-0419-multibytes.html



橘子 2006-03-29 11:17 發表評論
]]>
網頁表格深層探密http://www.tkk7.com/forget/archive/2006/03/11/34826.html橘子橘子Sat, 11 Mar 2006 06:55:00 GMThttp://www.tkk7.com/forget/archive/2006/03/11/34826.htmlhttp://www.tkk7.com/forget/comments/34826.htmlhttp://www.tkk7.com/forget/archive/2006/03/11/34826.html#Feedback0http://www.tkk7.com/forget/comments/commentRss/34826.htmlhttp://www.tkk7.com/forget/services/trackbacks/34826.html
  1、用表格做流動分割線

  我們知道,在網頁中可以用
標識來做分割線,也可以把表格設置為1個象素高或寬充當分割線。現在,我們將表格與Javascript結合,可以做出更生動的分割線——流動的分割線。加入以下代碼,你就可以看到一條分割線,顏色在不斷的流動。



  在上面的代碼中,我們可以通過修改 標識中的height和width設置分割線的高度和長度。

  2、帶滾動條的表格



  看看圖一的效果,可千萬不要以為是IFRAME,這可是地地道道的表格!其實,這是表格和CSS結合的效果。當網頁上有大段文字要顯示,而又沒有足夠的空間時,這就派上用場了。雖然用文本框也可以實現類似效果,但卻遠沒有用表格靈活。代碼很簡單,只要在單元格
標識后加上如下代碼就可以了:



  3、帶標題的表格



  看看圖二的效果。通常,我們要給表格加標題,不是用單元格的方法就是用圖片,很麻煩。其實,我們可以只用很一些很簡單的HTML標識,就可以輕松實現給表格加標題了。這個標識似乎已被人遺忘,很少看到使用,不過它實現的效果還是很不錯的。下面就來看看如何實現:

 



橘子 2006-03-11 14:55 發表評論
]]>
表格特效代碼全集中http://www.tkk7.com/forget/archive/2006/03/11/34825.html橘子橘子Sat, 11 Mar 2006 06:52:00 GMThttp://www.tkk7.com/forget/archive/2006/03/11/34825.htmlhttp://www.tkk7.com/forget/comments/34825.htmlhttp://www.tkk7.com/forget/archive/2006/03/11/34825.html#Feedback2http://www.tkk7.com/forget/comments/commentRss/34825.htmlhttp://www.tkk7.com/forget/services/trackbacks/34825.html1. 兩種細線表格做法



  源碼如下:

<table width="100%" border="1" bordercolor="#000000">
  <tr bordercolor="#FFFFFF">
    <td>表格邊線為1,線色為黑,行線色為白。</td>
  </tr>
</table>
<p>
<table width="100%" border="0" cellspacing="1" bgcolor="#000000">
  <tr>
    <td bgcolor="#FFFFFF">表格邊線為0,間距為1,背景色為黑,行背景色為白。</td>
  </tr>
</table>

  2. 立體表格





  源碼如下:

<table  border=1 cellspacing=0  width=100% bordercolorlight=#333333 bordercolordark=#efefef>
  <tr bgcolor=#cccccc>
    <td>it365cn</td>
    <td>it365cn</td>
    <td>it365cn</td>
    <td>it365cn</td>
  </tr>
  <tr bgcolor=#cccccc>
    <td>cnbruce</td>
    <td>cnbruce</td>
    <td>cnbruce</td>
    <td>cnbruce</td>
  </tr>
</table>
<center>表格邊線為1,間隔為0,左上為#333333,右下為#efefef,行背景色為#cccccc

  3. 另類圓角表格制作





  源碼如下:

原圖:
<table cellpadding=0 cellspacing=0 border=0 width=282 align=center>
  <tr height=1>
    <td rowspan=4 width=1></td>
    <td rowspan=3 width=1></td>
    <td rowspan=2 width=1></td>
    <td width=2></td>
    <td bgcolor=#43B5C9></td>
    <td width=2></td>
    <td rowspan=2 width=1></td>
    <td rowspan=3 width=1></td>
    <td rowspan=4 width=1></td>
  </tr>
  <tr height=1>
    <td bgcolor=#43B5C9></td>
    <td bgcolor=#43B5C9></td>
    <td bgcolor=#43B5C9></td>
  </tr>
  <tr height=1>
    <td bgcolor=#43B5C9></td>
    <td colspan=3 bgcolor=#43B5C9></td>
    <td bgcolor=#43B5C9></td>
  </tr>
  <tr height=2>
    <td bgcolor=#43B5C9></td>
    <td colspan=5 bgcolor=#43B5C9></td>
    <td bgcolor=#43B5C9></td>
  </tr>
</table>
<p>放大
<table cellpadding=0 cellspacing=0 border=1 width=282 align=center>
  <tr height=10>
    <td rowspan=4 width=10></td>
    <td rowspan=3 width=10></td>
    <td rowspan=2 width=10></td>
    <td width=20></td>
    <td bgcolor=#43B5C9></td>
    <td width=20></td>
    <td rowspan=2 width=10></td>
    <td rowspan=3 width=10></td>
    <td rowspan=4 width=10></td>
  </tr>
  <tr height=10>
    <td bgcolor=#43B5C9></td>
    <td bgcolor=#43B5C9></td>
    <td bgcolor=#43B5C9></td>
  </tr>
  <tr height=10>
    <td bgcolor=#43B5C9></td>
    <td colspan=3 bgcolor=#43B5C9></td>
    <td bgcolor=#43B5C9></td>
  </tr>
  <tr height=20>
    <td bgcolor=#43B5C9></td>
    <td colspan=5 bgcolor=#43B5C9></td>
    <td bgcolor=#43B5C9></td>
  </tr>
</table>

  4. 虛線邊框表格





  源碼如下:

<style type="text/css">
.tb{BORDER-BOTTOM: #000000 1px dotted;BORDER-top: #000000 1px dotted;BORDER-LEFT:
#000000 1px dotted;BORDER-RIGHT: #000000 1px dotted;}
</style>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td class="tb"><center>www.blueidea.com</td>
  </tr>
</table>
<p>
虛線直線1
<hr size=1 style="border:1px dotted #001403;">
虛線直線2
<p size=1 style="border:1px dotted #001403;">

  5. 分類型表格




  源碼如下:

<fieldset>
<legend>item</legend>
content
</fieldset>


  6. 變色的單元格1,通過a:hover做




  源碼如下:

<style>
a:link,a:visited,a:hover
{width:100%;text-decoration:none;font-family:verdana;font-size:10px;color:white}
a:hover{background:#0099ff;color:black}
td{background:#3366cc;color:white;padding:0px}
</style>


<TABLE width=100% cellspacing=1 bgcolor=black >
  <TR>
    <TD><a href="#">Blueidea
    <TD><a href="#">.com
  <TR>
    <TD><a href="#">CNBruce
    <TD><a href="#">.com
</TABLE>

  7. 變色的單元格2,已經做成了CSS,注意還有透明效果

  源碼如下:

<style type="text/css">
.aa
{ background-color:#0000ff; color:#ff0000;filter: alpha(opacity=50)}
.bb 
{ background-color:#3366cc; color:#ffffff}
</style>



<table  width="100%">
  <tr>
    <td  onmouseover="this.className='aa'" onmouseout="this.className='bb'"
class="bb"><center><b>cnbruce</td>
   </tr>
</table>


  8. 變色的單元格3,通過mouse事件做.有點微軟的味道




  源碼如下:
<table width="100%" border="1" cellpadding="3" cellspacing="0"
bordercolor="#efefef" bgcolor="#efefef">
  <tr>
    <td onMouseOut="this.bgColor='#efefef';this.borderColor='#efefef'";
onMouseOver="this.bgColor='#cccccc'; this.borderColor='#000033'"><div align="left">
Blueidea</div></td>
  </tr>
  <tr>
    <td
onMouseOut="this.bgColor='#efefef';this.borderColor='#efefef'"; onMouseOver="this.bgColor='#cccccc'; this.borderColor='#000033'">
cnbruce</td>
  </tr>
</table>

  9. 透明表格

<table bgcolor=#ececec style="filter:alpha(opacity=50)" width=200 height=100 border=0>
  <tr><td><center>cnbruce</td></tr>
</table>

  10. 表格邊框顯示外陰影



  源碼如下:

<table  align=center  width=200  height=100  bgcolor=#f3f3f3
style="filter:progid:DXImageTransform.Microsoft.Shadow
(Color=#333333,Direction=120,strength=5)">
  <tr>
    <td><center>www.cnbruce.com</td>
  </tr>
</table>

  11. VML代碼實現的圓角表格
  (1).



  源碼如下:

<html xmlns:v>
<style>
v\:*{behavior:url(#default#VML)}
</style>
<body>
   <v:RoundRect style="position:relative;width:150;height:240px">
    <v:shadow on="T" type="single" color="#b3b3b3" offset="3px,3px"/>
    <v:TextBox style="font-size:10.2pt;">VML</v:TextBox>
    </v:RoundRect>
</body>
</html>

  (2).



  源碼如下:

<html  xmlns:v>
<style>
v\:*{behavior:url(#default#VML)}
</style>
<body>
      <v:RoundRect  style="position:relative;width:150;height:240px">
<v:path  textpathok="true"  />
      <v:textpath  on="true"  string="cnbrucecnbrucecnbrucecnbrucecnbruc
ecnbrucecnbrucecnbrucecnbrucecnbrucecnbrucecnbrucecnbrucecnbrucecnbruce"  />
        <v:shadow  on="T"  type="single"  color="#b3b3b3"  offset="3px,3px"/>
        <v:TextBox  style="font-size:10.2pt;">VML</v:TextBox>
        </v:RoundRect> 
</body>
</html>

  (3).




  源碼如下:

<html xmlns:v>
<style>
v\:*{behavior:url(#default#VML)}
</style>
<body>
   <v:RoundRect style="position:relative;width:150;height:240px" arcsize=0.5>
    <v:shadow on="T" type="single" color="#b3b3b3" offset="3px,3px"/>
    <v:TextBox style="font-size:10.2pt;">VML</v:TextBox>
    </v:RoundRect>
</body>
</html>



橘子 2006-03-11 14:52 發表評論
]]>
ASP+Access創建網站RSS格式http://www.tkk7.com/forget/archive/2005/11/15/19881.html橘子橘子Tue, 15 Nov 2005 06:35:00 GMThttp://www.tkk7.com/forget/archive/2005/11/15/19881.htmlhttp://www.tkk7.com/forget/comments/19881.htmlhttp://www.tkk7.com/forget/archive/2005/11/15/19881.html#Feedback1http://www.tkk7.com/forget/comments/commentRss/19881.htmlhttp://www.tkk7.com/forget/services/trackbacks/19881.html其中,變量 sXmlClear 用于聲明產生的文檔是一段 XML 格式的文檔,該聲明是可選的,以保持與舊版本 XML 的向后兼容性。

sRssHead 定義 Rss 的基本元素。RSS feed 通常由 4 個主要元素構成:<channel>,&l t;image>,<item> 和 <textinput>。其中,<channel> 元素是必需的,<item> 元素至少要出現一次。<textinput> 和 <image> 元素是可選的,是否使用要視具體情況而定。
<channel> 元素包含 Channel(RSS feed 的來源)的一個簡單描述。<title> 是頻道的名稱/標題;<link> 是與頻道內容對應的包含了完整內容的那個網頁的 URL;<description> 是與 <channel> 的內容有關的簡單描述;<language> 代表語言。還有一些別的屬性,不是太常用。
<item> 元素用于對數據庫中的記錄進行描述。<item> 一般有若干項,對應了一個 Rss feed 的數據集合。

<!-Filename:RssFeed_news.asp:-->
<% Option explicit %>
<!-- #include file="./conn.inc" -->

<%
  Dim sSQL, rs, sCrLf, sXmlClear, sRssHead, sRssEnd
  sCrLf = chr(13) & chr(10)  ’回車+換行

  sXmlClear = "<?xml version=’1.0’ encoding=’gb2312’?>" & sCrLf

  sRssHead = "<rss version=’2.0’>" & sCrLf
  sRssHead = sRssHead & "<channel>" & sCrLf
  sRssHead = sRssHead & "<title> Why100000 </title>" & sCrLf
  sRssHead = sRssHead & "<description> Why100000 </description>" & sCrLf
  sRssHead = sRssHead & "<link>http://news.why100000.com/<;/link>" & sCrLf
  sRssHead = sRssHead & "<language>zh-cn</language>" & sCrLf
  sRssHead = sRssHead & "<docs>Why100000.COM News Center</docs>" & sCrLf
  sRssHead = sRssHead & "<generator>Rss Generator By WWW.Why100000.COM</generator>" & sCrLf

  sRssEnd = "</channel></rss>"

  Response.CharSet="gb2312"  ’數據集
  Response.ContentType="text/xml"  ’數據流格式定義

  ’輸出:
  Response.write sXmlClear
  Response.write sRssHead

  sSQL="select top 15 * from news order by sortid desc"
  Set rs = Server.CreateObject("ADODB.Recordset")
  rs.Open sSQL, s_Conn, 1, 1
  if not (rs.eof and rs.bof) then
    do while not rs.eof
      response.write "<item>" & sCrLf
      response.write "<title> " & rs("f_topic") & " </title>" & sCrLf
      response.write "<link> " & "http://www.why100000.com/_news/show_a_new.asp?autoid="; & 

rs("f_i_autoid") & " </link>" & sCrLf
      response.write "<author> " & rs("f_author") & " </author>" & sCrLf
      response.write "<pubDate> " & rs("f_datetime") & " </pubDate>" & sCrLf
      response.write "</item>" & sCrLf & sCrLf
      rs.movenext
    loop
  end if
  rs.close
  set rs=nothing

  Response.write sRssEnd
%>

IE 中的調用格式是:<a ;>技術新聞

RSS</a>。如果用一些客戶端軟件訂閱該 RSS,訂閱的 Url 就是http://www.why100000.com/_news/RssFeed_news.asp。

橘子 2005-11-15 14:35 發表評論
]]>
將RSS加進個人主頁http://www.tkk7.com/forget/archive/2005/11/15/19880.html橘子橘子Tue, 15 Nov 2005 06:34:00 GMThttp://www.tkk7.com/forget/archive/2005/11/15/19880.htmlhttp://www.tkk7.com/forget/comments/19880.htmlhttp://www.tkk7.com/forget/archive/2005/11/15/19880.html#Feedback0http://www.tkk7.com/forget/comments/commentRss/19880.htmlhttp://www.tkk7.com/forget/services/trackbacks/19880.html一、知己知彼,百戰不殆

要想為網站創建RSS,首先我們必須對RSS進行深入的了解。RSS是基于XML(可擴展標志語言)的一種形式,并且所有的RSS文件都要遵守萬維網聯盟(W3C)站點發布的XML 1.0規范。一般來說,RSS文檔的最頂層是一個< rss >元素作為根元素,< rss >元素有一個強制屬性version,用于指定當前RSS文檔的版本,目前常用的RSS版本是2.0。< rss >元素下的子元素是唯一的一個< channel >元素,它包含了關于該網站或欄目的信息和內容,在下必備的語句有三個:

< title >:網站或欄目的名稱,一般與網站或欄目的頁面title一致;
< link >:網站或欄目的URL;
< description >:對網站或欄目的簡要描述。

還可以使用一些如< language >(語言)、< copyright >(版權聲明)等可選語句來豐富< channel >內容,具體的新聞提要就要依靠來體現了。一般一條新聞就是一個< item >,< item >下至少要存在一個< title >或< description >,其他語句可以根據需要進行選擇。

提示:更多RSS的語句介紹可參考http://www.donews.net/softbunny/articles/11030.aspx。學習RSS語句時可以使用IE打開一個XML鏈接進行對照參考,如天極網網絡通信版塊聚合內容http://rss.chinabyte.com/218424581927469056.xml。

二、RSS,手工造

了解了RSS具體的語句結構和用法后,我們就可以按照以下格式在最常用的記事本或網頁編輯軟件中手工編輯網站的RSS了。

其中中文文字和省略號部分就是要添加新聞的部分,按照提示依次添加完畢即可保存為.xml文件并在網站的適當位置加入“XML”字樣的圖標,然后鏈接到該    .xml文件,這樣你的網站就擁有了RSS輸出了。

    三、工具編寫,輕松自如

如果網站更新的新聞量大,依靠手工編寫RSS文件就有可能出錯。我們可以請RSS生成器(下載地址:http://sq.onlinedown.net/down/rsscreator.rar)來輔助我們工作。開啟軟件,執行“文件→新建→RSS”新建一個RSS文件(圖1)。首先在上方“必選元素”區輸入“Description”、“Link”和“Title”三個必選語句的內容,要添加新聞條目就點擊“Items”后的按鈕進入新聞添加窗口(圖2),單擊“Add”按鈕增加一個新聞條目,然后在左邊的語句中根據提示添加新聞標題(Title)、簡要(Description)和鏈接(Link)等,完畢后返回到軟件主界面,按下工具欄中的保存按鈕將文檔保存為  .xml文件即可。

圖1

圖2

提示:RSS生成器需要.NET Framework的支持,在安裝之前要在http://go.microsoft.com/fwlink/?LinkId=9832處下載安裝.NET Framework組件包。

四、自動生成,一勞永逸

對于靜態網站我們可以手工或使用工具來編寫RSS輸出,若是動態網站則要通過程序來轉換新聞數據庫內容輸出RSS了。有興趣的朋友可以在http://www.mh.fy.cn/rss2.rar處下載轉換模板,此模板適合ASP+ACCESS類的動態網站更新系統,需要修改的是數據庫鏈接部分db=*.mdb。另外在數據庫字段讀取以及給新聞標題(Title)和鏈接(Link)等字段賦值也要根據數據庫的具體情況做一些修改(圖3),使用該模板調試成功后,網站的RSS輸出地址就是http://你的域名/rss2.asp。



橘子 2005-11-15 14:34 發表評論
]]>
RSS 2.0規范http://www.tkk7.com/forget/archive/2005/11/15/19879.html橘子橘子Tue, 15 Nov 2005 06:32:00 GMThttp://www.tkk7.com/forget/archive/2005/11/15/19879.htmlhttp://www.tkk7.com/forget/comments/19879.htmlhttp://www.tkk7.com/forget/archive/2005/11/15/19879.html#Feedback0http://www.tkk7.com/forget/comments/commentRss/19879.htmlhttp://www.tkk7.com/forget/services/trackbacks/19879.htmlrss2.0而言,是這三個詞的縮寫,對rss1.0而言則是RDF Site Summary的縮寫,1.0與2.0走的是兩個體系)
  RSS 基于XML,所有的 RSS 必須遵循w3c網站上公布的XML 1.0 規范。
  在一個RSS文檔中,根元素是<rss>,帶有一個必備屬性version,用以指明該文檔遵循的rss規范,如果rss文檔遵循本規范,則version值必須是2.0。
  <rss>元素只有一個子元素,包含關于頻道的一些信息。頻道(channel)是整個blog,項(item)指一篇文章或日志(也有稱這為post)。

RSS2.0元素channel的子元素列表


元素(Element) 描述(Description) 值域 重要性 舉例(Example)
title 頻道名稱 必備 GoUpstate.com News Headlines
link 頻道的URL 必備 http://www.goupstate.com/
Description 頻道的描述 必備 The latest news from GoUpstate.com, a Spartanburg Herald-Journal Web site.
language 頻道文章所用語言, 可用netscape或w3c推薦的列表 可選 en-us
copyright 頻道內容的版權說明 可選 Copyright 2002, Spartanburg Herald-Journal
managingEditor 責任編輯的email 可選 geo@herald.com (George Matesky)
webMaster 負責頻道技術事務的網站管理員email 可選 betty@herald.com (Betty Guernsey)
pubDate 頻道內容發布日期,格式遵循RFC822格式(年份可為2們或4位) 可選 Sat, 07 Sep 2002 00:00:01 GMT
lastBuildDate 頻道內容最后的修改日期 可選 Sat, 07 Sep 2002 09:42:31 GMT
category 指定頻道所屬的一個或幾個類別 可選 <category>Newspapers</category>
generator 生成該頻道的程序名 可選 MightyInHouse Content System v2.3
docs 指向該RSS文件所用格式說明的URL 可選 http://blogs.law.harvard.edu/tech/rss
cloud Allows processes to register with a cloud to be notified of updates to the channel, implementing a lightweight publish-subscribe protocol for RSS feeds. More info here. 可選 <cloud domain="rpc.sys.com" port="80" path="/RPC2" registerProcedure="pingMe" protocol="soap"/>
ttl 有效期,用以指明該頻道可被緩存的最長時間 分鐘為單位 可選 <ttl>60</ttl>
image 指定一個 GIF或JPEG或PNG圖片,用以與頻道一起顯示 可選
rating 這個頻道的分級(主要指成人、限制、兒童等) 可選
textInput 指定一個text輸入框供用戶輸入,具體信息及功能未定。 可選
skipHours 提示新聞聚合器,那些小時時段它可以跳過。 可選
skipDays 提示新聞聚合器,那些天它可以跳過。 可選

RSS2.0元素channel的子元素image的子元素列表


元素(Element) 描述(Description) 值域 重要性 舉例(Example)
url 圖片的url 必備
title 圖片的標題,用于http的alt屬性 必備
link 網站的url(實際中常以頻道的url代替) 必備
width 圖片的寬度(象素為單位) 最大144,默認88 可選
height 圖片的高度(象素為單位) 最大400,默認31 可選
description 用于link的title屬性 可選

RSS2.0元素channel的子元素cloud的子元素列表


元素(Element) 描述(Description) 值域 重要性 舉例(Example)
domain Cloud程序所在機器的域名或IP地址 radio.xmlstoragesystem.com
port 訪問clound程序所通過的端口 80
path 程序所在路徑(不一定是真實路徑) /RPC2
registerProcedure 注冊的可提供的服務或過程 xmlStorageSystem.rssPleaseNotify
protocol 協議 xml-rpc, soap , http-post 之一 xml-rpc

RSS2.0元素channel的子元素textInput的子元素列表


元素(Element) 描述(Description) 值域 重要性 舉例(Example)
title Submit按鈕的標簽 必備
description 解釋text輸入區 必備
name Text area對象的名字 必備
link 處理提交的請求的cgi程序 必備

關于item的內容,請看基于XML-RPC的BloggerAPI學習.
說明:
  rss2.0要求<link>和<url>的值的非常部分開頭,須是在IANA注冊過的,如http://或https://或ftp://等。
  一個rss文件中,可以包括沒有這兒定義的元素,只要它是在某個命名空間被定義過。
  一個常見問題是的區別,兩者在有些情況下是相同的,但前者可指幾某個長文中的某個位置(即所謂的頁內錨點吧)。



橘子 2005-11-15 14:32 發表評論
]]>
jar參數運行應用時classpath的設置http://www.tkk7.com/forget/archive/2005/08/26/11240.html橘子橘子Fri, 26 Aug 2005 09:52:00 GMThttp://www.tkk7.com/forget/archive/2005/08/26/11240.htmlhttp://www.tkk7.com/forget/comments/11240.htmlhttp://www.tkk7.com/forget/archive/2005/08/26/11240.html#Feedback0http://www.tkk7.com/forget/comments/commentRss/11240.htmlhttp://www.tkk7.com/forget/services/trackbacks/11240.html

當用java -jar yourJarExe.jar來運行一個經過打包的應用程序的時候,你會發現如何設置-classpath參數應用程序都找不到相應的第三方類,報 ClassNotFound錯誤。實際上這是由于當使用-jar參數運行的時候,java VM會屏蔽所有的外部classpath,而只以本身yourJarExe.jar的內部class作為類的尋找范圍。

**解決方案**

一 BootStrap class擴展方案

Java 命令行提供了如何擴展bootStrap 級別class的簡單方法.
-Xbootclasspath:?????完全取代基本核心的Java class 搜索路徑.
?????????????????????????????????? 不常用,否則要重新寫所有Java 核心class
-Xbootclasspath/a: 后綴在核心class搜索路徑后面.常用!!
-Xbootclasspath/p: 前綴在核心class搜索路徑前面.不常用,避免
?????????????????????????????????? 引起不必要的沖突.

語法如下:
?(分隔符與classpath參數類似,unix使用:號,windows使用;號,這里以unix為例)
?java -Xbootclasspath/a:/usrhome/thirdlib.jar: -jar yourJarExe.jar

二 extend class 擴展方案

Java exten class 存放在{Java_home}\jre\lib\ext目錄下.當調用Java時,對擴展class路徑的搜索是自動的.總會搜索的.這樣,解決的方案就很簡單了,將所有要使用的第三方的jar包都復制到ext 目錄下.

三 User class擴展方案

當使用-jar執行可執行Jar包時,JVM將Jar包所在目錄設置為codebase目錄,所有的class搜索都在這個目錄下開始.所以如果使用了其他第三方的jar包,一個比較可以接受的可配置方案,就是利用jar包的Manifest擴展機制.
步驟如下:

?1.將需要的第三方的jar包,復制在同可執行jar所在的目錄或某個子目錄下.?比如:jar 包在 /usrhome/yourJarExe.jar 那么你可以把所有jar包復制到/usrhome目錄下或/usrhome/lib 等類似的子目錄下.

?2.修改Manifest 文件

?在Manifest.mf文件里加入如下行

?Class-Path:classes12.jar lib/thirdlib.jar

?Class-Path 是可執行jar包運行依賴的關鍵詞.詳細內容可以參考?http://java.sun.com/docs/books/tutorial/ext/index.html


以上三種方法推薦第一種,擴展性好,操作起來也最方便.
另外編寫自己的ClassLoader,來動態載入class,是更加復雜和高級技術.限于篇幅,不贅述.有興趣了解可以去google一下custom classloader

Java的安全機制隨不同的JDK版本有不同的變化,會影響很多核心CLASS,比如Thread,所以很多大型商業軟件,要求JDK的版本很嚴格.部分原因也在此.這也要求在發布自己編寫的應用時候,不管大小,都要說明開發和測試的JDK版本.


本文所述方法測試基于j2sdk 1.4.2_04-b05

----------------------------------------------------------------------------------------------

附:背景知識

自JDK 1.2以后,JVM采用了委托(delegate)模式來載入class.采用這種設計的原因可以參考http://java.sun.com/docs/books/tutorial/ext/basics/load.html

歸納來講:是基于JVM sandbox(沙盒)安裝模型上提供應用層的可定制的安全機制.


Java虛擬機(JVM)尋找Class的順序

1. Bootstrap classes

屬于Java 平臺核心的class,比如java.lang.String等.及rt.jar等重要的核心級別的class.這是由JVM Bootstrap class loader來載入的.一般是放置在{java_home}\jre\lib目錄下

2. Extension classes

基于Java擴展機制,用來擴展Java核心功能模塊.比如Java串口通訊模塊comm.jar.一般放置在{Java_home}\jre\lib\ext目錄下

3. User classes

開發人員或其他第三方開發的Java程序包.通過命令行的-classpath或-cp,或者通過設置CLASSPATH環境變量來引用.JVM通 過放置在{java_home}\lib\tools.jar來尋找和調用用戶級的class.常用的javac也是通過調用tools.jar來尋找用 戶指定的路徑來編譯Java源程序.這樣就引出了User class路徑搜索的順序或優先級別的問題.

?3.1 缺省值:調用Java或javawa的當前路徑(.),是開發的class所存在的當前目錄
?3.2 CLASSPATH環境變量設置的路徑.如果設置了CLASSPATH,則CLASSPATH的值會覆蓋缺省值
?3.3 執行Java的命令行-classpath或-cp的值,如果制定了這兩個命令行參數之一,它的值會覆蓋環境變量CLASSPATH的值
?3.4 -jar 選項:如果通過java -jar 來運行一個可執行的jar包,這當前jar包會覆蓋上面所有的值.換句話說,-jar 后面所跟的jar包的優先級別最高,如果指定了-jar選項,所有環境變量和命令行制定的搜索路徑都將被忽略.JVM APPClassloader將只會以jar包為搜索范圍.
有關可執行jar有許多相關的安全方面的描述,可以參考http://java.sun.com/docs/books/tutorial/jar/ 來全面了解.

這也是為什么應用程序打包成可執行的jar包后,不管你怎么設置classpath都不能引用到第三方jar包的東西了.



橘子 2005-08-26 17:52 發表評論
]]>
主站蜘蛛池模板: 亚洲日韩AV无码一区二区三区人| 国产成人免费高清激情明星| 亚洲日韩国产一区二区三区在线| 国产亚洲精品精华液| 在线看片人成视频免费无遮挡| 中文字幕视频免费| a毛片久久免费观看| 曰韩无码AV片免费播放不卡| 亚洲色大成WWW亚洲女子| 亚洲国产成人91精品| 亚洲AV无码AV男人的天堂| 亚洲夜夜欢A∨一区二区三区| 亚洲AV中文无码乱人伦在线视色| 国产精品四虎在线观看免费 | 国产亚洲精品a在线无码| 亚洲日本在线观看视频| 免费夜色污私人影院在线观看| 永久在线毛片免费观看| 最近免费中文字幕视频高清在线看 | 两性色午夜视频免费网| 一级毛片免费不卡| 黄色三级三级免费看| 日日摸日日碰夜夜爽亚洲| 亚洲另类无码专区丝袜| 99亚偷拍自图区亚洲| 亚洲人成综合网站7777香蕉| 国产亚洲sss在线播放| 亚洲一区免费视频| 最新亚洲精品国偷自产在线| 亚洲videos| 亚洲三级在线观看| 亚洲精品永久在线观看| 亚洲AV成人无码网天堂| 国产成人亚洲综合a∨| 日韩电影免费在线观看网址| 一区二区三区免费高清视频| 成人妇女免费播放久久久| 最近免费mv在线观看动漫| 性无码免费一区二区三区在线 | 亚洲高清资源在线观看| 亚洲日本在线免费观看|