加入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("數(shù)據(jù)庫(kù)連接文件");
if (empty($title)||empty($text)||empty($bar_name)){
?echo "標(biāo)題或內(nèi)容不能空
?die("<br /><a href=\"index.php\">重新來(lái)過(guò)</a>");
}
/*這里是數(shù)據(jù)查詢語(yǔ)言取出要用的數(shù)據(jù)*/
if(in_array("0", $_FILES['userfile']['error'])){//上傳文件開始
?$uploaddir= 'attfile/';//設(shè)置上傳的文件夾地址
?$FILES_EXT=array('.gif','.jpg','.mp3','.3gp');//設(shè)置允許上傳文件的類型
?$MAX_SIZE = 20000000;//設(shè)置文件上傳限制20000000byte=2M
?for ($i=0;$i<$count;$i++){
??$FILES_NAME=$_FILES['userfile']['name'][$i];//客戶端文件名
??//取出文件后綴名,strrpos()從標(biāo)記開始前字節(jié)個(gè)數(shù)(不算標(biāo)記),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函數(shù)生成臨時(shí)文件名,并按照 $_FILES['userfile']['name']上傳到$uploaddir下
???if (move_uploaded_file($_FILES['userfile']['tmp_name'][$i], $uploadfile)) {
????//將上傳后的路徑寫入到數(shù)據(jù)庫(kù)中
????$post_id=(int)$post_id;
????$uploadfile="attfile/".$_FILES['userfile']['name'][$i];
????$sql=插入語(yǔ)句
????$stmt=$db->prepare($sql);
????$stmt->execute();
????print "<br />文件\n{$FILES_NAME}\n上傳成功!";
???} else {
????print "上傳錯(cuò)誤!? 以下是上傳的信息:\n";
????print_r($_FILES);
???}
??}
??else{
???echo "{$FILES_NAME}\n不是允許上傳的文件類型!";
???exit;
??}
?}
}
?>
</body>
</html>
Echo?? "上傳文件大小:";
echo $_FILES['userfile']['size'];
//已上傳文件的大小,單位為字節(jié)。
echo "<br>";
Echo?? "文件上傳后被臨時(shí)儲(chǔ)存為:";
echo $_FILES['userfile']['tmp_name'];
//文件被上傳后在服務(wù)端儲(chǔ)存的臨時(shí)文件名。
echo "<br>";
$Erroe=$_FILES['userfile']['error'];
switch($Erroe){
?case 0:
?Echo?? "上傳成功"; break;
?case 1:
?Echo?? "上傳的文件超過(guò)了 php.ini 中 upload_max_filesize 選項(xiàng)限制的值."; break;
?case 2:
?Echo?? "上傳文件的大小超過(guò)了 HTML 表單中 MAX_FILE_SIZE 選項(xiàng)指定的值。";?? break;
?case 3:
?Echo?? "文件只有部分被上傳";break;
?case 4:
?Echo?? "沒有文件被上傳";break;
}
?>
(2)<?php
$uploaddir= '../attfile/';//設(shè)置上傳的文件夾地址
$FILES_EXT=array('.gif','.jpg','.bmp');//設(shè)置允許上傳文件的類型
$MAX_SIZE = 20000000;//設(shè)置文件上傳限制20000000byte=2M
for ($i=0;$i<count($userfile);$i++){
?$FILES_NAME=$_FILES['userfile']['name'][$i];//客戶端文件名
}
//echo $FILES_NAME;
//取出文件后綴名,strrpos()從標(biāo)記開始前字節(jié)個(gè)數(shù)(不算標(biāo)記),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'];//上傳后文件的路徑及文件名
?//將上傳后的路徑寫入到數(shù)據(jù)庫(kù)中
?//用move函數(shù)生成臨時(shí)文件名,并按照 $_FILES['userfile']['name']上傳到$uploaddir下
?if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
??print "\n上傳成功!";
?} else {
??print "上傳錯(cuò)誤!? 以下是上傳的信息:\n";
??print_r($_FILES);
?}
}
else{
?echo "{$file_ext}不是允許上傳的文件類型!";
?exit;
}
?>
小技巧>>1、當(dāng)在提交時(shí),希望確認(rèn)是否要提交可以在<form>里如這樣加入:<form onsubmit="return confirm('你真的要提交嗎?')">
2、在php里希望返回時(shí)所有在文本框里的東西都保留可以這樣:<a href=javascript:history.back(1)>重新來(lái)過(guò)</a>。
我們知道,英文字符一般是以一個(gè)字節(jié)來(lái)表示的,最常用的編碼方法是 ASCII 。但一個(gè)字節(jié)最多只能區(qū)分256個(gè)字符,而漢字成千上萬(wàn),所以現(xiàn)在都以雙字節(jié)來(lái)表示漢字,為了能夠與英文字符分開,每個(gè)字節(jié)的最高位一定為1,這樣雙字節(jié)最多可以表示64K格字符。我們經(jīng)常碰到的編碼方式有 GB2312、BIG5、UNICODE 等。關(guān)于具體編碼方式的詳細(xì)資料,有興趣的讀者可以查閱相關(guān)資料。我膚淺談一下和我們關(guān)系密切的 GB2312 和 UNICODE。GB2312 碼,中華人民共和國(guó)國(guó)家標(biāo)準(zhǔn)漢字信息交換用編碼,是一個(gè)由中華人民共和國(guó)國(guó)家標(biāo)準(zhǔn)總局發(fā)布的關(guān)于簡(jiǎn)化漢字的編碼,通行于中國(guó)大陸地區(qū)及新加坡,簡(jiǎn)稱國(guó)標(biāo)碼。兩個(gè)字節(jié)中,第一個(gè)字節(jié)(高字節(jié))的值為區(qū)號(hào)值加32(20H),第二個(gè)字節(jié)(低字節(jié))的值為位號(hào)值加32(20H),用這兩個(gè)值來(lái)表示一個(gè)漢字的編碼。UNICODE 碼是微軟提出的解決多國(guó)字符問(wèn)題的多字節(jié)等長(zhǎng)編碼,它對(duì)英文字符采取前面加“0”字節(jié)的策略實(shí)現(xiàn)等長(zhǎng)兼容。如 “A” 的 ASCII 碼為0x41,UNICODE 就為0x00,0x41。利用特殊的工具各種編碼之間可以互相轉(zhuǎn)換。
事實(shí)上,Java的中文問(wèn)題都是由于Java應(yīng)用所采用的缺省編碼格式與目標(biāo)或者應(yīng)用所要讀入字符的編碼格式不同而造成的(具體參見文獻(xiàn)1)。對(duì)于如何解決Java的中文問(wèn)題,通常有四種方法:
1) 選擇JDK的中文本地化版本。盡管Java2 JDK的中文本地化版本(http://java.sun.com/products/jdk/1.2/chinesejdk.html)并不是一個(gè)官方的版本,Sun公司也沒有承諾會(huì)對(duì)該本地化版本進(jìn)行升級(jí),但其仍不失為一個(gè)Java中文問(wèn)題的解決方案。
2) 選擇合適的編譯參數(shù)。對(duì)于Java的國(guó)際版本來(lái)講,我們也可以在編譯Java應(yīng)用的時(shí)候通過(guò)指定確定的編碼機(jī)制來(lái)實(shí)現(xiàn)其編譯結(jié)果對(duì)中文的支持。例如,對(duì)于需要支持繁體中文和簡(jiǎn)體中文應(yīng)用可以通過(guò)javac -encoding big5 sourcefile.java 和javac -encoding gb2312 sourcefile.java來(lái)編譯源程序。
3) 通過(guò)編程的方式實(shí)現(xiàn)字符編碼的轉(zhuǎn)換代碼。通過(guò)編程的方式來(lái)解決Java的中文問(wèn)題,已經(jīng)成為了一種較為普遍的做法。下面就是一種最常見的字符編碼轉(zhuǎn)換函數(shù),其將字符的編碼格式轉(zhuǎn)換為中文Windows系統(tǒng)的GBK編碼形式。
4) 定義字符輸出集。對(duì)于JSP應(yīng)用,我們可以通過(guò)<%@ page contentType="text/html; charset=GBK" %>或<%@ page contentType="text/html; charset=GB2312" %>來(lái)定義JSP頁(yè)面的字符輸出集。當(dāng)然,我們也可以通過(guò)HTML的標(biāo)記<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb2312">來(lái)定義字符的輸出集。
總的說(shuō)來(lái),所有解決Java中文處理的方法都不是很復(fù)雜。相反的是,由于Java技術(shù)特別是J2EE技術(shù)涉及的內(nèi)容繁多,各種Web服務(wù)器、應(yīng)用服務(wù)器以及JDBC數(shù)據(jù)庫(kù)驅(qū)動(dòng)等參差不齊,所以如何正確而及時(shí)的發(fā)現(xiàn)應(yīng)用的中文處理問(wèn)題則變得相對(duì)復(fù)雜的多。那么我們?nèi)绾蝸?lái)發(fā)現(xiàn)這些問(wèn)題呢?
通常,Java處理中文時(shí)所產(chǎn)生的問(wèn)題都是由于用戶的Java應(yīng)用所采用的缺省編碼格式與目標(biāo)或者應(yīng)用所要讀入字符的編碼格式不同而造成的,而引起這些不同的一個(gè)主要原因就是用戶的Java應(yīng)用與其它應(yīng)用進(jìn)行了編碼格式不匹配的數(shù)據(jù)交換(包括直接或間接的數(shù)據(jù)輸入、輸出)。所以,為了及時(shí)發(fā)現(xiàn)問(wèn)題,我們可以由這一點(diǎn)入手,根據(jù)以下的原則對(duì)應(yīng)用進(jìn)行分析:
Java 的基本類也可能存在問(wèn)題。由于國(guó)際化的工作并不是在國(guó)內(nèi)完成的,所以在這些基本類發(fā)布之前,沒有經(jīng)過(guò)嚴(yán)格的測(cè)試,所以對(duì)中文字符的支持并不像 Java Soft 所聲稱的那樣完美。前不久,我的一位技術(shù)上的朋友發(fā)信給我說(shuō),他終于找到了 Java Servlet 中文問(wèn)題的根源。兩周以來(lái),他一直為 Java Servlet 的中文問(wèn)題所困擾,因?yàn)槊棵鎸?duì)一個(gè)含有中文字符的字符串都必須進(jìn)行強(qiáng)制轉(zhuǎn)換才能夠得到正確的結(jié)果(這好象是大家公認(rèn)的唯一的解決辦法)。后來(lái),他確實(shí)不想如此繼續(xù)安分下去了,因?yàn)檫@樣的事情確實(shí)不應(yīng)該是高級(jí)程序員所要做的工作,他就找出 Servlet 解碼的源代碼進(jìn)行分析,因?yàn)樗麘岩蓡?wèn)題就出在解碼這部分。經(jīng)過(guò)四個(gè)小時(shí)的奮斗,他終于找到了問(wèn)題的根源所在。原來(lái)他的懷疑是正確的, Servlet 的解碼部分完全沒有考慮雙字節(jié),直接把 %XX 當(dāng)作一個(gè)字符。(原來(lái) Java Soft 也會(huì)犯這幺低級(jí)的錯(cuò)誤!)
如果你對(duì)這個(gè)問(wèn)題有興趣或者遇到了同樣的煩惱的話,你可以按照他的步驟 對(duì)Servlet.jar 進(jìn)行修改:
找到源代碼 HttpUtils 中的 static private String parseName ,在返回前將 sb(StringBuffer) 復(fù)制成 byte bs[] ,然后 return new String(bs,”GB2312”)。作上述修改后就需要自己解碼了:
HashTable form=HttpUtils .parseQueryString(request.getQueryString())或者
form=HttpUtils.parsePostData(……)
千萬(wàn)別忘了編譯后放到 Servlet.jar 里面。
java中文問(wèn)題詳解
http://www.cn-java.com/target/news.php?news_id=210
關(guān)于Java中文問(wèn)題的幾條分析原則http://www-900.ibm.com/developerWorks/cn/java/l-javachinese/index.shtml
全方位解決xml中文問(wèn)題http://www.csdn.net/develop/read_article.asp?id=18901
servlet 中的漢字編碼問(wèn)題http://www-900.ibm.com/developerWorks/cn/java/jsp_dbcsz/index.shtml
Java程序的國(guó)際化和本地化介紹http://www-900.ibm.com/developerWorks/cn/java/joy-i18n/index.shtml
Java 編程技術(shù)中漢字問(wèn)題的分析及解決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
標(biāo)識(shí)后加上如下代碼就可以了:![]() 3、帶標(biāo)題的表格 ![]() 看看圖二的效果。通常,我們要給表格加標(biāo)題,不是用單元格的方法就是用圖片,很麻煩。其實(shí),我們可以只用很一些很簡(jiǎn)單的HTML標(biāo)識(shí),就可以輕松實(shí)現(xiàn)給表格加標(biāo)題了。這個(gè)標(biāo)識(shí)似乎已被人遺忘,很少看到使用,不過(guò)它實(shí)現(xiàn)的效果還是很不錯(cuò)的。下面就來(lái)看看如何實(shí)現(xiàn): ![]() |
|
源碼如下:
<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,通過(guò)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,已經(jīng)做成了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,通過(guò)mouse事件做.有點(diǎn)微軟的味道
源碼如下:
<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代碼實(shí)現(xiàn)的圓角表格
(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>
要想為網(wǎng)站創(chuàng)建RSS,首先我們必須對(duì)RSS進(jìn)行深入的了解。RSS是基于XML(可擴(kuò)展標(biāo)志語(yǔ)言)的一種形式,并且所有的RSS文件都要遵守萬(wàn)維網(wǎng)聯(lián)盟(W3C)站點(diǎn)發(fā)布的XML 1.0規(guī)范。一般來(lái)說(shuō),RSS文檔的最頂層是一個(gè)< rss >元素作為根元素,< rss >元素有一個(gè)強(qiáng)制屬性version,用于指定當(dāng)前RSS文檔的版本,目前常用的RSS版本是2.0。< rss >元素下的子元素是唯一的一個(gè)< channel >元素,它包含了關(guān)于該網(wǎng)站或欄目的信息和內(nèi)容,在
< title >:網(wǎng)站或欄目的名稱,一般與網(wǎng)站或欄目的頁(yè)面title一致;
< link >:網(wǎng)站或欄目的URL;
< description >:對(duì)網(wǎng)站或欄目的簡(jiǎn)要描述。
還可以使用一些如< language >(語(yǔ)言)、< copyright >(版權(quán)聲明)等可選語(yǔ)句來(lái)豐富< channel >內(nèi)容,具體的新聞提要就要依靠
提示:更多RSS的語(yǔ)句介紹可參考http://www.donews.net/softbunny/articles/11030.aspx。學(xué)習(xí)RSS語(yǔ)句時(shí)可以使用IE打開一個(gè)XML鏈接進(jìn)行對(duì)照參考,如天極網(wǎng)網(wǎng)絡(luò)通信版塊聚合內(nèi)容http://rss.chinabyte.com/218424581927469056.xml。
二、RSS,手工造
了解了RSS具體的語(yǔ)句結(jié)構(gòu)和用法后,我們就可以按照以下格式在最常用的記事本或網(wǎng)頁(yè)編輯軟件中手工編輯網(wǎng)站的RSS了。
其中中文文字和省略號(hào)部分就是要添加新聞的部分,按照提示依次添加完畢即可保存為.xml文件并在網(wǎng)站的適當(dāng)位置加入“XML”字樣的圖標(biāo),然后鏈接到該 .xml文件,這樣你的網(wǎng)站就擁有了RSS輸出了。
三、工具編寫,輕松自如
如果網(wǎng)站更新的新聞量大,依靠手工編寫RSS文件就有可能出錯(cuò)。我們可以請(qǐng)RSS生成器(下載地址:http://sq.onlinedown.net/down/rsscreator.rar)來(lái)輔助我們工作。開啟軟件,執(zhí)行“文件→新建→RSS”新建一個(gè)RSS文件(圖1)。首先在上方“必選元素”區(qū)輸入“Description”、“Link”和“Title”三個(gè)必選語(yǔ)句的內(nèi)容,要添加新聞條目就點(diǎn)擊“Items”后的按鈕進(jìn)入新聞添加窗口(圖2),單擊“Add”按鈕增加一個(gè)新聞條目,然后在左邊的語(yǔ)句中根據(jù)提示添加新聞標(biāo)題(Title)、簡(jiǎn)要(Description)和鏈接(Link)等,完畢后返回到軟件主界面,按下工具欄中的保存按鈕將文檔保存為 .xml文件即可。
圖1
圖2
提示:RSS生成器需要.NET Framework的支持,在安裝之前要在http://go.microsoft.com/fwlink/?LinkId=9832處下載安裝.NET Framework組件包。
四、自動(dòng)生成,一勞永逸
對(duì)于靜態(tài)網(wǎng)站我們可以手工或使用工具來(lái)編寫RSS輸出,若是動(dòng)態(tài)網(wǎng)站則要通過(guò)程序來(lái)轉(zhuǎn)換新聞數(shù)據(jù)庫(kù)內(nèi)容輸出RSS了。有興趣的朋友可以在http://www.mh.fy.cn/rss2.rar處下載轉(zhuǎn)換模板,此模板適合ASP+ACCESS類的動(dòng)態(tài)網(wǎng)站更新系統(tǒng),需要修改的是數(shù)據(jù)庫(kù)鏈接部分db=*.mdb。另外在數(shù)據(jù)庫(kù)字段讀取以及給新聞標(biāo)題(Title)和鏈接(Link)等字段賦值也要根據(jù)數(shù)據(jù)庫(kù)的具體情況做一些修改(圖3),使用該模板調(diào)試成功后,網(wǎng)站的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 | 頻道文章所用語(yǔ)言, | 可用netscape或w3c推薦的列表 | 可選 | en-us |
copyright | 頻道內(nèi)容的版權(quán)說(shuō)明 | 可選 | Copyright 2002, Spartanburg Herald-Journal | |
managingEditor | 責(zé)任編輯的email | 可選 | geo@herald.com (George Matesky) | |
webMaster | 負(fù)責(zé)頻道技術(shù)事務(wù)的網(wǎng)站管理員email | 可選 | betty@herald.com (Betty Guernsey) | |
pubDate | 頻道內(nèi)容發(fā)布日期,格式遵循RFC822格式(年份可為2們或4位) | 可選 | Sat, 07 Sep 2002 00:00:01 GMT | |
lastBuildDate | 頻道內(nèi)容最后的修改日期 | 可選 | Sat, 07 Sep 2002 09:42:31 GMT | |
category | 指定頻道所屬的一個(gè)或幾個(gè)類別 | 可選 | <category>Newspapers</category> | |
generator | 生成該頻道的程序名 | 可選 | MightyInHouse Content System v2.3 | |
docs | 指向該RSS文件所用格式說(shuō)明的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 | 有效期,用以指明該頻道可被緩存的最長(zhǎng)時(shí)間 | 分鐘為單位 | 可選 | <ttl>60</ttl> |
image | 指定一個(gè) GIF或JPEG或PNG圖片,用以與頻道一起顯示 | 可選 | ||
rating | 這個(gè)頻道的分級(jí)(主要指成人、限制、兒童等) | 可選 | ||
textInput | 指定一個(gè)text輸入框供用戶輸入,具體信息及功能未定。 | 可選 | ||
skipHours | 提示新聞聚合器,那些小時(shí)時(shí)段它可以跳過(guò)。 | 可選 | ||
skipDays | 提示新聞聚合器,那些天它可以跳過(guò)。 | 可選 |
元素(Element) | 描述(Description) | 值域 | 重要性 | 舉例(Example) |
url | 圖片的url | 必備 | ||
title | 圖片的標(biāo)題,用于http的alt屬性 | 必備 | ||
link | 網(wǎng)站的url(實(shí)際中常以頻道的url代替) | 必備 | ||
width | 圖片的寬度(象素為單位) | 最大144,默認(rèn)88 | 可選 | |
height | 圖片的高度(象素為單位) | 最大400,默認(rèn)31 | 可選 | |
description | 用于link的title屬性 | 可選 |
元素(Element) | 描述(Description) | 值域 | 重要性 | 舉例(Example) |
domain | Cloud程序所在機(jī)器的域名或IP地址 | radio.xmlstoragesystem.com | ||
port | 訪問(wèn)clound程序所通過(guò)的端口 | 80 | ||
path | 程序所在路徑(不一定是真實(shí)路徑) | /RPC2 | ||
registerProcedure | 注冊(cè)的可提供的服務(wù)或過(guò)程 | xmlStorageSystem.rssPleaseNotify | ||
protocol | 協(xié)議 | xml-rpc, soap , http-post 之一 | xml-rpc |
元素(Element) | 描述(Description) | 值域 | 重要性 | 舉例(Example) |
title | Submit按鈕的標(biāo)簽 | 必備 | ||
description | 解釋text輸入?yún)^(qū) | 必備 | ||
name | Text area對(duì)象的名字 | 必備 | ||
link | 處理提交的請(qǐng)求的cgi程序 | 必備 |
關(guān)于item的內(nèi)容,請(qǐng)看基于XML-RPC的BloggerAPI學(xué)習(xí).
說(shuō)明:
rss2.0要求<link>和<url>的值的非常部分開頭,須是在IANA注冊(cè)過(guò)的,如http://或https://或ftp://等。
一個(gè)rss文件中,可以包括沒有這兒定義的元素,只要它是在某個(gè)命名空間被定義過(guò)。
一個(gè)常見問(wèn)題是
當(dāng)用java -jar yourJarExe.jar來(lái)運(yùn)行一個(gè)經(jīng)過(guò)打包的應(yīng)用程序的時(shí)候,你會(huì)發(fā)現(xiàn)如何設(shè)置-classpath參數(shù)應(yīng)用程序都找不到相應(yīng)的第三方類,報(bào) ClassNotFound錯(cuò)誤。實(shí)際上這是由于當(dāng)使用-jar參數(shù)運(yùn)行的時(shí)候,java VM會(huì)屏蔽所有的外部classpath,而只以本身yourJarExe.jar的內(nèi)部class作為類的尋找范圍。
**解決方案**
一 BootStrap class擴(kuò)展方案
Java 命令行提供了如何擴(kuò)展bootStrap 級(jí)別class的簡(jiǎn)單方法.
-Xbootclasspath:?????完全取代基本核心的Java class 搜索路徑.
??????????????????????????????????
不常用,否則要重新寫所有Java 核心class
-Xbootclasspath/a: 后綴在核心class搜索路徑后面.常用!!
-Xbootclasspath/p: 前綴在核心class搜索路徑前面.不常用,避免
??????????????????????????????????
引起不必要的沖突.
語(yǔ)法如下:
?(分隔符與classpath參數(shù)類似,unix使用:號(hào),windows使用;號(hào),這里以u(píng)nix為例)
?java -Xbootclasspath/a:/usrhome/thirdlib.jar: -jar yourJarExe.jar
二 extend class 擴(kuò)展方案
Java exten class 存放在{Java_home}\jre\lib\ext目錄下.當(dāng)調(diào)用Java時(shí),對(duì)擴(kuò)展class路徑的搜索是自動(dòng)的.總會(huì)搜索的.這樣,解決的方案就很簡(jiǎn)單了,將所有要使用的第三方的jar包都復(fù)制到ext 目錄下.
三 User class擴(kuò)展方案
當(dāng)使用-jar執(zhí)行可執(zhí)行Jar包時(shí),JVM將Jar包所在目錄設(shè)置為codebase目錄,所有的class搜索都在這個(gè)目錄下開始.所以如果使用了其他第三方的jar包,一個(gè)比較可以接受的可配置方案,就是利用jar包的Manifest擴(kuò)展機(jī)制.
步驟如下:
?1.將需要的第三方的jar包,復(fù)制在同可執(zhí)行jar所在的目錄或某個(gè)子目錄下.?比如:jar 包在 /usrhome/yourJarExe.jar 那么你可以把所有jar包復(fù)制到/usrhome目錄下或/usrhome/lib 等類似的子目錄下.
?2.修改Manifest 文件
?在Manifest.mf文件里加入如下行
?Class-Path:classes12.jar lib/thirdlib.jar
?Class-Path 是可執(zhí)行jar包運(yùn)行依賴的關(guān)鍵詞.詳細(xì)內(nèi)容可以參考?http://java.sun.com/docs/books/tutorial/ext/index.html
以上三種方法推薦第一種,擴(kuò)展性好,操作起來(lái)也最方便.
另外編寫自己的ClassLoader,來(lái)動(dòng)態(tài)載入class,是更加復(fù)雜和高級(jí)技術(shù).限于篇幅,不贅述.有興趣了解可以去google一下custom classloader
Java的安全機(jī)制隨不同的JDK版本有不同的變化,會(huì)影響很多核心CLASS,比如Thread,所以很多大型商業(yè)軟件,要求JDK的版本很嚴(yán)格.部分原因也在此.這也要求在發(fā)布自己編寫的應(yīng)用時(shí)候,不管大小,都要說(shuō)明開發(fā)和測(cè)試的JDK版本.
本文所述方法測(cè)試基于j2sdk 1.4.2_04-b05
----------------------------------------------------------------------------------------------
附:背景知識(shí)
自JDK 1.2以后,JVM采用了委托(delegate)模式來(lái)載入class.采用這種設(shè)計(jì)的原因可以參考http://java.sun.com/docs/books/tutorial/ext/basics/load.html
歸納來(lái)講:是基于JVM sandbox(沙盒)安裝模型上提供應(yīng)用層的可定制的安全機(jī)制.
Java虛擬機(jī)(JVM)尋找Class的順序
1. Bootstrap classes
屬于Java 平臺(tái)核心的class,比如java.lang.String等.及rt.jar等重要的核心級(jí)別的class.這是由JVM Bootstrap class loader來(lái)載入的.一般是放置在{java_home}\jre\lib目錄下
2. Extension classes
基于Java擴(kuò)展機(jī)制,用來(lái)擴(kuò)展Java核心功能模塊.比如Java串口通訊模塊comm.jar.一般放置在{Java_home}\jre\lib\ext目錄下
3. User classes
開發(fā)人員或其他第三方開發(fā)的Java程序包.通過(guò)命令行的-classpath或-cp,或者通過(guò)設(shè)置CLASSPATH環(huán)境變量來(lái)引用.JVM通 過(guò)放置在{java_home}\lib\tools.jar來(lái)尋找和調(diào)用用戶級(jí)的class.常用的javac也是通過(guò)調(diào)用tools.jar來(lái)尋找用 戶指定的路徑來(lái)編譯Java源程序.這樣就引出了User class路徑搜索的順序或優(yōu)先級(jí)別的問(wèn)題.
?3.1 缺省值:調(diào)用Java或javawa的當(dāng)前路徑(.),是開發(fā)的class所存在的當(dāng)前目錄
?3.2 CLASSPATH環(huán)境變量設(shè)置的路徑.如果設(shè)置了CLASSPATH,則CLASSPATH的值會(huì)覆蓋缺省值
?3.3 執(zhí)行Java的命令行-classpath或-cp的值,如果制定了這兩個(gè)命令行參數(shù)之一,它的值會(huì)覆蓋環(huán)境變量CLASSPATH的值
?3.4
-jar 選項(xiàng):如果通過(guò)java -jar 來(lái)運(yùn)行一個(gè)可執(zhí)行的jar包,這當(dāng)前jar包會(huì)覆蓋上面所有的值.換句話說(shuō),-jar
后面所跟的jar包的優(yōu)先級(jí)別最高,如果指定了-jar選項(xiàng),所有環(huán)境變量和命令行制定的搜索路徑都將被忽略.JVM
APPClassloader將只會(huì)以jar包為搜索范圍.
有關(guān)可執(zhí)行jar有許多相關(guān)的安全方面的描述,可以參考http://java.sun.com/docs/books/tutorial/jar/ 來(lái)全面了解.
這也是為什么應(yīng)用程序打包成可執(zhí)行的jar包后,不管你怎么設(shè)置classpath都不能引用到第三方j(luò)ar包的東西了.