<head> </head> <form enctype="multipart/form-data" action="<?php $_SERVER['PHP_SELF'] ?>" method="POST"> </body> |
參數(shù) | 說(shuō)明 | 說(shuō)明 |
---|---|---|
class="multi" maxlength="2" | Limit: 2 files. Allowed extensions: any. |
限制數(shù)量2 |
class="multi" accept="gif|jpg" | Limit: no limit. Allowed extensions: gif and jpg. |
格式只能 gif jpg |
class="multi" accept="gif|jpg" maxlength="3" | Limit: 3 files Allowed extensions: gif, jpg. |
限制數(shù)量3,格式只能 gif jpg |
主頁(yè):http://www.fyneworks.com/jquery/multiple-file-upload/
下載:http://www.fyneworks.com/jquery/multiple-file-upload/#tab-Download
示例:http://www.fyneworks.com/jquery/multiple-file-upload/#tab-Examples
public class Num2Rmb
{
private String[] hanArr = {"零" , "壹" , "貳" , "叁" , "肆" ,
"伍" , "陸" , "柒" , "捌" , "玖"};
private String[] unitArr = {"拾","百","千","萬(wàn)"};
/**
* 把一個(gè)四位的數(shù)字字符串變成漢字字符串
* @param numStr 需要被轉(zhuǎn)換的四位的數(shù)字字符串
* @return 四位的數(shù)字字符串被轉(zhuǎn)換成的漢字字符串。
*/
private String toHanStr(String numStr)
{
String result = "";
int numLen = numStr.length();
//依次遍歷數(shù)字字符串的每一位數(shù)字
for (int i = 0 ; i < numLen ; i++ )
{
//把char型數(shù)字轉(zhuǎn)換成的int型數(shù)字,因?yàn)樗鼈兊腁SCII碼值恰好相差48
//因此把char型數(shù)字減去48得到int型數(shù)字,例如'4'被轉(zhuǎn)換成4。
int num = numStr.charAt(i) - 48;
//如果不是最后一位數(shù)字,而且數(shù)字不是零,則需要添加單位(千、百、十)
if ( i != numLen - 1 && num != 0)
{
result += hanArr[num] + unitArr[numLen - 2 - i];
}
//否則不要添加單位
else
{
//上一個(gè)數(shù)是否為“零”,不為“零”時(shí)就添加
if(result.length()>0 && hanArr[num].equals("零") && result.charAt(result.length()-1)=='零')
continue;
result += hanArr[num];
}
}
//只有個(gè)位數(shù),直接返回
if(result.length()==1)
return result;
int index=result.length()-1;
while(result.charAt(index)=='零'){
index--;
}
if(index!=result.length()-1)
return result.substring(0,index+1);
else {
return result;
}
}
/**
* 把一個(gè)輸入的數(shù)字字符串變成漢字字符串
* @param numStr 需要被轉(zhuǎn)換得到數(shù)字字符串
* @return 數(shù)字字符串被轉(zhuǎn)換成的漢字RMB字符串。
*/
private String toRmbStr(String numStr){
//獲取字符串長(zhǎng)度
int numLen = numStr.length();
//判斷長(zhǎng)度小于4(一萬(wàn)以內(nèi)~0-9999) 調(diào)用toHanStr();
if(numLen<=4){
return toHanStr(numStr);
}
//4<長(zhǎng)度<=8 (一億以內(nèi) 1000-99999999)
else if(numLen>4&&numLen<=8){
String[] subArr={numStr.substring(0, numLen-4),numStr.substring(numLen-4, numLen)};
return toHanStr(subArr[0])+"萬(wàn)"+toHanStr(subArr[1]);
}
//8<長(zhǎng)度<=10 (百億以內(nèi) 一億-9999999999)
else if(numLen>8&&numLen<=10){
String[] subArr={numStr.substring(0,numLen-8),numStr.substring(numLen-8,numLen-4),numStr.substring(numLen-4,numLen)};
return toHanStr(subArr[0])+"億"+toHanStr(subArr[1])+"萬(wàn)"+toHanStr(subArr[2]);
}
else return "輸入有誤!";
}
public static void main(String[] args)
{
Num2Rmb nr = new Num2Rmb();
System.out.println("只支持整數(shù)(0~99億)");
//測(cè)試把一個(gè)四位的數(shù)字字符串變成漢字字符串
System.out.println(nr.toRmbStr("1"));
System.out.println(nr.toRmbStr("10"));
System.out.println(nr.toRmbStr("15"));
System.out.println(nr.toRmbStr("110"));
System.out.println(nr.toRmbStr("123"));
System.out.println(nr.toRmbStr("105"));
System.out.println(nr.toRmbStr("1000"));
System.out.println(nr.toRmbStr("1101"));
System.out.println(nr.toRmbStr("1110"));
System.out.println(nr.toRmbStr("1005"));
System.out.println(nr.toRmbStr("101105"));
System.out.println(nr.toRmbStr("1011109"));
System.out.println(nr.toRmbStr("9999999999"));
}
}
Oracle的默認(rèn)服務(wù)一共有5個(gè):
1.OracleDBConsoleorcl oem控制臺(tái)的服務(wù)進(jìn)程
2.OracleJobSchedulerORCL 定時(shí)器的服務(wù)進(jìn)程
3.OracleOraDb10g_home1iSQL*Plus isql*plus的服務(wù)進(jìn)程
4.OracleOraDb10g_home1TNSListener 監(jiān)聽(tīng)器的服務(wù)進(jìn)程
5.OracleServiceORCL 數(shù)據(jù)庫(kù)服務(wù)進(jìn)程
要查看系統(tǒng)中已啟動(dòng)的服務(wù),我們可以在“開(kāi)始→控制面板→管理工具”中雙擊“服務(wù)”,或者直接
在“運(yùn)行”中輸入 “Services.msc”打開(kāi)服務(wù)設(shè)置對(duì)話框,就可以看到每一個(gè)服務(wù)都有以下幾個(gè)屬
性:名稱(chēng)、描述、狀態(tài)、啟動(dòng)類(lèi)型、登錄身份、依存關(guān)系。
OracleDBConsoleorcl --可以不啟動(dòng),用于管理Oracle的企業(yè)管理器的服務(wù).
OracleJobSchedulerORCL --通常不啟動(dòng),用于定期操作任務(wù)的服務(wù)
OracleOraDb10g_home1iSQL*Plus --可以不啟動(dòng),這是isqlplus服務(wù),用于用網(wǎng)頁(yè)執(zhí)行sql執(zhí)行,11g已
經(jīng)取消了這個(gè)功能
OracleOraDb10g_home1TNSListener --必須啟動(dòng),這是臨聽(tīng),用于遠(yuǎn)程客戶端連接你的Oracle
OracleServiceORCL --必須啟動(dòng),這是Oracle數(shù)據(jù)庫(kù)的服務(wù)
可以用命令啟動(dòng):
#啟動(dòng)listener:
lsnrctl start
#啟動(dòng)數(shù)據(jù)庫(kù)
net start OracleServiceORCL
只有這兩項(xiàng)是必須啟動(dòng)的:
OracleOraDb10g_home1TNSListener
OracleServiceORCL
為什么OracleJobSchedulerORCL會(huì)顯示禁用?
數(shù)據(jù)庫(kù)工作日程調(diào)度,一般沒(méi)有安排工作日程就不需要啟動(dòng),為什么默認(rèn)是禁用?因?yàn)閱?dòng)后會(huì)占用很大的系統(tǒng)資源。
(1)OracleServiceSID
數(shù)據(jù)庫(kù)服務(wù),這個(gè)服務(wù)會(huì)自動(dòng)地啟動(dòng)和停止數(shù)據(jù)庫(kù)。如果安裝了一個(gè)數(shù)據(jù)庫(kù),它的缺省啟動(dòng)類(lèi)型為自動(dòng)。服務(wù)進(jìn)程為Oracle.EXE,參數(shù)文件initSID.ora,日志文件SIDALRT.log,控制臺(tái)SVRMGRL.EXE、SQLPLUS.EXE。
(2)OracleHOME_NAMETNSListener
監(jiān)聽(tīng)器服務(wù),服務(wù)只有在數(shù)據(jù)庫(kù)需要遠(yuǎn)程訪問(wèn)時(shí)才需要(無(wú)論是通過(guò)另外一臺(tái)主機(jī)還是在本地通過(guò) SQL.Net 網(wǎng)絡(luò)協(xié)議都屬于遠(yuǎn)程訪問(wèn)),不用這個(gè)服務(wù)就可以訪問(wèn)本地?cái)?shù)據(jù)庫(kù),它的缺省啟動(dòng)類(lèi)型為自動(dòng)。服務(wù)進(jìn)程為T(mén)NSLSNR.EXE,參數(shù)文件 Listener.ora,日志文件listener.log,控制臺(tái)LSNRCTL.EXE,默認(rèn)端口1521、1526。
(3)OracleHOME_NAMEAgent
OEM代理服務(wù),接收和響應(yīng)來(lái)自O(shè)EM控制臺(tái)的任務(wù)和事件請(qǐng)求,只有使用OEM管理數(shù)據(jù)庫(kù)時(shí)才需要,它的缺省啟動(dòng)類(lèi)型為自動(dòng)。服務(wù)進(jìn)程為DBSNMP.EXE,參數(shù)文件snmp_rw.ora,日志文件nmi.log,控制臺(tái)LSNRCTL.EXE,默認(rèn)端口1748。
(4)OracleHOME_NAMEClientCache
名字緩存服務(wù),服務(wù)緩存用于連接遠(yuǎn)程數(shù)據(jù)庫(kù)的Oracle Names 數(shù)據(jù)。它的缺省啟動(dòng)類(lèi)型是手動(dòng)。然而,除非有一臺(tái)Oracle Names 服務(wù)器,否則沒(méi)有必要運(yùn)行這個(gè)服務(wù)。服務(wù)進(jìn)程為ONRSD.EXE,參數(shù)文件NAMES.ORA,日志文件ONRSD.LOG,控制臺(tái) NAMESCTL.EXE。
(5)OracleHOME_NAMECMAdmin
連接管理服務(wù),是構(gòu)建Connection Manager服務(wù)器所用,只有服務(wù)器作為Connection Manager才需要,它的缺省啟動(dòng)類(lèi)型是手動(dòng)。服務(wù)進(jìn)程為CMADMIN.EXE,參數(shù)文件CMAN.ORA,日志文件CMADM_PID.TRC,控 制臺(tái)CMCTL.EXE,默認(rèn)端口1830。
(6)OracleHOME_NAMECMan
連接網(wǎng)關(guān)服務(wù),是構(gòu)建Connection Manager服務(wù)器所用,只有服務(wù)器作為Connection Manager才需要,它的缺省啟動(dòng)類(lèi)型是手動(dòng)。服務(wù)進(jìn)程為CMGW.EXE,參數(shù)文件CMAN.ORA,日志文件CMAN_PID.TRC,控制臺(tái) CMCTL.EXE,默認(rèn)端口1630。
(7)OracleHOME_NAMEDataGatherer
性能包數(shù)據(jù)采集服務(wù),除非使用Oracle Capacity Planner 和 Oracle Performance Manager,否則不需要啟動(dòng),它的缺省啟動(dòng)類(lèi)型是手動(dòng)。服務(wù)進(jìn)程為VPPDC.EXE,日志文件alert_dg.log,控制臺(tái) vppcntl.exe。
(8)OracleHOME_NAMEHTTPServer
Oracle提供的WEB服務(wù)器,一般情況下我們只用它來(lái)訪問(wèn)Oracle Apache 目錄下的Web 頁(yè)面,比如說(shuō)JSP 或者modplsql 頁(yè)面。除非你使用它作為你的HTTP服務(wù),否則不需要啟動(dòng)(若啟動(dòng)它會(huì)接管IIS的服務(wù)),它的缺省啟動(dòng)類(lèi)型是手動(dòng)。服務(wù)進(jìn)程為APACHE.EXE,參 數(shù)文件httpd.conf,默認(rèn)端口80。
(9)OracleHOME_NAMEPagingServer
通過(guò)一個(gè)使用調(diào)制解調(diào)器的數(shù)字傳呼機(jī)或者電子郵件發(fā)出警告(沒(méi)試過(guò)),它的缺省啟動(dòng)類(lèi)型是手動(dòng)。服務(wù)進(jìn)程PAGNTSRV.EXE,日志文件paging.log。
(10)OracleHOME_NAMENames
Oracle Names服務(wù),只有服務(wù)器作為Names Server才需要,它的缺省啟動(dòng)類(lèi)型是手動(dòng)。服務(wù)進(jìn)程N(yùn)AMES.EXE,參數(shù)文件NAMES.ORA,日志文件NAMES.LOG,控制臺(tái)NAMESCTL.EXE,默認(rèn)端口1575。
(11)OracleSNMPPeerMasterAgent
SNMP服務(wù)代理,用于支持SNMP的網(wǎng)管軟件對(duì)服務(wù)器的管理,除非你使用網(wǎng)管工具監(jiān)控?cái)?shù)據(jù)庫(kù)的情況,否則不需要啟動(dòng),它的缺省啟動(dòng)類(lèi)型是手動(dòng)。服務(wù)進(jìn)程為AGNTSVC.EXE,參數(shù)文件MASTER.CFG,默認(rèn)端口161。
(12)OracleSNMPPeerEncapsulater
SNMP協(xié)議封裝服務(wù),用于SNMP協(xié)議轉(zhuǎn)換,除非你使用一個(gè)不兼容的SNMP代理服務(wù),否則不需要啟動(dòng),它的缺省啟動(dòng)類(lèi)型是手動(dòng)。服務(wù)進(jìn)程為ENCSVC.EXE,參數(shù)文件ENCAPS.CFG,默認(rèn)端口1161。
(13)OracleHOME_NAMEManagementServer
OEM管理服務(wù),使用OEM時(shí)需要,它的缺省啟動(dòng)類(lèi)型是手動(dòng)。服務(wù)進(jìn)程為OMSNTSVR.EXE,日志文件oms.nohup。
OracleServiceMYDB
OracleOraHome92TNSListener
別的一般不用開(kāi),有需要再開(kāi)
附(批處理)
out.println(request.getSession());
HttpSession hs=request.getSession();
out.println(hs);
兩者執(zhí)行的結(jié)果相同;
第一個(gè)是獲得Tomcat內(nèi)置的默認(rèn)Session (就是會(huì)話建立時(shí)自動(dòng)生成的Session唯一標(biāo)記本次會(huì)話)
第二次 是把 唯一的標(biāo)識(shí)Session 通過(guò)request.getSession()獲取內(nèi)存地址 給hs 然后hs
會(huì)獲取Session 然后對(duì)其操作 其實(shí)本質(zhì)上是對(duì)本次會(huì)話的唯一Session進(jìn)行操作.
\\\\\\\\\\\\\\
String MyName="Hello Accp";
session.setAttribute("name",MyName);
String name=seeeion.getAttribute("name");//錯(cuò)誤的
String name=(String)seeeion.getAttribute("name");//正確的
由于WEB服務(wù)器為用戶創(chuàng)建的Session會(huì)占用系統(tǒng)內(nèi)存,所以通常服務(wù)器都需要及
時(shí)的刪除Session信息以釋放資源,方法有:
①關(guān)閉瀏覽器,關(guān)閉Session。
②調(diào)用HttpSession的invalidate()方法,刪除HttpSession對(duì)象和數(shù)據(jù)。
③兩次訪問(wèn)時(shí)間間隔大于Session定義的非活動(dòng)時(shí)間。
在Servlet中的HttpRequestServlet對(duì)象創(chuàng)建HttpSession對(duì)象有兩種方法:
①HttpSession session=request.getSession(boolean value);
②HttpSession session=request.getSession();
第一中方法中,布爾值為true時(shí),如果存在于當(dāng)前請(qǐng)求相關(guān)聯(lián)的會(huì)話,就返回該
會(huì)話,否則就返回一個(gè)新會(huì)話。反之,布爾值為false時(shí),如果存在當(dāng)前請(qǐng)求相
關(guān)聯(lián)的會(huì)話,就返回該會(huì)話,否則就返回null。
第二種方法與第一種方法的第一種情況相同。通常我們都喜歡使用第二種方法。
先講一下javaBean的作用,以及我們?yōu)槭裁匆褂胘avabean?
在換句話說(shuō)javabean他其實(shí)本身就是一個(gè)對(duì)象,之所以學(xué)習(xí)javabean的好處,就是讓我們像操作對(duì)象一樣進(jìn)行操作數(shù)據(jù)。讓代碼變得更靈活、更簡(jiǎn)單。
舉個(gè)小小的例子:
JavaBean規(guī)范:
下面我呢針對(duì)上面這些javabean的規(guī)范做一個(gè)解釋?zhuān)约盀槭裁匆x這個(gè)規(guī)范?
回答:這個(gè)無(wú)慘的構(gòu)造方法的作用主要是針對(duì)反射。為什么會(huì)針對(duì)反射呢?大家知道使用反射實(shí)例化一個(gè)類(lèi),是實(shí)例化該類(lèi)的一個(gè)無(wú)慘的構(gòu)造方法。
回答:private屬性增強(qiáng)javabean安全性。他們的區(qū)別就是如果他的屬性設(shè)置為public的話,我們可以任意的進(jìn)行訪問(wèn)或修改(沒(méi)有安全性)。而private屬性為什么要通過(guò)get/set去訪問(wèn)這就是下面馬上講到的。
回答:get/set方法也是增加代碼的安全性。比如我們可以讓外部只可以訪問(wèn)屬性不能修改屬性的話,那么我在這里只需要生成get方法就行了,無(wú)須生成set方法,而public就無(wú)法做到這一點(diǎn)。還有一個(gè)就是比如我們?cè)谠O(shè)置他的age的時(shí)候我們還可以進(jìn)行驗(yàn)證工作,比如如果你的age小于18,那么就直接跳出,不允許設(shè)置該屬性。這個(gè)功能也是很強(qiáng)大的。
舉個(gè)小小列子:
}
回答:為了實(shí)現(xiàn)遠(yuǎn)程調(diào)用。比如我們要把該JavaBean從一個(gè)操作系統(tǒng)中傳輸?shù)搅硪慌_(tái)操作系統(tǒng),我們就只有采取實(shí)現(xiàn)該接口。
JavaBean的動(dòng)作:
開(kāi)發(fā)模式:
在這里說(shuō)一下servlet和jsp的一些缺陷.
在這章講到了兩種開(kāi)發(fā)模式:
現(xiàn)在大多數(shù)情況下都不用模式一,所以我就解釋了。
所謂的模式二就是現(xiàn)在比較流行的一個(gè)模式,也叫MVC模式。
那么什么是MVC模式?
MVC的一個(gè)最大的好處是實(shí)現(xiàn)了良好的松散耦合。