周紹景 華德志 應(yīng)杰 潘宏斌 楊正元
摘 要:隨著互聯(lián)網(wǎng)的不斷發(fā)展,軟件平臺(tái)也不斷增加。平臺(tái)用戶(hù)不在局限于軟件的使用效率,個(gè)性化服務(wù)也逐步變得重要。利用JSP開(kāi)發(fā)技術(shù)和SQL Server數(shù)據(jù)庫(kù)技術(shù)設(shè)計(jì)實(shí)現(xiàn)的軟件自定義系統(tǒng),更好地為用戶(hù)提供了個(gè)性化服務(wù)。
關(guān)鍵詞:軟件平臺(tái);個(gè)性化服務(wù);前端自定義
中圖分類(lèi)號(hào):TP311.52 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1671-2064(2018)15-0023-02
目前軟件平臺(tái)的大幅增加,用戶(hù)對(duì)平臺(tái)的要求不僅是平臺(tái)應(yīng)用的穩(wěn)定性和實(shí)用性,還希望有選擇性。實(shí)現(xiàn)軟件應(yīng)用的自定義可增加平臺(tái)多樣性[1],使用戶(hù)擁有“個(gè)性化”服務(wù)[2]。用戶(hù)能夠根據(jù)喜好添加或刪除軟件應(yīng)用進(jìn)行自定義。
1 需求分析
軟件自定義是用戶(hù)根據(jù)個(gè)人喜好添加或刪除軟件服務(wù)模塊的過(guò)程。
1.1 視圖需求
自定義界面視圖需要根據(jù)用戶(hù)對(duì)個(gè)人應(yīng)用的修改而變化。站點(diǎn)利用Cookie儲(chǔ)存數(shù)據(jù)[3],JS獲取Cookie中數(shù)據(jù)對(duì)頁(yè)面做出相應(yīng)改變。用戶(hù)方面的視圖需求包括非注冊(cè)用戶(hù)視圖與注冊(cè)用戶(hù)視圖兩個(gè)方面,二者的區(qū)別在于非注冊(cè)用戶(hù)只能將數(shù)據(jù)儲(chǔ)存到Cookie中來(lái)獲取,而注冊(cè)用戶(hù)既能將數(shù)據(jù)儲(chǔ)存到Cookie中獲取,也能將數(shù)據(jù)儲(chǔ)存到服務(wù)器中獲取。管理員與注冊(cè)用戶(hù)相同,修改應(yīng)用插件數(shù)據(jù)既能儲(chǔ)存到Cookie中獲取[4],也能儲(chǔ)存到服務(wù)端獲取。
1.2 功能需求
非注冊(cè)用戶(hù)訪(fǎng)問(wèn)站點(diǎn)進(jìn)行應(yīng)用的自定義時(shí),通過(guò)Cookie存儲(chǔ)游客的自定義數(shù)據(jù),而登陸用戶(hù)訪(fǎng)問(wèn)站點(diǎn)自定義應(yīng)用時(shí)將自定義數(shù)據(jù)儲(chǔ)存到服務(wù)端,同時(shí)將數(shù)據(jù)同時(shí)存儲(chǔ)到Cookie中以便記錄用戶(hù)偏好設(shè)置以及二次使用,業(yè)務(wù)流程如圖1所示。
2 軟件自定義實(shí)現(xiàn)
2.1 視圖實(shí)現(xiàn)
根據(jù)試圖需求,首先創(chuàng)建存儲(chǔ)應(yīng)用數(shù)據(jù)的Cookie,主要代碼:
Cookie cookies[]=request.getCookies()
Cookie c=null
for(int i=0;i c=cookies[i] if(c!=null){ if(("cn").equals(c.getName())){ pageContext.setAttribute("SavedUserName",c.getValue())}} 創(chuàng)建Cookie并儲(chǔ)存修改數(shù)據(jù)后,使用JS代碼獲取Cookie中的數(shù)據(jù),并對(duì)數(shù)據(jù)進(jìn)行操作,修改個(gè)人應(yīng)用頁(yè)面信息,主要代碼: n=request.getParameter("n") d=request.getParameter("d"); dr=request.getParameter("dr"); if(!"".equals(n) &&!"".equals(d) &&!"".equals(dr) && request.getParameter("RmbUser")!= null){ Cookie nc=new Cookie("anc",n); Cookie dc=new Cookie("adc",d); Cookie drc=new Cookie("adrc",dr); cookie.setMaxAge(365*24*60*60); response.addCookie(anc); response.addCookie(adc); response.addCookie(adrc);} 而注冊(cè)用戶(hù)和管理員不僅需要從Cookie中獲取值,還需要從服務(wù)器端獲取值,所以在JSP頁(yè)面還需要利用Session獲取服務(wù)器端的值,實(shí)現(xiàn)表達(dá)式:<%=session. getAttribute("fl") %>。 2.2 功能實(shí)現(xiàn) 功能的實(shí)現(xiàn)與視圖的實(shí)現(xiàn)類(lèi)似,同樣,用戶(hù)分為非注冊(cè)用戶(hù)和注冊(cè)用戶(hù)。非注冊(cè)用戶(hù)體驗(yàn)應(yīng)用的添加與刪除,利用Cookie存儲(chǔ)修改數(shù)據(jù),不能將數(shù)據(jù)儲(chǔ)存到服務(wù)器端,主要代碼: function getCookie(sn){ if (document.cookie.length>0){c_start=document.cookie.indexOf(sn + "=") if (c_start!=-1){ c_start=c_start + c_name.length+1 c_end=document.cookie.indexOf(";",c_start)if (c_end==-1) c_end=document.cookie.length return unescape(document.cookie.substring(c_start,c_end))} }return ""} function setCookie(sc,value,expiredays){ exdate=new Date() exdate.setDate(exdate.getDate()+expiredays) document.cookie=c_n+ "=" +escape(value)+((expiredays==null) ? "" : ;expires="+exdate.toGMTString())} function checkCookie(){sname=getCookie('sname');servicedescribe=getCookie('sdescribe')
if (sname!=null&&sname;!=""&&sdescribe;!=null && sdescribe!="")
{alert('添加成功!')}else{alert('添加失敗!')}}}
注冊(cè)用戶(hù)將修改的信息提交服務(wù)端保存,以便下次登陸使用,主要代碼:
管理員主要負(fù)責(zé)應(yīng)用插件的管理(添加或刪除服務(wù)插件),修改插件的數(shù)據(jù)存儲(chǔ)到Cookie與服務(wù)端,Cookie主要代碼參考用戶(hù)功能實(shí)現(xiàn),服務(wù)器端的主要代碼:
if (method.equals("S_p")) {
int id=request.getParameter("id");;
String SName = request.getParameter("SName");
String SDescribe = request.getParameter("SDescribe");
String SAddress = request.getParameter("SAddress");
int i = db.insertRecord("INSERT INTO S_p (id,SName,SDescribe,SAddress)
VALUES ('"+id+"','"+SName+"','"+SDescribe+"','"+SAddress+"')");
if (i == 0) {
String temp = ec.S("select * from S_p");
HttpSession session = request.getSession();
session.setAttribute("rs", temp);
response.sendRedirect("S_plug-in.jsp");} else {
String temp = ec.SL("select * from Service");
HttpSession session = request.getSession();
session.setAttribute("rs", temp);
response.sendRedirect("S_plug-in.jsp");}
用戶(hù)(非注冊(cè)用戶(hù)與注冊(cè)用戶(hù))身份的測(cè)試用例,注冊(cè)登錄站點(diǎn),對(duì)個(gè)人應(yīng)用進(jìn)行添加或刪除,管理員登錄站點(diǎn),對(duì)所有應(yīng)用插件進(jìn)行增刪查改等操作,檢測(cè)基本功能的可用性、正確性,在Windows、Android、iOS系統(tǒng)及不同的瀏覽器應(yīng)用環(huán)境下的軟件定義均實(shí)現(xiàn)預(yù)期,通過(guò)多組自定義測(cè)試用例進(jìn)行測(cè)試,測(cè)試符合預(yù)期,測(cè)試統(tǒng)計(jì)結(jié)果如圖2所示。
3 結(jié)語(yǔ)
經(jīng)過(guò)實(shí)現(xiàn)、測(cè)試、投入使用,取得較為顯著的成果,但諸多待改進(jìn)的工作,如算法設(shè)計(jì)、故障恢復(fù)策略等還需要進(jìn)一步的研究。
參考文獻(xiàn)
[1]楊曉燕,姜遇姬.Java應(yīng)用程序自定義交互方法的開(kāi)發(fā)[J].浙江萬(wàn)里學(xué)院學(xué)報(bào),2006,(05):19-21.
[2]曾春,邢春曉,周立柱.個(gè)性化服務(wù)技術(shù)綜述[J].軟件學(xué)報(bào),2002,(10):1952-1961.
[3]劉海雄,陽(yáng)富民,胡貫榮.嵌入式瀏覽器中Cookie技術(shù)的實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì),2003,(06):39-41+45.
[4]姜昌華.插件技術(shù)及其應(yīng)用[J].計(jì)算機(jī)應(yīng)用與軟件,2003,(10):10-11+67.