第一組:楊昊 震驚街佑!原來HTML5還有這些好玩的東西(UC震驚部)
如果需要在移動(dòng)瀏覽器中實(shí)現(xiàn)撥打電話谢翎,調(diào)用sms發(fā)短信,發(fā)送email等功能沐旨,移動(dòng)手機(jī)WEB頁面(HTML5)Javascript提供的接口是一個(gè)好辦法森逮。
采用url href鏈接的方式,實(shí)現(xiàn)在Safari ios磁携,Android 瀏覽器褒侧,webos瀏覽器,塞班瀏覽器,IE闷供,Operamini等主流瀏覽器烟央,進(jìn)行撥打電話功能。
1. 撥打電話
在電話號(hào)碼前面可以加上 + (加號(hào))表示國際號(hào)碼歪脏。如:
最常用WEB頁面JS實(shí)現(xiàn)一鍵撥號(hào)的電話撥打功能
例子:
<a href="tel:10086">10086</a>
使用wtai協(xié)議進(jìn)行撥打電話
<a href="wtai://wp/mc;10086">10086</a>
2. 發(fā)送短信
如果是需要調(diào)用短信的接口疑俭,可以將鏈接寫成下面的格式:
sms:<phone_number>[,<phone-number>]*[?body=<message_body>]
例如:
給 10086 發(fā)短信:
<a href="sms:10086">發(fā)送信息</a>給 10086 發(fā)送內(nèi)容為"cxye"的短信:
<a href="sms:10086?body=cxye">發(fā)送信息</a>給 10086 和 10010 發(fā)送內(nèi)容為"cxye"的短信:
<a href="sms:10086,10010?body=cxye">發(fā)送信息</a>
3. Mail 發(fā)送郵件
就和普通的html一樣使用mailto
給
test1@163.com
發(fā)送郵件:
<a href="mailto:test1@163.com">mail</a>給test1@163.com和test2@126.com發(fā)送郵件:
<a href="mailto:test1@163.com,test2@126.com">mail</a>給test1@163.com發(fā)送主題為“testing”的郵件:
<a href="mailto:test1@163.com?subject=Testing">mail</a>給test1@163.com發(fā)送主題為“testing”的郵件,并抄送給test3@126.com:
<a href="mailto:test1@163.com?subject=Testing mailto&cc=test3@126.com">mail</a>
4. Android Market
如果希望一個(gè)鏈接能夠激活A(yù)ndroid市場(chǎng)的功能婿失,可以把鏈接寫成:
<a href="market://search?q=[query]">Android Market link</a>
其中<query>就是搜索的內(nèi)容钞艇,你應(yīng)用的名稱
例子:
<a href="market://search?q=MyApp">MyApp</a>
5. GPS地圖定位
<a href="geopoint:[經(jīng)度],[緯度]">我的位置</a>
例如:
<a href="geopoint:108.954823,34.275891">我的位置</a>
第二組:趙彩鳳 AppCan-浮動(dòng)窗口模塊Frame
appcan.frame.open(id,url,left,top,name,index,change,extraInfo) //打開一個(gè)浮動(dòng)窗口
id:要打開浮動(dòng)窗口的名稱
url:浮動(dòng)窗口要加載的頁面的地址,如果url是一個(gè)數(shù)組則打開多頁面浮動(dòng)窗口
left:浮動(dòng)窗口距離左邊的距離
top:浮動(dòng)窗口距離上邊的距離
name:強(qiáng)制改變打開窗口的名稱
index:設(shè)置選中的多頁面窗口的默認(rèn)索引
change:如果多頁面浮動(dòng)窗口改變時(shí)會(huì)觸發(fā)該回調(diào),該回調(diào)有以下兩個(gè)參數(shù):err:正確返回情況下為null,錯(cuò)誤時(shí)為Error信息.res:返回當(dāng)前選擇的浮動(dòng)窗口頁面的數(shù)據(jù)豪硅,appcan.frame.close(name) //關(guān)閉指定的浮動(dòng)窗口
//關(guān)閉demo浮動(dòng)窗口 appcan.frame.close('demo');
//另外一種使用方式 var frame = appcan.require('frame'); frame.close('demo');appcan.frame.resize(id,left,top,name) //設(shè)置指定的浮動(dòng)窗口恢復(fù)到指定窗口的大小哩照,并設(shè)置浮動(dòng)窗口的位置
appcan.frame.resizePopoverByEle(id,left,top,name) //設(shè)置指定的浮動(dòng)窗口恢復(fù)到指定窗口的大小,并設(shè)置浮動(dòng)窗口的位置
appcan.frame.bringToFront(name) //把指定的浮動(dòng)窗口設(shè)置為最上層
//把demo窗口顯示到所有窗口最上面
appcan.frame.bringToFront('demo');
//另外一種使用方式
var frame = appcan.require('frame');
frame.bringToFront('demo');appcan.frame.evaluateScript(name,popName,scriptContent) //在指定的浮動(dòng)窗口內(nèi)執(zhí)行響應(yīng)的腳本
//在demo窗口的浮動(dòng)窗口執(zhí)行腳本
appcan.frame.evaluateScript({
name:'demo',
popName:'demoPop',
scriptContent:'alert("hello world")'
});
//另外一種使用方式
var frame = appcan.require('frame');
frame.evaluateScript({
name:'demo',
popName:'demoPop',
scriptContent:'alert("hello world")'
});
appcan.frame.openMulti(popName,content,dataType,left,top,width,height,fontSize,flag,indexSelected) //浮動(dòng)窗口中頁面切換
appcan.frame.closeMulti(popName) //關(guān)閉多頁面浮動(dòng)窗口
appcan.frame.selectMulti(popName,index) //設(shè)置多頁面浮動(dòng)窗口跳轉(zhuǎn)到的子頁面窗口的索引
appcan.frame.sendToBack(name) //把指定的浮動(dòng)窗口設(shè)置到最下層
appcan.frame.setBounce(bounceType,startPullCall,downEndCall,upEndCall,color,imgSettings) //設(shè)置上下彈動(dòng)效果
轉(zhuǎn)自AppCan官網(wǎng)http://newdocx.appcan.cn/JSSDK/Frame
第三組:蔡永堅(jiān) 存儲(chǔ)過程-存儲(chǔ)過程使用一
不緩存存儲(chǔ)過程
- WITH RECOMPILE 不緩存
if (object_id('proc_temp', 'P') is not null)
drop proc proc_temp
go
create proc proc_temp
with recompile
as
select * from student;
go
exec proc_temp;
- 加密WITH ENCRYPTION
if (object_id('proc_temp_encryption', 'P') is not null)
drop proc proc_temp_encryption
go
create proc proc_temp_encryption
with encryption
as
select * from student;
go
exec proc_temp_encryption;
exec sp_helptext 'proc_temp';
exec sp_helptext 'proc_temp_encryption';
if (object_id('proc_cursor', 'P') is not null)
drop proc proc_cursor
go
create proc proc_cursor
@cur cursor varying output
as
set @cur = cursor forward_only static for
select id, name, age from student;
open @cur;
go
- 調(diào)用
declare @exec_cur cursor;
declare @id int,
@name varchar(20),
@age int;
exec proc_cursor @cur = @exec_cur output;--調(diào)用存儲(chǔ)過程
fetch next from @exec_cur into @id, @name, @age;
while (@@fetch_status = 0)
begin
fetch next from @exec_cur into @id, @name, @age;
print 'id: ' + convert(varchar, @id) + ', name: ' + @name + ', age: ' + convert(char, @age);
end
close @exec_cur;
deallocate @exec_cur;--刪除游標(biāo)
- 存儲(chǔ)過程舟误、row_number完成分頁
if (object_id('pro_page', 'P') is not null)
drop proc proc_cursor
go
create proc pro_page
@startIndex int,
@endIndex int
as
select count(*) from product
;
select * from (
select row_number() over(order by pid) as rowId, * from product
) temp
where temp.rowId between @startIndex and @endIndex
go
--drop proc pro_page
exec pro_page 1, 4
--
- 分頁存儲(chǔ)過程
if (object_id('pro_page', 'P') is not null)
drop proc pro_stu
go
create procedure pro_stu(
@pageIndex int,
@pageSize int
)
as
declare @startRow int, @endRow int
set @startRow = (@pageIndex - 1) * @pageSize +1
set @endRow = @startRow + @pageSize -1
select * from (
select *, row_number() over (order by id asc) as number from student
) t
where t.number between @startRow and @endRow;
exec pro_stu 2, 2;
第四組:張?jiān)? Cookie/Session機(jī)制詳解
1.2 Session機(jī)制
除了使用Cookie葡秒,Web應(yīng)用程序中還經(jīng)常使用Session來記錄客戶端狀態(tài)。Session是服務(wù)器端使用的一種記錄客戶端狀態(tài)的機(jī)制嵌溢,使用上比Cookie簡(jiǎn)單一些,相應(yīng)的也增加了服務(wù)器的存儲(chǔ)壓力蹋岩。
1.2.1 什么是Session
Session是另一種記錄客戶狀態(tài)的機(jī)制赖草,不同的是Cookie保存在客戶端瀏覽器中,而Session保存在服務(wù)器上剪个⊙砥铮客戶端瀏覽器訪問服務(wù)器的時(shí)候,服務(wù)器把客戶端信息以某種形式記錄在服務(wù)器上扣囊。這就是Session乎折。客戶端瀏覽器再次訪問時(shí)只需要從該Session中查找該客戶的狀態(tài)就可以了侵歇。
如果說Cookie機(jī)制是通過檢查客戶身上的“通行證”來確定客戶身份的話骂澄,那么Session機(jī)制就是通過檢查服務(wù)器上的“客戶明細(xì)表”來確認(rèn)客戶身份。Session相當(dāng)于程序在服務(wù)器上建立的一份客戶檔案惕虑,客戶來訪的時(shí)候只需要查詢客戶檔案表就可以了坟冲。
1.2.3 Session的生命周期
Session保存在服務(wù)器端。為了獲得更高的存取速度溃蔫,服務(wù)器一般把Session放在內(nèi)存里健提。每個(gè)用戶都會(huì)有一個(gè)獨(dú)立的Session。如果Session內(nèi)容過于復(fù)雜伟叛,當(dāng)大量客戶訪問服務(wù)器時(shí)可能會(huì)導(dǎo)致內(nèi)存溢出私痹。因此,Session里的信息應(yīng)該盡量精簡(jiǎn)。
Session在用戶第一次訪問服務(wù)器的時(shí)候自動(dòng)創(chuàng)建紊遵。需要注意只有訪問JSP账千、Servlet等程序時(shí)才會(huì)創(chuàng)建Session,只訪問HTML癞蚕、IMAGE等靜態(tài)資源并不會(huì)創(chuàng)建Session蕊爵。如果尚未生成Session,也可以使用request.getSession(true)強(qiáng)制生成Session桦山。
Session生成后攒射,只要用戶繼續(xù)訪問,服務(wù)器就會(huì)更新Session的最后訪問時(shí)間恒水,并維護(hù)該Session会放。用戶每訪問服務(wù)器一次,無論是否讀寫Session钉凌,服務(wù)器都認(rèn)為該用戶的Session“活躍(active)”了一次咧最。
1.2.4 Session的有效期
由于會(huì)有越來越多的用戶訪問服務(wù)器,因此Session也會(huì)越來越多御雕。為防止內(nèi)存溢出矢沿,服務(wù)器會(huì)把長(zhǎng)時(shí)間內(nèi)沒有活躍的Session從內(nèi)存刪除。這個(gè)時(shí)間就是Session的超時(shí)時(shí)間酸纲。如果超過了超時(shí)時(shí)間沒訪問過服務(wù)器捣鲸,Session就自動(dòng)失效了。
Session的超時(shí)時(shí)間為maxInactiveInterval屬性闽坡,可以通過對(duì)應(yīng)的getMaxInactiveInterval()獲取栽惶,通過setMaxInactiveInterval(longinterval)修改。
Session的超時(shí)時(shí)間也可以在web.xml中修改疾嗅。另外外厂,通過調(diào)用Session的invalidate()方法可以使Session失效。
第五組:王炳鈞 DevExpress GridView使用技巧之列標(biāo)題點(diǎn)擊事件
GridView有RowCellClick事件代承,即單元格點(diǎn)擊事件汁蝶,但是針對(duì)列標(biāo)題行以及列標(biāo)題單元格卻沒有相應(yīng)的事件。
在這里使用GridView的MouseDown事件次泽。這里同樣使用的是GridHitInfo來獲取點(diǎn)擊位置的信息穿仪,來判斷是否在列標(biāo)題上。GridHitInfo根據(jù)鼠標(biāo)點(diǎn)擊的x意荤、y坐標(biāo)獲取該點(diǎn)的相關(guān)信息啊片,判斷是否點(diǎn)擊在列標(biāo)題行內(nèi)。
在這里使用GridView的MouseDown事件玖像。這里同樣使用的是GridHitInfo來獲取點(diǎn)擊位置的信息紫谷,來判斷是否在列標(biāo)題上齐饮。GridHitInfo根據(jù)鼠標(biāo)點(diǎn)擊的x、y坐標(biāo)獲取該點(diǎn)的相關(guān)信息笤昨,判斷是否點(diǎn)擊在列標(biāo)題行內(nèi)祖驱。
以上代碼很簡(jiǎn)單,但是有個(gè)小問題瞒窒,就是在該列右邊線拖動(dòng)這一列的列寬時(shí)捺僻,也會(huì)彈出對(duì)話框,因?yàn)檫@里拖動(dòng)列寬也被視為點(diǎn)擊鼠標(biāo)崇裁。這顯然不合適匕坯。解決這個(gè)問題的辦法也很簡(jiǎn)單,就是判斷鼠標(biāo)點(diǎn)擊位置不在右邊線向左移動(dòng)一點(diǎn)距離(3像素)范圍內(nèi)拔稳。下面對(duì)以上代碼稍加修改葛峻,就不會(huì)再有這個(gè)問題了。