2009年10月15日 #
1、SQL Server名稱(chēng)或IP地址拼寫(xiě)有誤;
2、服務(wù)器端網(wǎng)絡(luò)配置有誤;
3、客戶端網(wǎng)絡(luò)配置有誤。
要解決這個(gè)問(wèn)題,我們一般要遵循以下的步驟來(lái)一步步找出導(dǎo)致錯(cuò)誤的原因。
首先,檢查網(wǎng)絡(luò)物理連接:
ping <服務(wù)器IP地址>
或者
ping <服務(wù)器名稱(chēng)>
如果 ping <服務(wù)器IP地址> 失敗,說(shuō)明物理連接有問(wèn)題,這時(shí)候要檢查硬件設(shè)備,如網(wǎng)卡、HUB、路由器等。還有一種可能是由于客戶端和服務(wù)器之間安裝有防火墻軟件造成的,比如 ISA Server。防火墻軟件可能會(huì)屏蔽對(duì) ping、telnet 等的響應(yīng),因此在檢查連接問(wèn)題的時(shí)候,我們要先把防火墻軟件暫時(shí)關(guān)閉,或者打開(kāi)所有被封閉的端口。
如果ping <服務(wù)器IP地址> 成功而 ping <服務(wù)器名稱(chēng)> 失敗,則說(shuō)明名字解析有問(wèn)題,這時(shí)候要檢查 DNS 服務(wù)是否正常。有時(shí)候客戶端和服務(wù)器不在同一個(gè)局域網(wǎng)里面,這時(shí)候很可能無(wú)法直接使用服務(wù)器名稱(chēng)來(lái)標(biāo)識(shí)該服務(wù)器,這時(shí)候我們可以使用HOSTS文件來(lái)進(jìn)行名字解析,具體的方法是:
1、使用記事本打開(kāi)HOSTS文件(一般情況下位于C:\WINNT\system32\drivers\etc).
2、添加一條IP地址與服務(wù)器名稱(chēng)的對(duì)應(yīng)記錄,如:
172.168.10.24 myserver
也可以在 SQL Server 的客戶端網(wǎng)絡(luò)實(shí)用工具里面進(jìn)行配置,后面會(huì)有詳細(xì)說(shuō)明。
其次,使用 telnet 命令檢查SQL Server服務(wù)器工作狀態(tài):
telnet <服務(wù)器IP地址> 1433
如果命令執(zhí)行成功,可以看到屏幕一閃之后光標(biāo)在左上角不停閃動(dòng),這說(shuō)明 SQL Server 服務(wù)器工作正常,并且正在監(jiān)聽(tīng)1433端口的 TCP/IP 連接;如果命令返回"無(wú)法打開(kāi)連接"的錯(cuò)誤信息,則說(shuō)明服務(wù)器端沒(méi)有啟動(dòng) SQL Server 服務(wù),也可能服務(wù)器端沒(méi)啟用 TCP/IP 協(xié)議,或者服務(wù)器端沒(méi)有在 SQL Server 默認(rèn)的端口1433上監(jiān)聽(tīng)。
接著,我們要到服務(wù)器上檢查服務(wù)器端的網(wǎng)絡(luò)配置,檢查是否啟用了命名管道,是否啟用了 TCP/IP 協(xié)議等等。我們可以利用 SQL Server 自帶的服務(wù)器網(wǎng)絡(luò)使用工具來(lái)進(jìn)行檢查。
點(diǎn)擊:程序 -> Microsoft SQL Server -> 服務(wù)器網(wǎng)絡(luò)使用工具,打開(kāi)該工具后看到的畫(huà)面如下圖所示:
從這里我們可以看到服務(wù)器啟用了哪些協(xié)議。一般而言,我們啟用命名管道以及 TCP/IP 協(xié)議。
點(diǎn)中 TCP/IP 協(xié)議,選擇"屬性",我們可以來(lái)檢查 SQK Server 服務(wù)默認(rèn)端口的設(shè)置,如下圖所示:
一般而言,我們使用 SQL Server 默認(rèn)的1433端口。如果選中"隱藏服務(wù)器",則意味著客戶端無(wú)法通過(guò)枚舉服務(wù)器來(lái)看到這臺(tái)服務(wù)器,起到了保護(hù)的作用,但不影響連接。
檢查完了服務(wù)器端的網(wǎng)絡(luò)配置,接下來(lái)我們要到客戶端檢查客戶端的網(wǎng)絡(luò)配置。我們同樣可以利用 SQL Server 自帶的客戶端網(wǎng)絡(luò)使用工具來(lái)進(jìn)行檢查,所不同的是這次是在客戶端來(lái)運(yùn)行這個(gè)工具。
點(diǎn)擊:程序 -> Microsoft SQL Server -> 客戶端網(wǎng)絡(luò)使用工具, 打開(kāi)該工具后看到的畫(huà)面如下圖所示:
從這里我們可以看到客戶端啟用了哪些協(xié)議。一般而言,我們同樣需要啟用命名管道以及 TCP/IP 協(xié)議。
點(diǎn)擊 TCP/IP 協(xié)議,選擇"屬性",可以檢查客戶端默認(rèn)連接端口的設(shè)置,如下圖所示。
該端口必須與服務(wù)器一致。
單擊"別名"選項(xiàng)卡,還可以為服務(wù)器配置別名。服務(wù)器的別名是用來(lái)連接的名稱(chēng),連接參數(shù)中的服務(wù)器是真正的服務(wù)器名稱(chēng),兩者可以相同或不同。如下圖中,我們可以使用myserver來(lái)代替真正的服務(wù)器名稱(chēng)sql2kcn-02,并且使用網(wǎng)絡(luò)庫(kù) Named Pipes。別名的設(shè)置與使用HOSTS文件有相似之處。
通過(guò)以上幾個(gè)方面的檢查,錯(cuò)誤 1 發(fā)生的原因基本上可以被排除。下面我們?cè)僭敿?xì)描述如何來(lái)解決錯(cuò)誤 2。
當(dāng)用戶嘗試在查詢(xún)分析器里面使用sa來(lái)連接SQL Server,或者在企業(yè)管理器里面使用sa來(lái)新建一個(gè)SQL Server注冊(cè)時(shí),經(jīng)常會(huì)遇到如圖 2 所示的錯(cuò)誤信息。該錯(cuò)誤產(chǎn)生的原因是由于SQL Server使用了"僅 Windows"的身份驗(yàn)證方式,因此用戶無(wú)法使用SQL Server的登錄帳戶(如 sa )進(jìn)行連接。解決方法如下所示:
1、 在服務(wù)器端使用企業(yè)管理器,并且選擇"使用 Windows 身份驗(yàn)證"連接上 SQL Server;
2、 展開(kāi)"SQL Server組",鼠標(biāo)右鍵點(diǎn)擊SQL Server服務(wù)器的名稱(chēng),選擇"屬性",再選擇"安全性"選項(xiàng)卡;
3、 在"身份驗(yàn)證"下,選擇"SQL Server和 Windows "。
4、 重新啟動(dòng)SQL Server服務(wù)。
在以上解決方法中,如果在第 1 步中使用"使用 Windows 身份驗(yàn)證"連接 SQL Server 失敗,那么我們將遇到一個(gè)兩難的境地:首先,服務(wù)器只允許了 Windows 的身份驗(yàn)證;其次,即使使用了 Windows 身份驗(yàn)證仍然無(wú)法連接上服務(wù)器。這種情形被形象地稱(chēng)之為"自己把自己鎖在了門(mén)外",因?yàn)闊o(wú)論用何種方式,用戶均無(wú)法使用進(jìn)行連接。實(shí)際上,我們可以通過(guò)修改一個(gè)注冊(cè)表鍵值來(lái)將身份驗(yàn)證方式改為 SQL Server 和 Windows 混合驗(yàn)證,步驟如下所示:
1、點(diǎn)擊"開(kāi)始"-"運(yùn)行",輸入regedit,回車(chē)進(jìn)入注冊(cè)表編輯器;
2、依次展開(kāi)注冊(cè)表項(xiàng),瀏覽到以下注冊(cè)表鍵:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer]
3、在屏幕右方找到名稱(chēng)"LoginMode",雙擊編輯雙字節(jié)值;
4、將原值從1改為2,點(diǎn)擊"確定";
5、關(guān)閉注冊(cè)表編輯器;
6、重新啟動(dòng)SQL Server服務(wù)。
此時(shí),用戶可以成功地使用sa在企業(yè)管理器中新建SQL Server注冊(cè),但是仍然無(wú)法使用Windows身份驗(yàn)證模式來(lái)連接SQL Server。這是因?yàn)樵?SQL Server 中有兩個(gè)缺省的登錄帳戶:BUILTIN\Administrators 以及 <機(jī)器名>\Administrator 被刪除。要恢復(fù)這兩個(gè)帳戶,可以使用以下的方法:
1、打開(kāi)企業(yè)管理器,展開(kāi)服務(wù)器組,然后展開(kāi)服務(wù)器;
2、展開(kāi)"安全性",右擊"登錄",然后單擊"新建登錄";
3、在"名稱(chēng)"框中,輸入 BUILTIN\Administrators;
4、在"服務(wù)器角色"選項(xiàng)卡中,選擇"System Administrators" ;
5、點(diǎn)擊"確定"退出;
6、使用同樣方法添加 <機(jī)器名>\Administrator 登錄。
以下注冊(cè)表鍵
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\LoginMode
的值決定了SQL Server將采取何種身份驗(yàn)證模式。該值為1,表示使用Windows 身份驗(yàn)證模式;該值為2,表示使用混合模式(Windows 身份驗(yàn)證和 SQL Server 身份驗(yàn)證)。
看完如何解決前兩個(gè)錯(cuò)誤的方法之后,讓我們來(lái)看一下如圖 3 所示的第三個(gè)錯(cuò)誤。
如果遇到第三個(gè)錯(cuò)誤,一般而言表示客戶端已經(jīng)找到了這臺(tái)服務(wù)器,并且可以進(jìn)行連接,不過(guò)是由于連接的時(shí)間大于允許的時(shí)間而導(dǎo)致出錯(cuò)。這種情況一般會(huì)發(fā)生在當(dāng)用戶在Internet上運(yùn)行企業(yè)管理器來(lái)注冊(cè)另外一臺(tái)同樣在Internet上的服務(wù)器,并且是慢速連接時(shí),有可能會(huì)導(dǎo)致以上的超時(shí)錯(cuò)誤。有些情況下,由于局域網(wǎng)的網(wǎng)絡(luò)問(wèn)題,也會(huì)導(dǎo)致這樣的錯(cuò)誤。
要解決這樣的錯(cuò)誤,可以修改客戶端的連接超時(shí)設(shè)置。默認(rèn)情況下,通過(guò)企業(yè)管理器注冊(cè)另外一臺(tái)SQL Server的超時(shí)設(shè)置是 4 秒,而查詢(xún)分析器是 15 秒(這也是為什么在企業(yè)管理器里發(fā)生錯(cuò)誤的可能性比較大的原因)。具體步驟為:
1、在企業(yè)管理器中,選擇菜單上的"工具",再選擇"選項(xiàng)";
2、在彈出的"SQL Server企業(yè)管理器屬性"窗口中,點(diǎn)擊"高級(jí)"選項(xiàng)卡;
3、在"連接設(shè)置"下的"登錄超時(shí)(秒)"右邊的框中輸入一個(gè)比較大的數(shù)字,如 20。
查詢(xún)分析器中也可以在同樣位置進(jìn)行設(shè)置。
在windows控制面版-->管理工具-->服務(wù)-->MSSQLSERVER-->屬性-->改為你的新的操作系統(tǒng)密碼!
或
在windows控制面版-->管理工具-->服務(wù)-->MSSQLSERVER-->屬性-->改為本地登陸!
URL為要開(kāi)啟的網(wǎng)頁(yè)名字。
dialogArgments為設(shè)定好傳遞給新視窗網(wǎng)頁(yè)的參數(shù),可以為任意數(shù)據(jù)類(lèi)型。
feature 與open()的類(lèi)似,都是格式方面的設(shè)定。調(diào)用格式為featureName1:featureValue1:(分號(hào))featureName2:featureValue2:
關(guān)于feature具體的參數(shù)我就不詳細(xì)寫(xiě)了,看名字就應(yīng)該知道什么用處了吧。
certer , dialogHeight, dialogLeft,dialogTop,dialogWidth,help(是否顯示help按鈕,下同),status,resizeable
值=1為yes,0為no.
我認(rèn)為最重要的是dialogArgments,可以傳遞值到新的窗口。
第二重要就是 它的返回值 window.returnValue.可以在showModalDialog開(kāi)啟的窗口關(guān)閉后前,回傳一個(gè)任意類(lèi)型的值。
dialogArgments 可以傳入一個(gè)變量,但是 我認(rèn)為最好是傳入一個(gè)window 這樣的話,不光你可以調(diào)用你前面定義的變量names 和a 等等,還可以取到前一個(gè)頁(yè)面上任何元素的值.如下面的代碼所示:








