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