加入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> |
<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>
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>。
我們知道,英文字符一般是以一個字節來表示的,最常用的編碼方法是 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編碼形式。
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應用與其它應用進行了編碼格式不匹配的數據交換(包括直接或間接的數據輸入、輸出)。所以,為了及時發現問題,我們可以由這一點入手,根據以下的原則對應用進行分析:
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
標識后加上如下代碼就可以了:![]() 3、帶標題的表格 ![]() 看看圖二的效果。通常,我們要給表格加標題,不是用單元格的方法就是用圖片,很麻煩。其實,我們可以只用很一些很簡單的HTML標識,就可以輕松實現給表格加標題了。這個標識似乎已被人遺忘,很少看到使用,不過它實現的效果還是很不錯的。下面就來看看如何實現: ![]() |
|
源碼如下:
<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>
要想為網站創建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 >內容,具體的新聞提要就要依靠
提示:更多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。
元素(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 | 提示新聞聚合器,那些天它可以跳過。 | 可選 |
元素(Element) | 描述(Description) | 值域 | 重要性 | 舉例(Example) |
url | 圖片的url | 必備 | ||
title | 圖片的標題,用于http的alt屬性 | 必備 | ||
link | 網站的url(實際中常以頻道的url代替) | 必備 | ||
width | 圖片的寬度(象素為單位) | 最大144,默認88 | 可選 | |
height | 圖片的高度(象素為單位) | 最大400,默認31 | 可選 | |
description | 用于link的title屬性 | 可選 |
元素(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 |
元素(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文件中,可以包括沒有這兒定義的元素,只要它是在某個命名空間被定義過。
一個常見問題是
當用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包的東西了.