周紹景 華德志 應(yīng)杰 潘宏斌 楊正元
摘 要:隨著互聯(lián)網(wǎng)的不斷發(fā)展,軟件平臺也不斷增加。平臺用戶不在局限于軟件的使用效率,個性化服務(wù)也逐步變得重要。利用JSP開發(fā)技術(shù)和SQL Server數(shù)據(jù)庫技術(shù)設(shè)計實(shí)現(xiàn)的軟件自定義系統(tǒng),更好地為用戶提供了個性化服務(wù)。
關(guān)鍵詞:軟件平臺;個性化服務(wù);前端自定義
中圖分類號:TP311.52 文獻(xiàn)標(biāo)識碼:A 文章編號:1671-2064(2018)15-0023-02
目前軟件平臺的大幅增加,用戶對平臺的要求不僅是平臺應(yīng)用的穩(wěn)定性和實(shí)用性,還希望有選擇性。實(shí)現(xiàn)軟件應(yīng)用的自定義可增加平臺多樣性[1],使用戶擁有“個性化”服務(wù)[2]。用戶能夠根據(jù)喜好添加或刪除軟件應(yīng)用進(jìn)行自定義。
1 需求分析
軟件自定義是用戶根據(jù)個人喜好添加或刪除軟件服務(wù)模塊的過程。
1.1 視圖需求
自定義界面視圖需要根據(jù)用戶對個人應(yīng)用的修改而變化。站點(diǎn)利用Cookie儲存數(shù)據(jù)[3],JS獲取Cookie中數(shù)據(jù)對頁面做出相應(yīng)改變。用戶方面的視圖需求包括非注冊用戶視圖與注冊用戶視圖兩個方面,二者的區(qū)別在于非注冊用戶只能將數(shù)據(jù)儲存到Cookie中來獲取,而注冊用戶既能將數(shù)據(jù)儲存到Cookie中獲取,也能將數(shù)據(jù)儲存到服務(wù)器中獲取。管理員與注冊用戶相同,修改應(yīng)用插件數(shù)據(jù)既能儲存到Cookie中獲取[4],也能儲存到服務(wù)端獲取。
1.2 功能需求
非注冊用戶訪問站點(diǎn)進(jìn)行應(yīng)用的自定義時,通過Cookie存儲游客的自定義數(shù)據(jù),而登陸用戶訪問站點(diǎn)自定義應(yīng)用時將自定義數(shù)據(jù)儲存到服務(wù)端,同時將數(shù)據(jù)同時存儲到Cookie中以便記錄用戶偏好設(shè)置以及二次使用,業(yè)務(wù)流程如圖1所示。
2 軟件自定義實(shí)現(xiàn)
2.1 視圖實(shí)現(xiàn)
根據(jù)試圖需求,首先創(chuàng)建存儲應(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并儲存修改數(shù)據(jù)后,使用JS代碼獲取Cookie中的數(shù)據(jù),并對數(shù)據(jù)進(jìn)行操作,修改個人應(yīng)用頁面信息,主要代碼: 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);} 而注冊用戶和管理員不僅需要從Cookie中獲取值,還需要從服務(wù)器端獲取值,所以在JSP頁面還需要利用Session獲取服務(wù)器端的值,實(shí)現(xiàn)表達(dá)式:<%=session. getAttribute("fl") %>。 2.2 功能實(shí)現(xiàn) 功能的實(shí)現(xiàn)與視圖的實(shí)現(xiàn)類似,同樣,用戶分為非注冊用戶和注冊用戶。非注冊用戶體驗(yàn)應(yīng)用的添加與刪除,利用Cookie存儲修改數(shù)據(jù),不能將數(shù)據(jù)儲存到服務(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('添加失敗!')}}}
注冊用戶將修改的信息提交服務(wù)端保存,以便下次登陸使用,主要代碼:
管理員主要負(fù)責(zé)應(yīng)用插件的管理(添加或刪除服務(wù)插件),修改插件的數(shù)據(jù)存儲到Cookie與服務(wù)端,Cookie主要代碼參考用戶功能實(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");}
用戶(非注冊用戶與注冊用戶)身份的測試用例,注冊登錄站點(diǎn),對個人應(yīng)用進(jìn)行添加或刪除,管理員登錄站點(diǎn),對所有應(yīng)用插件進(jìn)行增刪查改等操作,檢測基本功能的可用性、正確性,在Windows、Android、iOS系統(tǒng)及不同的瀏覽器應(yīng)用環(huán)境下的軟件定義均實(shí)現(xiàn)預(yù)期,通過多組自定義測試用例進(jìn)行測試,測試符合預(yù)期,測試統(tǒng)計結(jié)果如圖2所示。
3 結(jié)語
經(jīng)過實(shí)現(xiàn)、測試、投入使用,取得較為顯著的成果,但諸多待改進(jìn)的工作,如算法設(shè)計、故障恢復(fù)策略等還需要進(jìn)一步的研究。
參考文獻(xiàn)
[1]楊曉燕,姜遇姬.Java應(yīng)用程序自定義交互方法的開發(fā)[J].浙江萬里學(xué)院學(xué)報,2006,(05):19-21.
[2]曾春,邢春曉,周立柱.個性化服務(wù)技術(shù)綜述[J].軟件學(xué)報,2002,(10):1952-1961.
[3]劉海雄,陽富民,胡貫榮.嵌入式瀏覽器中Cookie技術(shù)的實(shí)現(xiàn)[J].計算機(jī)工程與設(shè)計,2003,(06):39-41+45.
[4]姜昌華.插件技術(shù)及其應(yīng)用[J].計算機(jī)應(yīng)用與軟件,2003,(10):10-11+67.