在WebFromB.aspx頁(yè)面 我們可以取到 names 和a 的值還可以取到WebFromA的值.,還可以給它賦值.
整體的代碼如下:
WebFromA.aspx




































WebFormB.aspx 如下:






























在WebFormB.aspx中 window.returnValue是用于 返回給WebFromA.aspx的值.
在WebFromA.aspx中,可以用一個(gè)變量來(lái)接收這個(gè)值 temp= window.showModalDialog("WebFormB.aspx",window);
create sequence seq_a minvalue 1000 maxvalue 99999999 start with 1000 increment by 1 nocache;
查詢(xún)序列
select seq_a.nextval from dual;
為每張表生成對(duì)應(yīng)的序列
--創(chuàng)建存儲(chǔ)過(guò)程
create or replace procedure p_createseq(tablename in varchar2)
is
strsql varchar2(500);
begin
strsql:='create sequence seq_'||tablename||' minvalue 1000 maxvalue 99999999 start with 1000 increment by 1 nocache';
execute immediate strsql;
end p_createseq;
/
--創(chuàng)建序列
exec p_createseq('t_power');
exec p_createseq('t_roler');
exec p_createseq('t_roler_power');
exec p_createseq('t_department');
exec p_createseq('t_quarters');
exec p_createseq('t_quarters_roler');
exec p_createseq('t_emp');
exec p_createseq('t_require_plan');
exec p_createseq('t_require_minutia');
exec p_createseq('t_require_audit');
exec p_createseq('t_engage');
exec p_createseq('t_home');
exec p_createseq('t_education');
exec p_createseq('t_works');
exec p_createseq('t_skill');
exec p_createseq('t_account');
exec p_createseq('t_licence');
exec p_createseq('t_title');
exec p_createseq('t_remove');
exec p_createseq('t_train');
exec p_createseq('t_pact');
exec p_createseq('t_assess');
exec p_createseq('t_attendance');
exec p_createseq('t_reward_punish');
exec p_createseq('t_dimission');
exec p_createseq('t_emp_roler');
exec p_createseq('t_code');
獲取顯示的漢字
document.getElementById("bigclass").options[window.document.getElementById("bigclass").selectedIndex].text
獲取數(shù)據(jù)庫(kù)中的id
window.document.getElementById("bigclass").value
獲取select組分配的索引id
window.document.getElementById("bigclass").selectedIndex
例子:
<select name="bigclass" id="bigclass" onChange="javascript:updatePage2();">
<option value="" selected="selected">ajax實(shí)驗(yàn)</option>
<option value="4">我適宜市哈</option>
</select>
使用
document.getElementById("bigclass").options[window.document.getElementById("bigclass").selectedIndex].text
的結(jié)果是:我適宜市哈
使用
window.document.getElementById("bigclass").value
的結(jié)果是:4
使用
window.document.getElementById("bigclass").selectedIndex
的結(jié)果是:1
三元預(yù)算表達(dá)式: Condition ? doSomething : doOtherThing ;
1. 同所有語(yǔ)言的三元運(yùn)算一樣,Javascript的三元運(yùn)算同樣支持Condition為Boolean類(lèi)型的情況。當(dāng)Condition為T(mén)rue的時(shí)候,執(zhí)行doSomething,為False的時(shí)候執(zhí)行doOtherThing。
2. 支持Condition為字符串。當(dāng)Condition=“”的時(shí)候,等同于False,執(zhí)行doOtherThing;當(dāng)Condition!=“”的時(shí)候,等同于True,執(zhí)行doSomething。
3. 支持Condition為對(duì)象。當(dāng)Condition=undefined或者null的時(shí)候,等同于False,執(zhí)行doOtherThing;當(dāng)Condition!=undefined和null的時(shí)候,等同于True,執(zhí)行doSomething。
目前我的總結(jié)就是發(fā)現(xiàn)了這3中使用方式,是否還有其他的使用方式還不知道。呵呵,不過(guò)就算是這樣也讓我減少了不少看Javascript代碼時(shí)的疑惑!
自從用了IE8 整個(gè)世界都變了形.
呵呵,問(wèn)題沒(méi)那么嚴(yán)重,如果你的網(wǎng)站還來(lái)不及修改以適合IE8訪問(wèn)的時(shí)候,咱們可以通過(guò)非常簡(jiǎn)單的方法,加幾行代碼就可以讓訪問(wèn)的IE8自動(dòng)調(diào)用IE7的渲染模式,這樣可以保證最大的兼容性,方法如下:
只需要在頁(yè)面中加入如下HTTP meta-tag:
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
只要IE8一讀到這個(gè)標(biāo)簽,它就會(huì)自動(dòng)啟動(dòng)IE7兼容模式,保證頁(yè)面完整展示.
還有一種方法是針對(duì)整個(gè)網(wǎng)站的,在IIS中加入如下描述符就可以有相同的效果,當(dāng)然這么做范圍更廣.
<?xml version="1.0" encoding="utf-8"?> <configuration> <system.webServer> <httpProtocol> <customHeaders> <add name="X-UA-Compatible" value="IE=EmulateIE7"> </customHeaders> </httpProtocol> </system.webServer> </configuration>
或者你還可以使用IIS admin tool來(lái)定義,更為簡(jiǎn)單.
var tempArr = tempStr.split(",");
var a = tempArr[0];
var b = tempArr[1];
var c = tempArr[2];
var d = tempArr[3];
var o = tempArr[4];
摘要:
通過(guò)下拉框里各個(gè)語(yǔ)言(中文,日本語(yǔ),English)的選擇,切換jsp頁(yè)面文字。
tyrone1979 發(fā)表于 2005-08-26 13:27:19
作者:tyrone1979 來(lái)源:blog.csdn.net/tyrone1979
1 準(zhǔn)備資源文件。
資源文件命名格式:filename_language_country.properties.
中文文件名為index_zh_CN.properties。
日文文件名為 index_ja_JP.properties。
英文文件名為 index_en.properties。
英文文件內(nèi)容:
index.jsp.welcome=Colimas Library Management System
index.jsp.name=Name
index.jsp.userid=User ID
index.jsp.pass=Password
中文文件內(nèi)容:
index.jsp.welcome=\u4f60\u597d
index.jsp.name=\u59d3\u540d
index.jsp.userid=\u7528\u6237\u540d
index.jsp.pass=\u5bc6\u7801
日文文件內(nèi)容:
index.jsp.welcome=\u3044\u3089\u3063\u3057\u3083\u3044\u307e\u305b
index.jsp.name=\u59d3\u540d
index.jsp.userid=\u30e6\u30fc\u30b6\u30fcID
index.jsp.pass=\u30d1\u30b9\u30ef\u30fc\u30c9
\uxxxx是中文被轉(zhuǎn)換后的ASCII碼。可以使用native2ascii.exe工具轉(zhuǎn)換。
2 struts-config.xml里配置資源文件
<message-resources parameter="resources.config.index" />
resources.config.index是classes目錄下的resources/config子目錄的index__xx_xx.properties文件.
struts根據(jù)你的瀏覽器的語(yǔ)言設(shè)置調(diào)用不同語(yǔ)言的資源文件。
例如:如果你的IE默認(rèn)語(yǔ)言為中文則。Struts將使用index_zh_CN.properties。而在struts-config.xml里只需寫(xiě)出“index”即可
ActionMapping
<form-beans>
<!--1 Multi-Lanuage support formbean-->
<form-bean
name="SelectLanguageForm"
type="com.nova.colimas.web.form.SelectLanguageForm"/>
</form-beans>
<!-- =========================================== Global Forward Definitions -->
<global-forwards>
<!-- Default forward to "Welcome" action -->
<!-- Demonstrates using index.jsp to forward -->
<forward
name="index"
path="/pages/index.jsp"/>
</global-forwards>
<!-- =========================================== Action Mapping Definitions -->
<action-mappings>
<!-- 1 select language action -->
<action path="/SelectLanguageAction"
type="com.nova.colimas.web.action.SelectLanguageAction"
name="SelectLanguageForm"
scope="request">
</action>
…
</action-mappings>
3 jsp
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib uri="/tags/struts-bean" divfix="bean"%>
<%@ taglib uri="/tags/struts-html" divfix="html"%>
<%@ taglib uri="/tags/struts-logic" divfix="logic"%>
<html:html>
<Title><bean:message key="index.jsp.welcome"/></Title>
<body>
<logic:divsent name="user">
<H3>Welcome <bean:write name="LoginForm" property="userID" />!</H3>
</logic:divsent>
<logic:notPresent scope="session" name="user">
<H3>Welcome Colimas!</H3>
</logic:notPresent>
<html:errors />
<html:form action="/SelectLanguageAction.do">
<html:select property="language">
<html:option value="0">中文</html:option>
<html:option value="1">日本語(yǔ)</html:option>
<html:option value="2">English</html:option>
</html:select>
<html:submit>Select</html:submit>
</html:form>
<html:form action="/LoginAction.do">
<p><bean:message key="index.jsp.userid"/><input type="text" name="userID" value="tyrone1979" /><br>
<bean:message key="index.jsp.pass"/><input type="password" name="password" value="197913"/><br>
<html:submit><bean:message key="index.jsp.login"/></html:submit>
</p>
</html:form>
</body>
</html:html>
<bean:message key="index.jsp.welcome"/>引用資源文件的index.jsp.welcome屬性
SelectLanguageAction.do調(diào)用Action實(shí)現(xiàn)語(yǔ)言轉(zhuǎn)換。
4 Action
package com.nova.colimas.web.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessages;
//import org.apache.struts.upload.FormFile;
import com.nova.colimas.web.form.SelectLanguageForm;
import org.apache.struts.Globals;
import java.util.Locale;
public class SelectLanguageAction extends Action {
public ActionForward execute(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception{
SelectLanguageForm myform=(SelectLanguageForm)form;
String lan=myform.getLanguage();
switch((new Integer(lan)).intValue()){
case 0 :
request.getSession().setAttribute(Globals.LOCALE_KEY,Locale.CHINA);
break;
case 1:
request.getSession().setAttribute(Globals.LOCALE_KEY, Locale.JAPAN);
break;
case 2:
request.getSession().setAttribute(Globals.LOCALE_KEY, Locale.ENGLISH);
break;
default:
request.getSession().setAttribute(Globals.LOCALE_KEY, Locale.ENGLISH);
break;
}
return mapping.findForward("index");
}
}
Form
/*
* Created on 2005/06/18
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package com.nova.colimas.web.form;
import org.apache.struts.action.ActionForm;
/**
* @author tyrone
**/
public class SelectLanguageForm extends ActionForm {
private String language;
public void Reset() {
this.language="";
return;
}
/**
* @return Returns the Language.
*/
public String getLanguage() {
return language;
}
/**
* @param language The Language to set.
*/
public void setLanguage(String property1) {
this.language = property1;
}
}
結(jié)果
1 IE默認(rèn)語(yǔ)言為中文:
1、 下載
到Apache的官方網(wǎng)站,我們可以很容易找到Tomcat的下載地址,如:
http://tomcat.apache.org/download-60.cgi
在這里我們可以下載到Tomcat的6.0.16的zip、tar.gz和Windows Service Installer三種安裝包,
其中:
Zip 是Windows下的免安裝版本,只需要解壓后做一定的手動(dòng)配置就可以正常的使用;
tar.gz 是Linux下的安裝包;
Windows Service Installer 很明顯就是Windows下的Install程序,雙擊后就可以自動(dòng)安裝了。
在這里主要講一下如何使用Zip包來(lái)進(jìn)行解壓配置,那么我們就需要下載下來(lái)這個(gè)文件:apache-tomcat-6.0.20.zip
2、解壓與配置
在安裝Tomcat之前,我們首先要安裝的是JDK,Tomcat是在Java運(yùn)行環(huán)境的支持下運(yùn)行的,所以必須首先安裝并配置好JDK。JDK的安裝程序可以到sun公司的官方網(wǎng)站,在這里我們就詳細(xì)描述JDK的安裝了。
JDK安裝好后需要配置以下環(huán)境變量:
JAVA_HOME =JDK安裝目錄
Path =%JAVA_HOME%\bin;//原有內(nèi)容,且最好把此路徑放到最前。
ClassPath=.,%JAVA_HOME%\lib\rt.jar //這個(gè)可以沒(méi)有
將apache-tomcat-6.0.20.zip解壓 到C:\tomcat6文件夾中,這里就是我們的Tomcat了。
解壓后Tomcat以后我們同樣需要設(shè)置幾個(gè)環(huán)境變量:
CATALINA_HOME =Tomcat解壓目錄,我們這里就是CATALINA_HOME=C:\tomcat6
ClassPath =%CATALINA_HOME%\lib;原有內(nèi)容
環(huán)境變量配置的時(shí)候如果沒(méi)有這個(gè)關(guān)鍵字,就新加一項(xiàng),如果已經(jīng)有了,如Path ,就是在原有內(nèi)容值的基礎(chǔ)上添加新的內(nèi)容,新的內(nèi)容與原有的值以分號(hào)相隔。
配置好上面的這些內(nèi)容以后就可以重啟系統(tǒng)了。
3、運(yùn)行
重啟系統(tǒng)以后,我們可以進(jìn)入Tomcat解壓目錄下的bin目錄,找到startup.bat 文件,這個(gè)文件就是Tomcat的啟動(dòng)文件,雙擊這個(gè)文件,我們可以看到打開(kāi)了一個(gè)命令行窗口,一些Tomcat啟動(dòng)的加載信息就顯示出來(lái),最后一行應(yīng)該是:
信息:Server startup in xxx ms
這就是說(shuō)你的服務(wù)器已經(jīng)啟動(dòng)成功了,這是你可以打開(kāi)瀏覽器,在地址欄中輸入:
http://localhost:8080
看看是不是可以看到Tomcat的頁(yè)面了。
為了啟動(dòng)方便,我們可以將這個(gè)startup.bat文件創(chuàng)建一個(gè)快捷方式到桌面上,以后就可以直接使用這個(gè)快捷方式了。
需要特別注意的是,這種方式啟動(dòng)的Tomcat會(huì)有一個(gè)命令行窗口停留在你的面前,這就是啟動(dòng)著的服務(wù)器,千萬(wàn)不要將它關(guān)閉,如果把這個(gè)窗口關(guān)閉了,你的Tomcat服務(wù)器也就關(guān)閉了,切記,切記 。
在這里,我們配置的時(shí)候并沒(méi)有修改默認(rèn)的Tomcat服務(wù)器端口 ,所以就是8080。如果想修改這個(gè)端口,可以到tomcat安裝目錄的conf目錄下,找到server.xml這個(gè)配置文件,一定有這么一段:
< protocol="HTTP/1.1" port="8080 "
connectionTimeout="20000"
redirectPort="8443" />
這里面的port=”8080”就是服務(wù)器啟動(dòng)時(shí)的端口,你可以將這里修改成你想設(shè)置的端口,但注意不要與其它的軟件所使用的端口沖突,一旦發(fā)生了端口沖突,Tomcat就無(wú)法啟動(dòng)了。
我們還可以在這個(gè)配置文件中配置自己的虛擬目錄 ,找到下面這組代碼:
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="/test" docBase="D:\test" reloadable="true" />
</Host>
虛擬目錄的配置信息就是寫(xiě)在server.xml配置文件的這對(duì)標(biāo)簽之間,配置代碼中的path是用來(lái)在瀏覽器中訪問(wèn)時(shí)使用的虛擬目錄的路徑名 ,如上面我們配置的信息path值是”/test”,這個(gè)值中的反斜杠”/”是必不可少的 ,配置了這個(gè)值以后,我們?cè)跒g覽器中訪問(wèn)這個(gè)虛擬目錄的地址路徑如下:
http://localhost:8080/test
另一個(gè)參數(shù)docBase是虛擬目錄實(shí)際的存放地址 ,上面的配置示例就是把D:\test目錄配置成了名稱(chēng)為test的虛擬目錄。
4、安裝服務(wù)
如此配置的Tomcat每次都需要手動(dòng)啟動(dòng) ,如果你想讓這個(gè)Tomcat服務(wù)器在系統(tǒng)已啟動(dòng)的時(shí)候就自動(dòng)啟動(dòng),我們可以將其注冊(cè)成系統(tǒng)的服務(wù),注冊(cè)方式如下:
在運(yùn)行中執(zhí)行cmd 打開(kāi)命令行窗口 ,轉(zhuǎn)入Tomcat解壓目錄的Bin目錄 下,在這里我們轉(zhuǎn)到的就是c:\tomcat6\bin,然后執(zhí)行以下命令:service.bat install ,這樣就會(huì)將tomcat6.exe 文件注冊(cè)成系統(tǒng)的服務(wù)。
我們?cè)谶\(yùn)行services.msc ,打開(kāi)系統(tǒng)的服務(wù)查看,是不是多出來(lái)了一個(gè)”Apache Tomcat ”服務(wù)?
但這個(gè)服務(wù)的啟動(dòng)類(lèi)型是手動(dòng) 的,我們可以將其修改為自動(dòng) ,那樣Tomcat服務(wù)器就會(huì)隨著系統(tǒng)的啟動(dòng)而自動(dòng)啟動(dòng)了。
如果想禁止 這個(gè)服務(wù)了,可以在命令行窗口中c:\tomcat6\bin下執(zhí)行:
c:\tomcat6\bin\service.bat remove
就可以移除此服務(wù)。
5、總結(jié)
按照以上步驟我們就可以輕松的實(shí)現(xiàn)Tomcat服務(wù)器的手動(dòng)配置了,相比其自動(dòng)安裝的安裝包,這種手動(dòng)方式也沒(méi)有顯得有多復(fù)雜,而且通過(guò)這種手動(dòng)方式也能更加了解Tomcat的配置情況,更可以隨自己的需要靈活的配置它,所以在開(kāi)發(fā)使用中,手動(dòng)的配置方式還是應(yīng)該掌握的。
· 配置Eclipse
- 下載JDK:
從sun的官網(wǎng)http://java.sun.com/javase/downloads/?intcmp=1281下載JDK,當(dāng)前最新版本是jdk-6u10-windows-i586-p.exe,這個(gè)是正式版的。
- 下載WTK:
同時(shí)在sun的網(wǎng)站http://java.sun.com/products/sjwtoolkit/zh_download-2_5_2.html下載WTK,當(dāng)前最新版本是sun_java_wireless_toolkit-2_5_2-ml-windows.exe。
- 安裝JDK和WTK:
先安裝JDK再安裝WTK,我的安裝路徑是:D:"Java"jdk1.6.0_10和D:"Java"WTK2.5.2
- 下載eclipse:
從eclipse的官網(wǎng) http://www.eclipse.org/downloads/下載eclipse,我用的是:eclipse-java-ganymede-SR1-win32.zip,解壓到:XX:"eclipse
- 下載eclipseme:
從eclipseme的官網(wǎng) http://sourceforge.net/project/showfiles.php?group_id=86829下載eclipseme.當(dāng)前最新版本是eclipseeclipseme.feature_1.7.9_site.zip
- 配置eclipse:
到 “首選項(xiàng)”找到,Java—>調(diào)試,將“發(fā)生未不捕獲到的異常時(shí)暫掛執(zhí)行”與“在發(fā)生編譯錯(cuò)誤時(shí)暫掛執(zhí)行”這兩個(gè)選項(xiàng)調(diào)為“未選中”狀態(tài),再把下面的調(diào)試器超時(shí)(毫秒)的右側(cè)數(shù)值設(shè)置為15000
- 配置eclipseME:
運(yùn)行eclipse,配置自己學(xué)習(xí)的工作路徑,選擇 幫助—>軟件更新—>查找并安裝—>搜索要安裝的新功能部件,選擇 新建已歸檔的站點(diǎn),選擇eclipseme.feature_1.7.9_site.zip文件,安裝,重啟eclipse
- 配置WTK:
選擇 首選項(xiàng)—>J2ME—>Device Management—>Import 在Specify search directory下,選擇你所裝的WTK模擬器的目錄;選擇 Refresh ,后按完成,使用DefaultColorPhone為默認(rèn)模式,這時(shí)已為eclipse配置上了模擬器
- 下載ProGuard:
需要使用插件ProGuard,從ProGuard的官網(wǎng)下載ProGuard,當(dāng)前的最新版本是:proguard4.3beta2.tar.gz,解壓到:XX:"proguard4.3
- 配置ProGuard:
到 Eclipse的“首選項(xiàng)”找到,J2ME—>Packaging—>obfuscation,在Proguard Root Directory右邊的框中,選擇剛才解壓的proguard4.3的文件夾(XX:"proguard4.3),點(diǎn)擊應(yīng)用,這時(shí)為eclipse配置上了混淆器
- 配置完畢
· 使用eclipse進(jìn)行J2ME開(kāi)發(fā)
- 新建 J2ME下的J2ME Midlet Suite,填寫(xiě)項(xiàng)目名,下一步,完成
- 新建 J2ME下的J2ME Midlet,填寫(xiě)名稱(chēng),完成
- 點(diǎn)擊運(yùn)行,新建一個(gè)Wireless Toolkit Emulator的運(yùn)行配置,運(yùn)行,出現(xiàn)手機(jī)樣式,運(yùn)行成功
import java.net.URL;
import java.util.Vector;
import org.apache.soap.Constants;
import org.apache.soap.Fault;
import org.apache.soap.SOAPException;
import org.apache.soap.encoding.SOAPMappingRegistry;
import org.apache.soap.encoding.soapenc.BeanSerializer;
import org.apache.soap.rpc.Call;
import org.apache.soap.rpc.Parameter;
import org.apache.soap.rpc.Response;
import org.apache.soap.transport.http.SOAPHTTPConnection;
import org.apache.soap.util.xml.QName;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import oss.util.debug.LogHome;
public class GisWebService{
public static String getStringGisWebService(String ajfBm, String zjfBm, String aodfBm,String zodfBm) throws Exception {
String strUrl = "
String strTargetURL = "http://java.sun.com/xml/ns/jax-rpc/ri/config";//
String soapAction = "
URL url = new URL(strUrl);
SOAPMappingRegistry smr = new SOAPMappingRegistry();
BeanSerializer beanSer = new BeanSerializer();
smr.mapTypes(Constants.NS_URI_SOAP_ENC,new QName("","Result"),null,null,beanSer);
Call call = new Call();
SOAPHTTPConnection st = new SOAPHTTPConnection();
call.setSOAPTransport(st);
call.setSOAPMappingRegistry(smr);
call.setTargetObjectURI(strTargetURL);
call.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC);
call.setParams(createCondition(ajfBm,zjfBm,aodfBm,zodfBm));
call.setMethodName("WSEncrypt"); //調(diào)用WEBSERVICE方法名
Response resp;
try
{
call.setTimeout(3000);
resp = call.invoke(url,soapAction);
}
catch(SOAPException e)
{
throw new Exception("調(diào)用接口出錯(cuò)!URL="+strUrl+"\n"+e.getMessage());
}
LogHome.getLog().info("調(diào)用成功,開(kāi)始接收返回信息!");
return returnValue(resp);
}
public static String returnValue(Response resp) throws Exception {
if(resp.generatedFault()) {
Fault fault = resp.getFault();
String code = fault.getFaultCode();
String desc = fault.getFaultString();
LogHome.getLog().info("Fault code:"+code+":"+desc);
Vector v = fault.getDetailEntries();
int cnt = v.size();
for(int i = 0;i<cnt;i++)
{
Element n = (Element)v.elementAt(i);
Node nd = n.getFirstChild();
LogHome.getLog().info("Each element:"+n.getNodeName()+":"+nd.getNodeValue());
}
throw new Exception("調(diào)用接口時(shí)出錯(cuò),F(xiàn)ault code:"+code+":"+desc);
}
else
{
Parameter ret = resp.getReturnValue();
String returnXML = (String)ret.getValue();
LogHome.getLog().info(returnXML);
return returnXML;
}
}
public static Vector<Parameter> createCondition(String ajfBm,String zjfBm,String aodfBm,String zodfBm) {
Vector<Parameter> params = new Vector<Parameter>();
params.addElement(new Parameter("AjfBm",String.class,ajfBm,null));
params.addElement(new Parameter("ZjfBm",String.class,zjfBm,null));
params.addElement(new Parameter("AodfBm",String.class,aodfBm,null));
params.addElement(new Parameter("ZodfBm",String.class,zodfBm,null));
return params;
}
}
public static Date getNowDate() {
Date currentTime = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateString = formatter.format(currentTime);
ParsePosition pos = new ParsePosition(8);
Date currentTime_2 = formatter.parse(dateString, pos);
return currentTime_2;
}
/**
* 獲取現(xiàn)在時(shí)間
*
* @return返回短時(shí)間格式 yyyy-MM-dd
*/
public static Date getNowDateShort() {
Date currentTime = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
String dateString = formatter.format(currentTime);
ParsePosition pos = new ParsePosition(8);
Date currentTime_2 = formatter.parse(dateString, pos);
return currentTime_2;
}
/**
* 獲取現(xiàn)在時(shí)間
*
* @return返回字符串格式 yyyy-MM-dd HH:mm:ss
*/
public static String getStringDate() {
Date currentTime = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateString = formatter.format(currentTime);
return dateString;
}
/**
* 獲取現(xiàn)在時(shí)間
*
* @return 返回短時(shí)間字符串格式y(tǒng)yyy-MM-dd
*/
public static String getStringDateShort() {
Date currentTime = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
String dateString = formatter.format(currentTime);
return dateString;
}
/**
* 獲取時(shí)間 小時(shí):分;秒 HH:mm:ss
*
* @return
*/
public static String getTimeShort() {
SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss");
Date currentTime = new Date();
String dateString = formatter.format(currentTime);
return dateString;
}
/**
* 將長(zhǎng)時(shí)間格式字符串轉(zhuǎn)換為時(shí)間 yyyy-MM-dd HH:mm:ss
*
* @param strDate
* @return
*/
public static Date strToDateLong(String strDate) {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
ParsePosition pos = new ParsePosition(0);
Date strtodate = formatter.parse(strDate, pos);
return strtodate;
}
/**
* 將長(zhǎng)時(shí)間格式時(shí)間轉(zhuǎn)換為字符串 yyyy-MM-dd HH:mm:ss
*
* @param dateDate
* @return
*/
public static String dateToStrLong(java.util.Date dateDate) {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateString = formatter.format(dateDate);
return dateString;
}
/**
* 將短時(shí)間格式時(shí)間轉(zhuǎn)換為字符串 yyyy-MM-dd
*
* @param dateDate
* @param k
* @return
*/
public static String dateToStr(java.util.Date dateDate) {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
String dateString = formatter.format(dateDate);
return dateString;
}
/**
* 將短時(shí)間格式字符串轉(zhuǎn)換為時(shí)間 yyyy-MM-dd
*
* @param strDate
* @return
*/
public static Date strToDate(String strDate) {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
ParsePosition pos = new ParsePosition(0);
Date strtodate = formatter.parse(strDate, pos);
return strtodate;
}
/**
* 得到現(xiàn)在時(shí)間
*
* @return
*/
public static Date getNow() {
Date currentTime = new Date();
return currentTime;
}
/**
* 提取一個(gè)月中的最后一天
*
* @param day
* @return
*/
public static Date getLastDate(long day) {
Date date = new Date();
long date_3_hm = date.getTime() - 3600000 * 34 * day;
Date date_3_hm_date = new Date(date_3_hm);
return date_3_hm_date;
}
/**
* 得到現(xiàn)在時(shí)間
*
* @return 字符串 yyyyMMdd HHmmss
*/
public static String getStringToday() {
Date currentTime = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd HHmmss");
String dateString = formatter.format(currentTime);
return dateString;
}
/**
* 得到現(xiàn)在小時(shí)
*/
public static String getHour() {
Date currentTime = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateString = formatter.format(currentTime);
String hour;
hour = dateString.substring(11, 13);
return hour;
}
/**
* 得到現(xiàn)在分鐘
*
* @return
*/
public static String getTime() {
Date currentTime = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateString = formatter.format(currentTime);
String min;
min = dateString.substring(14, 16);
return min;
}
/**
* 根據(jù)用戶傳入的時(shí)間表示格式,返回當(dāng)前時(shí)間的格式 如果是yyyyMMdd,注意字母y不能大寫(xiě)。
*
* @param sformat
* yyyyMMddhhmmss
* @return
*/
public static String getUserDate(String sformat) {
Date currentTime = new Date();
SimpleDateFormat formatter = new SimpleDateFormat(sformat);
String dateString = formatter.format(currentTime);
return dateString;
}
/**
* 二個(gè)小時(shí)時(shí)間間的差值,必須保證二個(gè)時(shí)間都是"HH:MM"的格式,返回字符型的分鐘
*/
public static String getTwoHour(String st1, String st2) {
String[] kk = null;
String[] jj = null;
kk = st1.split(":");
jj = st2.split(":");
if (Integer.parseInt(kk[0]) < Integer.parseInt(jj[0]))
return "0";
else {
double y = Double.parseDouble(kk[0]) + Double.parseDouble(kk[1]) / 60;
double u = Double.parseDouble(jj[0]) + Double.parseDouble(jj[1]) / 60;
if ((y - u) > 0)
return y - u + "";
else
return "0";
}
}
/**
* 得到二個(gè)日期間的間隔天數(shù)
*/
public static String getTwoDay(String sj1, String sj2) {
SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");
long day = 0;
try {
java.util.Date date = myFormatter.parse(sj1);
java.util.Date mydate = myFormatter.parse(sj2);
day = (date.getTime() - mydate.getTime()) / (24 * 60 * 60 * 1000);
} catch (Exception e) {
return "";
}
return day + "";
}
/**
* 時(shí)間前推或后推分鐘,其中JJ表示分鐘.
*/
public static String getPreTime(String sj1, String jj) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String mydate1 = "";
try {
Date date1 = format.parse(sj1);
long Time = (date1.getTime() / 1000) + Integer.parseInt(jj) * 60;
date1.setTime(Time * 1000);
mydate1 = format.format(date1);
} catch (Exception e) {
}
return mydate1;
}
/**
* 得到一個(gè)時(shí)間延后或前移幾天的時(shí)間,nowdate為時(shí)間,delay為前移或后延的天數(shù)
*/
public static String getNextDay(String nowdate, String delay) {
try{
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
String mdate = "";
Date d = strToDate(nowdate);
long myTime = (d.getTime() / 1000) + Integer.parseInt(delay) * 24 * 60 * 60;
d.setTime(myTime * 1000);
mdate = format.format(d);
return mdate;
}catch(Exception e){
return "";
}
}
/**
* 判斷是否潤(rùn)年
*
* @param ddate
* @return
*/
public static boolean isLeapYear(String ddate) {
/**
* 詳細(xì)設(shè)計(jì): 1.被400整除是閏年,否則: 2.不能被4整除則不是閏年 3.能被4整除同時(shí)不能被100整除則是閏年
* 3.能被4整除同時(shí)能被100整除則不是閏年
*/
Date d = strToDate(ddate);
GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance();
gc.setTime(d);
int year = gc.get(Calendar.YEAR);
if ((year % 400) == 0)
return true;
else if ((year % 4) == 0) {
if ((year % 100) == 0)
return false;
else
return true;
} else
return false;
}
/**
* 返回美國(guó)時(shí)間格式 26 Apr 2006
*
* @param str
* @return
*/
public static String getEDate(String str) {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
ParsePosition pos = new ParsePosition(0);
Date strtodate = formatter.parse(str, pos);
String j = strtodate.toString();
String[] k = j.split(" ");
return k[2] + k[1].toUpperCase() + k[5].substring(2, 4);
}
/**
* 獲取一個(gè)月的最后一天
*
* @param dat
* @return
*/
public static String getEndDateOfMonth(String dat) {// yyyy-MM-dd
String str = dat.substring(0, 8);
String month = dat.substring(5, 7);
int mon = Integer.parseInt(month);
if (mon == 1 || mon == 3 || mon == 5 || mon == 7 || mon == 8 || mon == 10 || mon == 12) {
str += "31";
} else if (mon == 4 || mon == 6 || mon == 9 || mon == 11) {
str += "30";
} else {
if (isLeapYear(dat)) {
str += "29";
} else {
str += "28";
}
}
return str;
}
/**
* 判斷二個(gè)時(shí)間是否在同一個(gè)周
*
* @param date1
* @param date2
* @return
*/
public static boolean isSameWeekDates(Date date1, Date date2) {
Calendar cal1 = Calendar.getInstance();
Calendar cal2 = Calendar.getInstance();
cal1.setTime(date1);
cal2.setTime(date2);
int subYear = cal1.get(Calendar.YEAR) - cal2.get(Calendar.YEAR);
if (0 == subYear) {
if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR))
return true;
} else if (1 == subYear && 11 == cal2.get(Calendar.MONTH)) {
// 如果12月的最后一周橫跨來(lái)年第一周的話則最后一周即算做來(lái)年的第一周
if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR))
return true;
} else if (-1 == subYear && 11 == cal1.get(Calendar.MONTH)) {
if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR))
return true;
}
return false;
}
/**
* 產(chǎn)生周序列,即得到當(dāng)前時(shí)間所在的年度是第幾周
*
* @return
*/
public static String getSeqWeek() {
Calendar c = Calendar.getInstance(Locale.CHINA);
String week = Integer.toString(c.get(Calendar.WEEK_OF_YEAR));
if (week.length() == 1)
week = "0" + week;
String year = Integer.toString(c.get(Calendar.YEAR));
return year + week;
}
/**
* 獲得一個(gè)日期所在的周的星期幾的日期,如要找出2002年2月3日所在周的星期一是幾號(hào)
*
* @param sdate
* @param num
* @return
*/
public static String getWeek(String sdate, String num) {
// 再轉(zhuǎn)換為時(shí)間
Date dd = VeDate.strToDate(sdate);
Calendar c = Calendar.getInstance();
c.setTime(dd);
if (num.equals("1")) // 返回星期一所在的日期
c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
else if (num.equals("2")) // 返回星期二所在的日期
c.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY);
else if (num.equals("3")) // 返回星期三所在的日期
c.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY);
else if (num.equals("4")) // 返回星期四所在的日期
c.set(Calendar.DAY_OF_WEEK, Calendar.THURSDAY);
else if (num.equals("5")) // 返回星期五所在的日期
c.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY);
else if (num.equals("6")) // 返回星期六所在的日期
c.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY);
else if (num.equals("0")) // 返回星期日所在的日期
c.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
return new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());
}
/**
* 根據(jù)一個(gè)日期,返回是星期幾的字符串
*
* @param sdate
* @return
*/
public static String getWeek(String sdate) {
// 再轉(zhuǎn)換為時(shí)間
Date date = VeDate.strToDate(sdate);
Calendar c = Calendar.getInstance();
c.setTime(date);
// int hour=c.get(Calendar.DAY_OF_WEEK);
// hour中存的就是星期幾了,其范圍 1~7
// 1=星期日 7=星期六,其他類(lèi)推
return new SimpleDateFormat("EEEE").format(c.getTime());
}
public static String getWeekStr(String sdate){
String str = "";
str = VeDate.getWeek(sdate);
if("1".equals(str)){
str = "星期日";
}else if("2".equals(str)){
str = "星期一";
}else if("3".equals(str)){
str = "星期二";
}else if("4".equals(str)){
str = "星期三";
}else if("5".equals(str)){
str = "星期四";
}else if("6".equals(str)){
str = "星期五";
}else if("7".equals(str)){
str = "星期六";
}
return str;
}
/**
* 兩個(gè)時(shí)間之間的天數(shù)
*
* @param date1
* @param date2
* @return
*/
public static long getDays(String date1, String date2) {
if (date1 == null || date1.equals(""))
return 0;
if (date2 == null || date2.equals(""))
return 0;
// 轉(zhuǎn)換為標(biāo)準(zhǔn)時(shí)間
SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");
java.util.Date date = null;
java.util.Date mydate = null;
try {
date = myFormatter.parse(date1);
mydate = myFormatter.parse(date2);
} catch (Exception e) {
}
long day = (date.getTime() - mydate.getTime()) / (24 * 60 * 60 * 1000);
return day;
}
/**
* 形成如下的日歷 , 根據(jù)傳入的一個(gè)時(shí)間返回一個(gè)結(jié)構(gòu) 星期日 星期一 星期二 星期三 星期四 星期五 星期六 下面是當(dāng)月的各個(gè)時(shí)間
* 此函數(shù)返回該日歷第一行星期日所在的日期
*
* @param sdate
* @return
*/
public static String getNowMonth(String sdate) {
// 取該時(shí)間所在月的一號(hào)
sdate = sdate.substring(0, 8) + "01";
// 得到這個(gè)月的1號(hào)是星期幾
Date date = VeDate.strToDate(sdate);
Calendar c = Calendar.getInstance();
c.setTime(date);
int u = c.get(Calendar.DAY_OF_WEEK);
String newday = VeDate.getNextDay(sdate, (1 - u) + "");
return newday;
}
/**
* 取得數(shù)據(jù)庫(kù)主鍵 生成格式為yyyymmddhhmmss+k位隨機(jī)數(shù)
*
* @param k
* 表示是取幾位隨機(jī)數(shù),可以自己定
*/
public static String getNo(int k) {
return getUserDate("yyyyMMddhhmmss") + getRandom(k);
}
/**
* 返回一個(gè)隨機(jī)數(shù)
*
* @param i
* @return
*/
public static String getRandom(int i) {
Random jjj = new Random();
// int suiJiShu = jjj.nextInt(9);
if (i == 0)
return "";
String jj = "";
for (int k = 0; k < i; k++) {
jj = jj + jjj.nextInt(9);
}
return jj;
}
/**
*
* @param args
*/
public static boolean RightDate(String date) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
;
if (date == null)
return false;
if (date.length() > 10) {
sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
} else {
sdf = new SimpleDateFormat("yyyy-MM-dd");
}
try {
sdf.parse(date);
} catch (ParseException pe) {
return false;
}
return true;
}
/***************************************************************************
* //nd=1表示返回的值中包含年度 //yf=1表示返回的值中包含月份 //rq=1表示返回的值中包含日期 //format表示返回的格式 1
* 以年月日中文返回 2 以橫線-返回 // 3 以斜線/返回 4 以縮寫(xiě)不帶其它符號(hào)形式返回 // 5 以點(diǎn)號(hào).返回
**************************************************************************/
public static String getStringDateMonth(String sdate, String nd, String yf, String rq, String format) {
Date currentTime = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
String dateString = formatter.format(currentTime);
String s_nd = dateString.substring(0, 4); // 年份
String s_yf = dateString.substring(5, 7); // 月份
String s_rq = dateString.substring(8, 10); // 日期
String sreturn = "";
roc.util.MyChar mc = new roc.util.MyChar();
if (sdate == null || sdate.equals("") || !mc.Isdate(sdate)) { // 處理空值情況
if (nd.equals("1")) {
sreturn = s_nd;
// 處理間隔符
if (format.equals("1"))
sreturn = sreturn + "年";
else if (format.equals("2"))
sreturn = sreturn + "-";
else if (format.equals("3"))
sreturn = sreturn + "/";
else if (format.equals("5"))
sreturn = sreturn + ".";
}
// 處理月份
if (yf.equals("1")) {
sreturn = sreturn + s_yf;
if (format.equals("1"))
sreturn = sreturn + "月";
else if (format.equals("2"))
sreturn = sreturn + "-";
else if (format.equals("3"))
sreturn = sreturn + "/";
else if (format.equals("5"))
sreturn = sreturn + ".";
}
// 處理日期
if (rq.equals("1")) {
sreturn = sreturn + s_rq;
if (format.equals("1"))
sreturn = sreturn + "日";
}
} else {
// 不是空值,也是一個(gè)合法的日期值,則先將其轉(zhuǎn)換為標(biāo)準(zhǔn)的時(shí)間格式
sdate = roc.util.RocDate.getOKDate(sdate);
s_nd = sdate.substring(0, 4); // 年份
s_yf = sdate.substring(5, 7); // 月份
s_rq = sdate.substring(8, 10); // 日期
if (nd.equals("1")) {
sreturn = s_nd;
// 處理間隔符
if (format.equals("1"))
sreturn = sreturn + "年";
else if (format.equals("2"))
sreturn = sreturn + "-";
else if (format.equals("3"))
sreturn = sreturn + "/";
else if (format.equals("5"))
sreturn = sreturn + ".";
}
// 處理月份
if (yf.equals("1")) {
sreturn = sreturn + s_yf;
if (format.equals("1"))
sreturn = sreturn + "月";
else if (format.equals("2"))
sreturn = sreturn + "-";
else if (format.equals("3"))
sreturn = sreturn + "/";
else if (format.equals("5"))
sreturn = sreturn + ".";
}
// 處理日期
if (rq.equals("1")) {
sreturn = sreturn + s_rq;
if (format.equals("1"))
sreturn = sreturn + "日";
}
}
return sreturn;
}
public static String getNextMonthDay(String sdate, int m) {
sdate = getOKDate(sdate);
int year = Integer.parseInt(sdate.substring(0, 4));
int month = Integer.parseInt(sdate.substring(5, 7));
month = month + m;
if (month < 0) {
month = month + 12;
year = year - 1;
} else if (month > 12) {
month = month - 12;
year = year + 1;
}
String smonth = "";
if (month < 10)
smonth = "0" + month;
else
smonth = "" + month;
return year + "-" + smonth + "-10";
}
public static String getOKDate(String sdate) {
if (sdate == null || sdate.equals(""))
return getStringDateShort();
if (!VeStr.Isdate(sdate)) {
sdate = getStringDateShort();
}
// 將“/”轉(zhuǎn)換為“-”
sdate = VeStr.Replace(sdate, "/", "-");
// 如果只有8位長(zhǎng)度,則要進(jìn)行轉(zhuǎn)換
if (sdate.length() == 8)
sdate = sdate.substring(0, 4) + "-" + sdate.substring(4, 6) + "-" + sdate.substring(6, 8);
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
ParsePosition pos = new ParsePosition(0);
Date strtodate = formatter.parse(sdate, pos);
String dateString = formatter.format(strtodate);
return dateString;
}
public static void main(String[] args) throws Exception {
try {
//System.out.print(Integer.valueOf(getTwoDay("2006-11-03 12:22:10", "2006-11-02 11:22:09")));
} catch (Exception e) {
throw new Exception();
}
//System.out.println("sss");
}
}
******************使用到的軟件******************
IIS 6.0
PHP 5.26
MySQL V5.0.15 正式版
phpMyAdmin-2.11.7-all-languages
本機(jī)操作系統(tǒng) Window Server 2003 EnterPrise Edition SP2
******************使用到的軟件******************
一直都是用的APPServ 突然覺(jué)得經(jīng)常用也沒(méi)有什么意思!于是就想自己配的玩下!這里使用的是IIS下配置。
安裝IIS服務(wù)器
打開(kāi)控制面板->添加刪除程序->添加刪除組件->應(yīng)用程序服務(wù)器 要使用ASP.NET的就把詳細(xì)信息里面的ASP.NET勾上!然后下一步。
這里如果有光盤(pán)的可以直接用光盤(pán)安裝,如果沒(méi)有就下一個(gè),我用的是IIS6 然后安裝的時(shí)候會(huì)提示你插入光盤(pán),你瀏覽到下載解壓后的IIS6的文件里,然后會(huì)找到所需文件,就這樣一直瀏覽就可以安裝成功!
安裝PHP
安裝好IIS之后就需要打開(kāi)準(zhǔn)備好的PHP文件,將里面的DLL文件全部復(fù)制到System 32 目錄下, 其實(shí)并不需要全部復(fù)制!只需要復(fù)制 php5ts.dll libmysql.dll libmcrypt.dll 這三個(gè)就行了!但如果你覺(jué)得不好記,全部復(fù)制進(jìn)去不會(huì)影響什么!然后將PHP目錄下的php.ini-recommended拷到C:\Windows下 然后把php.ini-recommended文件改名成php.ini
從IIS里面添加對(duì)PHP的映射
打開(kāi) Internet 信息服務(wù)(IIS)管理器(管理工具里面)
點(diǎn)擊Web 服務(wù)擴(kuò)展 如果你同時(shí)要使用ASP ASP.NET(安裝了才有) 的話 就點(diǎn)擊左邊的允許! 同時(shí)所有未知的ISAPI也要允許!
接著在默認(rèn)網(wǎng)站上--->右鍵--->屬性--->ISAPI 添加 篩選器,名稱(chēng) 可以寫(xiě)PHP 可執(zhí)行文件 找到 你的PHP目錄下的php5isapi.dll
然后在點(diǎn)擊主目錄--->配置--->添加--->可執(zhí)行文件也選擇剛才這個(gè)文件 擴(kuò)展名填寫(xiě).php 確定
同時(shí)在文檔里面可以添加index.php 這個(gè)是默認(rèn)打開(kāi)的頁(yè)面!不會(huì)影響程序。如果你設(shè)置了它就自動(dòng)尋找這個(gè)文件,如果有就直接打開(kāi)。不過(guò)還是建議添加一下!
接下來(lái) 應(yīng)用 確定 重啟IIS服務(wù)
重啟方法:
在運(yùn)行里面依次輸入
net stop w3svc
net stop iisadmin
net start w3svc
接著在你的目錄下的PHP文件就可以瀏覽了!
比如輸入
echo phpinfo();
?>
短標(biāo)記默認(rèn)是關(guān)閉的,請(qǐng)寫(xiě)成這種形式的,建議不使用短標(biāo)記。
保存為index.php,然后在Internet 信息服務(wù)(IIS)管理器下的默認(rèn)網(wǎng)站的右邊 點(diǎn)擊你想看的頁(yè)面 右鍵 瀏覽!OK 顯示出來(lái)了。
配置PHP
上面僅僅完成了PHP的安裝,但是PHP的配置都是默認(rèn)的,這樣子會(huì)帶來(lái)很多的問(wèn)題。為了使PHP能更好的運(yùn)行,需要修改PHP配置!PHP主要與php.ini有關(guān),打開(kāi)C:\Windows下的php.ini。
找到 extension_dir = "./" 改成extension_dir = "C:\php\ext\" 地址是PHP目錄下的ext文件夾,
from order_main_info a,INT_AD_INFO c
WHERE a.order_type='32' and
a.state='0' and c.order_id=a.order_id and
a.order_id=(select order_id from(select rownum rn,order_id
from ORDER_DEAL_INFO where order_id=(select order_id from order_main_info where order_type='32' and state='0'))
where rn=(select count(*) from ORDER_DEAL_INFO where order_id=(select order_id from order_main_info where order_type='32' and state='0')))