周绍景 华德志 应杰 潘宏斌 杨正元
摘 要:随着互联网的不断发展,软件平台也不断增加。平台用户不在局限于软件的使用效率,个性化服务也逐步变得重要。利用JSP开发技术和SQL Server数据库技术设计实现的软件自定义系统,更好地为用户提供了个性化服务。
关键词:软件平台;个性化服务;前端自定义
中图分类号:TP311.52 文献标识码:A 文章编号:1671-2064(2018)15-0023-02
目前软件平台的大幅增加,用户对平台的要求不仅是平台应用的稳定性和实用性,还希望有选择性。实现软件应用的自定义可增加平台多样性[1],使用户拥有“个性化”服务[2]。用户能够根据喜好添加或删除软件应用进行自定义。
1 需求分析
软件自定义是用户根据个人喜好添加或删除软件服务模块的过程。
1.1 视图需求
自定义界面视图需要根据用户对个人应用的修改而变化。站点利用Cookie储存数据[3],JS获取Cookie中数据对页面做出相应改变。用户方面的视图需求包括非注册用户视图与注册用户视图两个方面,二者的区别在于非注册用户只能将数据储存到Cookie中来获取,而注册用户既能将数据储存到Cookie中获取,也能将数据储存到服务器中获取。管理员与注册用户相同,修改应用插件数据既能储存到Cookie中获取[4],也能储存到服务端获取。
1.2 功能需求
非注册用户访问站点进行应用的自定义时,通过Cookie存储游客的自定义数据,而登陆用户访问站点自定义应用时将自定义数据储存到服务端,同时将数据同时存储到Cookie中以便记录用户偏好设置以及二次使用,业务流程如图1所示。
2 软件自定义实现
2.1 视图实现
根据试图需求,首先创建存储应用数据的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())}} 創建Cookie并储存修改数据后,使用JS代码获取Cookie中的数据,并对数据进行操作,修改个人应用页面信息,主要代码: 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中获取值,还需要从服务器端获取值,所以在JSP页面还需要利用Session获取服务器端的值,实现表达式:<%=session. getAttribute("fl") %>。 2.2 功能实现 功能的实现与视图的实现类似,同样,用户分为非注册用户和注册用户。非注册用户体验应用的添加与删除,利用Cookie存储修改数据,不能将数据储存到服务器端,主要代码: 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('添加失败!')}}}
注册用户将修改的信息提交服务端保存,以便下次登陆使用,主要代码:
管理员主要负责应用插件的管理(添加或删除服务插件),修改插件的数据存储到Cookie与服务端,Cookie主要代码参考用户功能实现,服务器端的主要代码:
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");}
用戶(非注册用户与注册用户)身份的测试用例,注册登录站点,对个人应用进行添加或删除,管理员登录站点,对所有应用插件进行增删查改等操作,检测基本功能的可用性、正确性,在Windows、Android、iOS系统及不同的浏览器应用环境下的软件定义均实现预期,通过多组自定义测试用例进行测试,测试符合预期,测试统计结果如图2所示。
3 结语
经过实现、测试、投入使用,取得较为显著的成果,但诸多待改进的工作,如算法设计、故障恢复策略等还需要进一步的研究。
参考文献
[1]杨晓燕,姜遇姬.Java应用程序自定义交互方法的开发[J].浙江万里学院学报,2006,(05):19-21.
[2]曾春,邢春晓,周立柱.个性化服务技术综述[J].软件学报,2002,(10):1952-1961.
[3]刘海雄,阳富民,胡贯荣.嵌入式浏览器中Cookie技术的实现[J].计算机工程与设计,2003,(06):39-41+45.
[4]姜昌华.插件技术及其应用[J].计算机应用与软件,2003,(10):10-11+67.