毕业论文-东南大学-9系-计算机科学与技术_第1页
毕业论文-东南大学-9系-计算机科学与技术_第2页
毕业论文-东南大学-9系-计算机科学与技术_第3页
毕业论文-东南大学-9系-计算机科学与技术_第4页
毕业论文-东南大学-9系-计算机科学与技术_第5页
已阅读5页,还剩57页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

毕业论文-东南大学-9系-计算机科学与技术毕业论文-东南大学-9系-计算机科学与技术/毕业论文-东南大学-9系-计算机科学与技术毕业设计(论文)报告题目彩信网站的建立9系计算机科学与技术专业2000级学号学生姓名指导教师起迄日期年月—年月设计地点南京东南大学、江苏XXXXX科技有限公司论文摘要动态彩信网站的建立摘要本文用采用JAVA语言,研究和完成了彩信动态网站的制作。首先本文先分析了彩信的市场现状和前景,然后研究了一下彩信送彩信SP下发到用户手机的流程通道。接着介绍了一下彩信前台的制作,前台可以采用FrontPage制作,在制作时要特别注意在网页中加的标签。然后着重介绍了网站的几个后台程序,主要是这些程序的功能的实现的方法,信息在网站里的传输,以与各模板的调用。最后,在完成了网站后谈了谈网站测试的方法。测试网站是最重要的是要认真细心,这个过程对于一个网站来说非常重要,应建立长期测试的计划。结果把网站挂到服务器上终于完成了它的预期功能——发送用户点播彩信。ABSTRACTThearticlediscussesandstudiesthedesignandbuildingofMMSdynamicwebsitewithJavalanguage.ThearticlefirstanalyzescurrentsituationandfutureprosperityofMMSmarket.NextitstudiestheflowchannelofMMSfromcertainSPtousers’mobilephones.ThenitintroducesforegroundproductionofwebpageswithFrontPageprogram,payingspecialattentiontothelabelsaffixedtowebpages.Italsointroducesseveralbackgroundprogramsforwebsite,includingtheirfunctionsandapplication,informationtransmissioninsidewebsiteandadoptionofvarioustemplates.Atlast,itdiscussesthetestingmethodforwebsite.Itisveryimportanttosetupalong-termtestingplanforacertainwebsite.Theutmostpurposeofabovediscussionistoestablishthewebsiteonserverandcarryoutitdesignedfunction,totransmitbookedMMStousers’mobilephones.目录第一章引言1.1彩信业务发展的现状与前景……………………51.2彩信网站建立的意义……………6第二章相关技术2.1Java技术…………72.2彩信传送通道……………………8第三章彩信网站的基本组成部分3.1网站前台页面的组成和功能…………………103.2网站的主要后台程序介绍与功能……………113.3网站的数据库主要内容………11第四章彩信网站的总体设计与分析前台页面的制作………………14网页前台效果的制作…………………14网页中的标签…………14概述……………………164.2主要后台程序的编写…………164.2.1用户点播彩信流程图…………………164.2.2控制文件config…………184.2.3方法调用类methods……………………184.2.4index中的功能实现的编写……………194.2.5browse中的功能实现的编写…………224.2.6mmsdiy主要功能实现的编写…………264.2.7mmsdiyconfirm的编写…………………284.2.8Send功能实现的编写…………………29第五章彩信网站的测试……………34展望与总结……………………35致谢………………36参考文献………………………37第一章引言1.1彩信业务发展的现状与前景2002年10月1日,中国移动通信集团公司推出了MMS彩信业务,标志着中国移动通信进入了移动多媒体时代。彩信,英文名是MMS,它是MultimediaMessagingSer-vice的缩写,意为多媒体信息服务。它最大的特色就是支持多媒体功能,能够传递功能全面的内容和信息,这些信息包括文字、图像、声音等各种多媒体格式的信息。多媒体信息使具有功能全面的内容和信息得以传递,这些信息包括图像、音频信息、视频信息、数据以与文本等多媒体信息,可以支持语音、因特网浏览、电子邮件、会议电视等多种高速数据业务,在GPRS网络的支持下,以WAP无线应用协议为载体传送视频片段、图片、声音和文字。多媒体信息业务可实现即时的手机端到端、手机终端到互联网或互联网到手机终端的多媒体信息传送。MMS业务的产生,是移动通信市场拉动和技术推动发展双重作用的结果;MMS业务的推出和发展,又将推动和促进移动通信市场和技术的发展。

MMS已经被业界公认为GPRS和3G市场启动与发展的关键推动力,中国移动通信运营商的MMS业务,将加速中国从2G移动通信网络向3G移动通信网络的演进。

作为一门新技术的应用,MMS将为运营商、系统和终端设备制造商、内容和应用开发商与提供商们提供市场机遇,也将使他们面临新的挑战。因此,如何确定和把握MMS市场机遇,减少市场竞争中的风险,就成为十分重要的课题。如果说过去的2003年是移动通信“彩屏年”的话,分析2004年市场的发展趋势我们依稀看到了“彩信年”的影子。2004年对于彩信的发展而言是关键的一年,产业链各环节都不会忽视这一市场带来的巨大商机,全力促进彩信产业的发展。首先,从终端角度看,在彩屏手机的大幅下降之后,彩信手机价格的“跳水”也完全是可预期的。随着更多的用户能够用得起彩信手机,使用彩信的潜在用户会迅速扩大。2003年彩屏手机价格有了大幅度的降低,与此同时,彩信手机的价格也开始“跳水”。其次,随着SP彩信开发队伍的壮大和产品积累的增加,形成各自特色品牌将成为可能。这将大大丰富彩信的内容,增加对用户的吸引力。在彩信市场日渐成熟的今天,SP们开发彩信产品的水平也有了长足的进步。再次,从运营商方面来看,为拓展市场、加速彩信市场的升温,运营商采取了大规模降价促销活动,这无疑将刺激现有和潜在的用户更多地使用彩信这一传情达意的沟通方式。从目前来看,2004年彩信发展势头良好,这离不开彩信互联互通、内容应用范围的拓展、GPRS网络质量提高等条件的成熟。彩信正逐渐为用户所接受,越来越多地进入了用户的日常生活。2004年,彩信的发展必将跨越一个新的阶段。1.2彩信网站建立的意义在彩信发展的大好形势下,如何抓好市场是一个非常关键的问题。彩业务的终端是用户的手机,用户可以通过两种途径来选择需要的彩信服务。一种是通过手机浏览手机wap;另一种就是通过互联网访问彩信Sp的门户网站。通过手机wap访问,用户的手机必须是彩信手机,这种方式上网的优点是方便灵活,可以随时随地上wap选择自己喜欢的内容。但是通过手机wap访问的缺点也是显而易见的,受手机屏幕的限制,它的浏览不方便,操作繁琐,这在很大程度上影响了用户是用彩信服务的数量。通过门户网站浏览,虽然没有wap那么方便灵活,但是它的信息量之大是wap所无法比拟的。在wap上,用户也需要通过很多操作达到预览一张图片的目的,但是在门户网站上,只需输入地址,就可以大批量的把自己的产品服务展现给用户。所以说,门户网站是彩信业务的一个重点,各家SP都花大精力建设好自己的门户网站。因为门户网站的好坏,会直接影响到SP的彩信业务。我的论文的课题就是建一个彩信业务公司的门户网站。第二章相关技术2.1Java技术Java是Sun公司推出的一种编程语言。它是一种通过解释方式来执行的语言,语法规则和C++类似。同时,Java也是一种跨平台的程序设计语言。用Java语言编写的程序叫做“Applet”(小应用程序),用编译器将它编译成类文件后,将它存在WWW页面中,并在HTML档上作好相应标记,用户端只要装上Java的客户软件就可以在网上直接运行“Applet”。Java非常适合于企业网络和Internet环境,现在已成为Internet中最受欢迎、最有影响的编程语言之一。Java有许多值得称道的优点,如简单、面向对象、分布式、解释性、可靠、安全、结构中立性、可移植性、高性能、多线程、动态性等。Java摈弃了C++中各种弊大于利的功能和许多很少用到的功能。Jave可以运行与任何微处理器,用Java开发的程序可以在网络上传输,并运行于任何客户机上。Java编程语言是一种先进的具有革命性的语言,它融合了完美的语言设计和以前主要可见于专用语言的强大功能。除了核心语言组件外,Java编程语言还发布了许多功能强大的用于数据库,网络和用户界面接口(GUI)等任务的支持软件库。此屏重点讲述Java语言的核心特征。Java语言是一种真正面向对象的编程语言。此点最主要表现在:为了用Java编写程序,你得用面向对象的结构进行工作。面向对象语言为设计那些为再现真实世界里的实体(如汽车、职员、保险制度等等)的程序提供了一个框架。而用非面向对象的语言来再现真实世界的实体是相当困难的,因为,对非面向对象的语言来说,为了描述象汽车这样的实体必须使用一些原始的语言结构类型如Pascal语言中的记录(record)、C语言中的结构(struct)或其他的仅代表数据的类型。在非面向对象的语言中,实体的行为必须被过程或者函数这类语言结构单独处理,“过程化的编程语言”这个名词由此产生。在这种分离下,程序员必须人为地将数据的结构与处理此数据的相关过程联系在一起。与此相反,面向对象语言为用户定义的实体提供了一种更功能强大的结构-“类”(class)。类支持用户定义数据类型的创建如Employee,既包含描述某个特定的employee的数据,也包含对此数据的操作和使用。2.2彩信传送通道多媒体彩信是通过GPRS通道传播数据的。彩信的GPRS通道的数据传输速度相当快,有114kbps每秒,而短信的GSM通道速度仅仅30kbps每秒。彩信的发送路径与短信也很不一样,现在全国仅仅有3个彩信网关,北京网关,湖北网关,广州网关,这个网站是通过北京网关传送的。梦网邮箱梦网邮箱北京MMSC彩信网关WAP网关手机SP网站手机123456彩信发送流程用户在网站上所选的图片移交给北京MMSC网关彩信网关发送信息给WAP网关WAP网关对接受手机发送一条WAPPUSH,以检查用户是否能接受彩信。用户手机根据情况,返回一条信息给WAP网关WAP网关根据手机返回的信息在发送给北京MMSC网关。如果是可以接受,则下发彩信,同时计费;如果用户手机关机或停机或网络不好,北京MMSC彩信网关将保留该彩信48小时。如果手机不支持彩信或手机卡未开通GPRS,北京MMSC彩信网关将把该条彩信发送到梦网邮箱,并且发送一条消息通知手机用户到梦网邮箱收取,同时计费。第三章彩信网站的基本组成部分3.1网站前台页面的组成和功能一个普通的门户网站一般由网站的前台页面、后台程序、数据库组成。彩信网站也不例外。浏览器浏览器Web服务器数据库网站组成框架图网站的前台页面也就是用户所能浏览操作的画面,用户可以在此浏览彩信图片,试听铃声,然后选择所需要的彩信业务。根据网站业务的需要,门户网站前台页面除了主业外还应由其他很多子页。首页(index..htm),这是用户进入网站后的第一个界面,主要向用户展示所有的业务类型。同时也是各种业务的导航。同时还有各个业务下载的排行榜TOP10。在网站注册过的用户可以直接在首页登陆浏览。待机彩图子页(browse02.htm),是待机彩图下载业务的子页,在这里用户将看到很多待机彩图,并可以根据分类浏览,选择自己中意的图片.这个子页也有登陆功能。彩信动画子页(browse01.htm),是彩信动画下载业务的子页,用户在这里将看到详细分类的彩信动画,从而选择自己需要的动画下载。这个子页也有登录功能。和弦铃声子页(browse03.htm),是和弦铃声下载的子页,这里主要是手机来电铃声的下载,用户点击后将可以试听铃声。这个页面也具有用户登陆功能。组合彩信子页(browse04.htm),是组合彩信下载子页,用户将在此看到组合彩信的详细的内容,同样,这个字页也具有用户登陆功能。彩信订阅子页(mmssub.htm),这里是用户选择包月信息服务的,这里的服务是按月收费,每天发送文本消息的。彩信diy子页(mmsdiy.htmmmsdiyconfirm.htm),在这个子页里,用户可以自己选择自己所喜欢的图片铃声文字在组成一条组合彩信。帮助(help),这部分是向用户介绍彩信,以与彩信的接受等操作。点击登录界面(checkin.htm),这个页面是嵌入到首页、待机彩图子页、彩信动画子页、和弦铃声子页、组合彩信子页中的,作用是用户登陆。预览发送界面(sendbefore.htmsend.htmsendafter.htm),用户点击在各自也上选中的图片铃声后,在发送页面中预览试听,然后填入手机号和接受手机号,以与手机类型,再提交给网关发送到相应手机上。注册界面(register.htm),这个界面功能和点击登录界面(checkin.htm)类似,但是点击登录界面不能直接单独的显示在网页中,当数据库显示用户没有注册时,网页自动跳到注册界面,在这里,用户可以注册,如果忘记密码,可以在这里重新通过发送密码到手机上,也可以直接在此登陆。3.2网站的主要后台程序介绍与功能网站的后台程序是网站的核心部分。根据前台页面的具体功能,可以分为了15个类:methods、index、browse、checkin、DecodeRequestStream、getuserinfo、logout、mmsdiy、mmsdiyconfirm、mmssub、MMSSubSender、mmssubstatistics、PhoneBasedUser、send、sendpwd,还有一个config控制文件。1)methods,在这里主要定义了网站调用各个模版的方法。index,这是一个控制主页(index.htm)的类。他的主要功能有:在主页(index.htm)中嵌入点击登陆(checkin.htm)模版,并在登陆成功后显示相应的信息。在相应的标签处显示相应的图片铃声。各个类别的TOP10排行榜。3)browse,在这个类里,包括了待机彩图子页(browse02.htm)、彩信动画子页(browse01.htm)、和弦铃声子页(browse03.htm)、组合彩信子页(browse04.htm)四个网页的具体功能。他的主要功能有:在网页中嵌入点击登陆(checkin.htm)模版,并在登陆成功后显示。显示最新的四张图片动画彩信,和弦铃声子页(browse03.htm)没有这项。显示当前子页的全部内容。显示当前子页的全部类别。分页功能。4)checkin,这个类主要是注册登陆功能。5)DecodeRequestStream,判断用户注册手机号码是否符合条件6)Getuserinfo,用户登陆手机、密码确认7)Logout,输出网站运行的数据8)mmsdiy,这里主要是用户选择铃声和图片文字,组成自己喜欢的彩信,包括从数据库中读取铃声和图片文字。9)mmsdiyconfirm,这个类是用户完成了自选彩信后的发送过程。10)mmssub,这个类用户可以订阅彩信包月信息,也可以取消。11)mmssubstatistics,此类的主要功能是输出mmssub,htm页面。12)MMSSubSender,控制订阅信息发送。13)PhoneBasedUser,用户注册为会员的处理类。14)Send,用户选中所选的彩信铃声图片后发送的过程。15)Sendpwd,发送用户注册手机登陆网站密码。在本文里,我重点讲一下methods、index、browse、mmsdiy、mmsdiyconfirm、send,以与config控制文件。用户在网页上选中的图片铃声信息用户在网页上选中的图片铃声信息移交Sendbefore模版展示所选彩信铃声信息,同时要求用户登陆用户此时是否已登陆否移交图片铃声信息以及用户信息显示图片铃声以及用户信息,同时用户将在此选择手机类型是将图片铃声以及用户信息交给数据库发送给彩信网关在sendafter模板上提示发送成功或失败移交Send功能实现流程图16)Config控制文件,这里面写了很多网站所需要用到的控制信息,调用信息,是彩信网站的重要组成部分。3.3网站的数据库主要内容一个彩信网站的数据库大致有以下功能结构组成:待机彩图目录,其中包含待机彩图id,彩信动画目录和弦铃声目录组合彩信目录注册用户目录发送彩信log目录其他彩信网站的总体设计与分析4.1前台页面的制作4.1.1网页前台效果的制作前台页面制作可以用微软的FrontPage来完成,在制作过程中要注意排版,同时注意超联接地址的正确输入。制作前台网页的一个最重要的问题是标签的设定,后台程序将根据这些标签来作出相应的处理,所以这些标签是相当重要的,一个字母的错误就能导致网站的运行错误。在下一节,我将重点讲述以下本文所述网站前台页面中的标签。4.1.2网页中的标签首页(index..htm)。REGISTER程序将在此处嵌入登陆模板以与登陆成功提示ATOP嵌入彩信动画TOP10PTOP嵌入待机彩图TOP10RTOP嵌入和弦铃声TOP10MTOP嵌入组合彩信TOP10COMMENDAVIEW插入彩信动画预览图片COMMENDASEND插入彩信动画超联接地址COMMENDPVIEW插入待机彩图预览图片COMMENDPSEND插入待机彩图超联接地址RING插入和弦铃声预览歌名COMMENDRSEND插入和弦铃声超联接地址COMMENDMVIEW插入组合彩信预览图片COMMENDMSEND插入组合彩信超联接地址待机彩图子页(browse02.htm)。REGISTER程序将在此处嵌入登陆模板以与登陆成功提示CATEGORIES插入待机彩图的项目中的具体分类NEWCONTENT插入待机彩图最新推荐图片预览与地址OLDCONTENT插入待机彩图图片预览与地址biaoti插入图片名称MOREINFO插入网页分页后的页码数彩信动画子页(browse01.htm)。REGISTER程序将在此处嵌入登陆模板以与登陆成功提示CATEGORIES插入彩信动画的项目中的具体分类NEWCONTENT插入彩信动画最新推荐图片预览与地址OLDCONTENT插入彩信动画图片预览与地址biaoti插入彩信动画名称MOREINFO插入网页分页后的页码数和弦铃声子页(browse03.htm)。REGISTER程序将在此处嵌入登陆模板以与登陆成功提示CATEGORIES插入和弦铃声的项目中的具体分类REVIEW在网页中相应的地方显示试听字样COMMENDRSEND插入和弦铃声的地址biaoti插入和弦铃声名称MOREINFO插入网页分页后的页码数组合彩信子页(browse04.htm)。REGISTER程序将在此处嵌入登陆模板以与登陆成功提示CATEGORIES插入组合彩信的项目中的具体分类NEWCONTENT插入组合彩信最新推荐图片预览与地址OLDCONTENT插入组合彩信图片预览与地址biaoti插入组合彩信名称MOREINFO插入网页分页后的页码数彩信订阅子页(mmssub.htm)。YLXWAREA插入彩信订阅相应项目的按钮XAMJAREA插入彩信订阅相应项目的按钮XPJSAREA插入彩信订阅相应项目的按钮SSSHAREA插入彩信订阅相应项目的按钮ACYZAREA插入彩信订阅相应项目的按钮MRYXAREA插入彩信订阅相应项目的按钮TTCPAREA插入彩信订阅相应项目的按钮MHLZAREA插入彩信订阅相应项目的按钮彩信diy子页(mmsdiy.htm&mmsdiyconfirm.htm)。ORGPIC插入待选图片与名称PICSEL插入选择图片按钮ORGMID插入待选铃声与名称MIDSEL插入选择铃声按钮CURMID插入用户已选的歌曲名称CURTXT插入用户已选的文本内容CURPIC插入用户已选图片预览ORGPICMORE插入图片翻页按钮ORGRINGMORE插入铃声翻页按钮FEE插入彩信diy的价格预览发送界面(sendbefore.htm&send.htm&sendafter.htm)。MMSTYPE插入以选彩信图片铃声的类型TITLE插入以选彩信图片铃声的名称PREVIEW插入以选彩信图片铃声的预览FEEINFO插入以选彩信图片铃声的计费DESC插入发送成功或失败提示4.1.3概述前台页面的制作虽然简单但是却是十分的重要,这不仅仅是因为前台页面是用户的浏览页面,同时也是整个网站的一个输出,所以在制作的时候要细心合理,在考虑到程序的可执行性的同时,还要充分考虑到表面的美观合理。4.2主要后台程序的编写4.2.1用户点播彩信流程图彩信网关用户彩信网关用户首页子页彩信diy彩信订阅浏览选择相应彩信图片铃声发送界面发送成功编辑自选彩信数据库用户手机订阅或取消订阅4.2.2控制文件config。Config控制文件,在一个网站中十分常重要的,网站程序中经常有调用config中的参数信息,还有模板数据库的路径,以与首页图片铃声的选择等等。具体内容有以下几类:TEMPLETDIR模板路径RESOURCEDIR数据库路径DIY_ORG_PIC_DIR彩信diy中图片路经DIY_ORG_MID_DIR彩信diy中铃声路径DIY_ORG_TXT_DIR彩信diy中文字路径DIY_USER_DATA_DIR彩信diy中用户记录DIY_FEE_CODE彩信diy的计费代码COMMENDA1——COMMENDA8#推荐的动画COMMENDP1——COMMENDP8#推荐的彩色图片COMMENDR1——COMMENDR30#推荐的铃声COMMENDM1——COMMENDM4#推荐的组合FEECODE_001——FEECODE_020#计费代码和计费信息Config中定义的参数,在后面的程序中有非常重要的作用。4.2.3方法调用类methods在这个类中,程序主要定义了网页中各个模板的调用方法。从config中定义的模板路径找到相应的模板。下面以index.htm的调用为例publicstaticStringsIndexTemplet————定义模板publicmethods(){}static{sIndexTemplet=null;sIndexTemplet="";————初始化try————定义模板{RandomAccessFilerandomaccessfile=newRandomAccessFile(GetConfig("TEMPLETDIR")+"index.htm","r");Strings;while((s=randomaccessfile.readLine())!=null){sIndexTemplet=sIndexTemplet+s;sIndexTemplet=sIndexTemplet+"\n";}randomaccessfile.close();sIndexTemplet=newString(sIndexTemplet.getBytes("8859_1"),"GB2312");}catch(Exceptionexception)————抛出异常{sIndexTemplet=exception.toString();}}这样,在以后的程序中,只要定义一个String变量=methods.sIndexTemplet,就可以调用到index这个模板了。4.2.4index中的功能实现的编写index.java这个类是对应的index.htm这个模板的。所以index.htm中的具体功能,都要靠index.java来实现。前面我已经讲到,index.htm的具体功能主要有3个:1),嵌入checkin.htm模板;2),插入预览图片和路径;3),图片动画铃声彩信的TOP10功能。嵌入checkin.htm模板,是将模板插入网页中的REGISTER处。当然首先需要调用index模板Strings1=methods.sIndexTemplet;程序根据Strings=(String)httpsession.getValue("mphoneno")获取的mphoneno值开始判断,当前情况下,用户是否已登陆。if(s==null)————未登陆{s1=s1.substring(0,s1.indexOf("REGISTER"))+methods.sCheckInTemplet+s1.substring(s1.indexOf("REGISTER")+8,s1.length());}————在REGISTER处插入methods.sCheckInTempletelse————else,当然是指用户已登陆的情况下了{Strings2="<center><br>用户:"+s+"<br>欢迎您的光临!<br><ahref='/mms/servlet/mms.logout?returnurl=/'>[退出登陆]</a><br><br></center>";s1=s1.substring(0,s1.indexOf("REGISTER"))+s2+s1.substring(s1.indexOf("REGISTER")+8,s1.length());}————登陆过的用户,在REGISTER处插入的就是欢迎您的光临,以与[退出登陆]超联接。插入图片的预览和连接路径,这个在程序上,不管是待机彩图还是彩信动画还是和弦铃声还是组合彩信,代码书写的都是一样的,所不同的就是在网页上的标签不同,所以下面这个功能,我仅以彩信动画为例讲解一下。for(inti=1;i<=8;i++)————因网页上有8个预览项目,所以这里到8终止循环,如果是和弦铃声,因其有30个预览,所以这里循环次数应该设成30次。{Statementstatement=connection.createStatement();ResultSetresultset=statement.executeQuery("selecttitle,channel,category,pre_path,feefrommms_datawhereid="+methods.GetConfig("COMMENDA"+i));————从数据库中查取config文件所指定的动画的资料:title,channel,category,pre_path,fee。if(resultset.next()){s1=s1.substring(0,s1.indexOf("COMMENDAVIEW"))+"/mms/resource/"+resultset.getString("pre_path")+s1.substring(s1.indexOf("COMMENDAVIEW")+12,s1.length());————在COMMENDAVIEW处插入预览图片,pre_path:预览图片路径s1=s1.substring(0,s1.indexOf("COMMENDASEND"))+"/mms/servlet/mms.send?fee="+resultset.getString("fee")+"&channel="+resultset.getString("channel")+"&category="+resultset.getString("category")+"&title="+resultset.getString("title")+s1.substring(s1.indexOf("COMMENDASEND")+12,s1.length());————在COMMENDASEND处插入图片的下载路径以与信息。}resultset.close();statement.close();}TOP10,不管待机彩图还是彩信动画还是和弦铃声还是组合彩信,程序上的原理也是一样,不同的也仅仅是标签的不同。所以这里我还是以彩信动画为例讲解。Hashtablehashtable=newHashtable();hashtable.clear();intl=0;Statementstatement3=connection.createStatement();ResultSetresultset3=statement3.executeQuery("selecttitle,channel,category,feefrommms_datawherechannel='01'orderbydcountdesc");————从数据库中读取相应的channel='01'(彩信动画)数据label0:do{doif(!resultset3.next())breaklabel0;while(hashtable.get(resultset3.getString("title"))!=null);hashtable.put(resultset3.getString("title"),"FLAG");s1=s1.substring(0,s1.indexOf("ATOP"))+"<ahref='#'onclick=\"opensendwindow('/mms/servlet/mms.send?fee="+resultset3.getString("fee")+"&channel="+resultset3.getString("channel")+"&category="+resultset3.getString("category")+"&title="+resultset3.getString("title")+"')\">"+resultset3.getString("title")+"</a>"+s1.substring(s1.indexOf("ATOP")+4,s1.length());————循环依次进行,在ATOP处插入标题与图片下在路径信息} while(++l<10);resultset3.close();statement3.close();————当循环不符合++1<10的条件时,循环终止.到此,index.htm的主要功能都实现了。类中的导入其他包,抛出异常等等,在这里不作详细的讲解了。4.2.5browse中的功能实现的编写browse.java同时实现了待机彩图模板(browse02.htm)、彩信动画模板(browse01.htm)、和弦铃声模板(browse03.htm)、组合彩信模板(browse04.htm)中的功能。在以上待机彩图模板(browse02.htm)、彩信动画模板(browse01.htm)、和弦铃声模板(browse03.htm)、组合彩信模板(browse04.htm)中,具体功能效果都类似,这方便了程序的编写,但是需要完成网页模块的调用功能。因为在methods.java中已经定义了各模板的调用方法,所以我们在编写browse.java的过程中,要紧紧和methods.java中的内容结合起来。以彩信动画模板(browse01.htm)为例。可以用StringsBrowse01Templet=methods.sBrowse01Templet;来定义当前的模板为sBrowse01Templet模板,于是下面的一系列处理中,所有程序代码都是基于sBrowse01Templet这个模板进行。但是其中又存在一个选择模板问题,因为用户先选择,然后才由程序来调用所需要的模板。这里根据前台网页中事先设定的值,在程序中加以判断就可以完成。Mmstype=02browse02.htmMmstype=01browse01.htmMmstype=03browse03.htmMmstype=04browse04.htm判断的语句:StringsChannel=request.getParameter("mmstype");—————定义sChannel为从前台网页上读取的mmstype值if(sChannel.equals("01")) {StringsBrowse01Templet=methods.sBrowse01Templet;。。。。。。。。。。。。。。。————这段程序都是基于Browse01Templet模板的out.println(sBrowse01Templet); out.close();————输出Browse01Templet内容后结束程序 }elseif(sChannel.equals("02")) { StringsBrowse02Templet=methods.sBrowse02Templet;。。。。。。。。。。。。。。。————这段程序都是基于Browse02Templet模板的out.println(sBrowse02Templet); out.close();————输出Browse02Templet内容后结束程序 }elseif(sChannel.equals("03")) { StringsBrowse03Templet=methods.sBrowse03Templet;。。。。。。。。。。。。。。。————这段程序都是基于Browse03Templet模板的out.println(sBrowse03Templet); out.close();————输出Browse03Templet内容后结束程序 }elseif(sChannel.equals("04")) { StringsBrowse04Templet=methods.sBrowse04Templet;。。。。。。。。。。。。。。。————这段程序都是基于Browse04Templet模板的out.println(sBrowse04Templet); out.close();————输出Browse04Templet内容后结束程序 }这些便是browse.java中调用多个模板的方法。完成了页面的调用,下面我以彩信动画模板(browse01.htm)为例,具体阐述一下网页中的功能的实现。首先,在彩信动画模板(browse01.htm)中,也具有用户登陆功能,这里的代码和4.2.4index中的功能实现的编写中讲述的完全一样。这里就不再做解释。在彩信动画中,又分为好多种类,这个地方是根据数据库中的分类,取出后插入前台页面事先设的标签“CATEGORIES”处。StringsCategories="";————声明CATEGORIES同时初始化ResultSetr;for(r=stmt.executeQuery("selectname,idfrommms_categorywhereidlike'"+sChannel+"%'orderbyid");r.next();)————连接数据库,从数据库中取出当前sChannel下的所有类名,放入r中,并循环,直到全部取完为止。sCategories=sCategories+("-<ahref='/mms/servlet/mms.browse?mmstype="+sChannel+"&category="+r.getString("id")+"'>"+r.getString("name")+"</a><br>");————将取出的类名插入到网页中设定的标签sCategories处。r.close();————操作完成,关闭r。这样,在网页上就能显示全部的数据库中彩信动画的类别。这种从数据库中取出分类名称的做法,比在网页上设定好类别名称的做法,最大的好处是灵活,便于品种类别的更新,当你新增加一个类别的时候,你在数据库中增加后,不需要再在网页上有任何修改。在子页中的图片预览与首页中的不一样,而且多了一个标签用来放入图片名称。这些图片使用一个dowhile(++iNum-iStart<n)来完成的,n是在前台页面中设的标签数目。r=stmt.executeQuery("selecttitle,pre_path,pre_view,dcount,feefrommms_datawherechannel='"+sChannel+"'andcategory='"+sCategory+"'orderbyinputdatedesc");————从数据库中取出相应的信息,同时放入r中。if(r.getInt("pre_view")!=0)sTmp="<ahref='#'onclick=\"opensendwindow('/mms/servlet/mms.send?fee="+r.getString("fee")+"&channel="+sChannel+"&category="+sCategory+"&title="+r.getString(1)+"')\"><imgborder='1'src=\"/mms/resource/"+r.getString("pre_path")+"\"width=\"101\"height=\"80\"></a><br>";————当pre_view值不为0,说明有预览图片,则在网页中嵌入图片预览以与链接路径。elsesTmp="<ahref='#'onclick=\"opensendwindow('/mms/servlet/mms.send?fee="+r.getString("fee")+"&channel="+sChannel+"&category="+sCategory+"&title="+r.getString(1)+"')\"><imgborder='1'src=\"/mms/IMAGES/ringview.gif\"width=\"101\"height=\"80\"></a><br>";————else指没有预览图片,则在网页中嵌入指定的图片,同时嵌入该条彩信的连接路径。在和弦铃声子页(browse03.htm)中,不存在预览的功能,所以嵌入连接路径时,没有用到判断pre_view。这里的做法和首页中的预览相同。sBrowse03Templet=sBrowse03Templet.substring(0,sBrowse03Templet.indexOf("REVIEW"))+"试听"+sBrowse03Templet.substring(sBrowse03Templet.indexOf("REVIEW")+6,sBrowse03Templet.length());————在指定标签REVIEW处加入汉字“试听”。sBrowse03Templet=sBrowse03Templet.substring(0,sBrowse03Templet.indexOf("COMMENDRSEND"))+"/mms/servlet/mms.send?fee="+r.getString("fee")+"&channel="+sChannel+"&category="+sCategory+"&title="+r.getString("title")+""+sBrowse03Templet.substring(sBrowse03Templet.indexOf("COMMENDRSEND")+12,sBrowse03Templet.length());————在COMMENDRSEND处插入连接路径。 sBrowse03Templet=sBrowse03Templet.substring(0,sBrowse03Templet.indexOf("biaoti"))+r.getString("title")+sBrowse03Templet.substring(sBrowse03Templet.indexOf("biaoti")+11,sBrowse03Templet.length());————在biaoti处加入歌曲名,此前已通过数据库取出放入r中。完成图片预览后,又出现了一个问题,每一类中的图片铃声都很多,不是一页所能完全显示得完的。于是,网页中的分页功能是必不可少的。if(r.next()){intiPage=r.getInt(1)%16;————这里求余,然后余数付值给iPage,当每页有16个标签放入图片时,则除16求余,但在铃声子页中,每页能显示21个项目,所以应该改为除21求余。if(iPage==0)iPage=r.getInt(1)/16;————如果iPage为零,则重新将总页数付值给iPage,此时表示总图片动画数正好是16的整数。elseiPage=r.getInt(1)/16+1;————如果iPage不为零,则在r.getInt(1)/16后,再加一,然后付值给iPage,之所以加一,是用来存放多余的那iPage张图片。 StringsTmp="共"+iPage+"页";————声明sTmp变量for(inti=1;i<=iPage;i++)sTmp=sTmp+("<ahref='mms.browse?mmstype="+sChannel+"&category="+sCategory+"&start="+(i-1)*16+"'>["+i+"]</a>");————在sTmp中再加入每一页的链接sBrowse02Templet=sBrowse02Templet.substring(0,sBrowse02Templet.indexOf("MOREINFO"))+sTmp+sBrowse02Templet.substring(sBrowse02Templet.indexOf("MOREINFO")+8,sBrowse02Templet.length()); }————将sTmp中的内容,插入到前台页面标签MOREINFO处,然后输出到网页上去。这样,browse.java中的主要功能都已完成。4.2.6mmsdiy主要功能实现的编写mmsdiy是一个用户自己根据网页列出的图片铃声文字自组彩信的服务。这部分的功能与前两节基本上相同,包括预览和分页功能。刚进入mmsdiy页面,网页自动默认CURMID,CURTXT,CURPIC值,这其实就是一个初始化的问题。if(hs.getValue("CURPIC")==null){hs.putValue("CURPIC",sOrgPic[0]);}在这个模板中,因为版面限制,所以不能像前面browse中把所有页数都设成超链接。这里可以采用上一页||下一页的方式翻页,以铃声为例。StringsRingMore="<center>";if(iRingStart>0){sRingMore=sRingMore+("<ahref='mms.mmsdiy?picstart="+iPicStart+"&ringstart="+(iRingStart-12)+"'>\u4E0A\u4E00\u9875</a>");}————上一页if(iRingStart+12<sOrgMid.length){sRingMore=sRingMore+("<ahref='mms.mmsdiy?picstart="+iPicStart+"&ringstart="+(iRingStart+12)+"'>\u4E0B\u4E00\u9875</a>");}————上一页下一页sRingMore=sRingMore+"<center>";————在网页上居中显示sMMSDIYTemplet=sMMSDIYTemplet.substring(0,sMMSDIYTemplet.indexOf("ORGRINGMORE"))+sRingMore+sMMSDIYTemplet.substring(sMMSDIYTemplet.indexOf("ORGRINGMORE")+11,sMMSDIYTemplet.length());————在网页上输出翻页到标签ORGRINGMORE处。用户选中各项后sMMSDIYTemplet=sMMSDIYTemplet.substring(0,sMMSDIYTemplet.indexOf("CURPIC"))+"/mms/resource/DIY/ORGDATA/ANIPIC/"+hs.getValue("CURPIC")+sMMSDIYTemplet.substring(sMMSDIYTemplet.indexOf("CURPIC")+6,sMMSDIYTemplet.length());————在模板上CURPIC显示预览图片StringsMIDName=(String)hs.getValue("CURMID");sMIDName=sMIDName.substring(0,sMIDName.indexOf("."));sMMSDIYTemplet=sMMSDIYTemplet.substring(0,sMMSDIYTemplet.indexOf("CURMID"))+sMIDName+sMMSDIYTemplet.substring(sMMSDIYTemplet.indexOf("CURMID")+6,sMMSDIYTemplet.length());————在CURMID处显示用户点的歌名sMMSDIYTemplet=sMMSDIYTemplet.substring(0,sMMSDIYTemplet.indexOf("CURTXT"))+hs.getValue("CURTXT")+sMMSDIYTemplet.substring(sMMSDIYTemplet.indexOf("CURTXT")+6,sMMSDIYTemplet.length());————在CURTXT处显示用户编辑的文本内容在选择完成之后用户点击“确定发送”,提交信息进入下一界面。如果此时用户已登陆,则进入下一界面,如没有则进入登陆界面然后进入下一界面4.2.7mmsdiyconfirm的编写mmsdiyconfirm的主要作用就是显示用户选择的图片,同时显示发送成功界面。在doGet中,程序将用户选择的组合彩信显示出来。sMMSDIYTemplet=sMMSDIYTemplet.substring(0,sMMSDIYTemplet.indexOf("CURMID"))+sMIDName+sMMSDIYTemplet.substring(sMMSDIYTemplet.indexOf("CURMID")+6,sMMSDIYTemplet.length());————CURMID处显示歌曲名sMMSDIYTemplet=sMMSDIYTemplet.substring(0,sMMSDIYTemplet.indexOf("CURTXT"))+hs.getValue("CURTXT")+sMMSDIYTemplet.substring(sMMSDIYTemplet.indexOf("CURTXT")+6,sMMSDIYTemplet.length());————CURTXT处显示用户编辑的文字信息sMMSDIYTemplet=sMMSDIYTemplet.substring(0,sMMSDIYTemplet.indexOf("MPHONENO"))+sMphoneNo+sMMSDIYTemplet.substring(sMMSDIYTemplet.indexOf("MPHONENO")+8,sMMSDIYTemplet.length());————MPHONENO处显示用户接受手机sMMSDIYTemplet=sMMSDIYTemplet.substring(0,sMMSDIYTemplet.indexOf("FEE"))+newString(methods.GetConfig("FEECODE_"+methods.GetConfig("DIY_FEE_CODE")).getBytes("8859_1"),"GB2312")+sMMSDIYTemplet.substring(sMMSDIYTemplet.indexOf("FEE")+3,sMMSDIYTemplet.length());————FEE处显示从Config中取出的FEECODE,即此条自制组合彩信的收费价格。在doPost中,程序则MMSGateWayConnection.send(mm);即将此条彩信交给彩信网关。然后程序将out.println发送成功界面:out.println("\u6807\u9898:"+newString(request.getParameter("title").getBytes("8859_1"),"GB2312")+"<br>");————该条彩信的标题out.println("\u53D1\u9001\u624B\u673A:"+hs.getValue("mphoneno")+"<br>");————该条彩信的发送手机号码,网关将产生一条计费话单,从该号码上扣费。out.println("\u63A5\u53D7\u624B\u673A:"+request.getParameter("mphoneno")+"<br>");————接受彩信号码out.println("\u52A8\u753B/\u56FE\u7247:"+hs.getValue("CURPIC")+"<br>");————用户所选动画图片名称out.println("\u548C\u5F26\u94C3\u58F0:"+hs.getValue("CURMID")+"<br>");————用户所选和弦铃声名称out.println("\u643A\u5E26\u6587\u5B57:"+hs.getValue("CURTXT")+"<br><br>");————用户所编辑文字信息out.println("\u5F69\u4FE1\u53D1\u9001\u8BF7\u6C42\u5DF2\u7ECF\u6210\u529F\u9012\u4EA4!")————“彩信发送请求已经成功递交!”接下来,用户所要做的就是在自己手机上接受此条彩信了。4.2.8Send功能实现的编写用户在首页或各子页选择了所中意的图片动画铃声组合彩信后,并不是一次点播交易的完成,如何将用户的选择变成企业的利润,就需要通过seng.java来将用户选择的图片动画铃声组合彩信发送到用户指定手机上,已完成交易。显而易见,send.java的作用是多么重要。企业的彩信网站是给用户欣赏图片还是给用户下载以实现获取利润,send.java是实现交易的一步。既然是向用户交易当然要先给用户看产品了,所以send.java所调用的三个模板(sendbefore.htm&send.htm&sendafter.htm),都具有预览和试听功能。说到调用模板,send.java调用的三个模板又先后次序的,并不像browse.java那样是并列的模板.N首页或子页N首页或子页Sendbefore.htmSend.htmSendafter.htm用户是否已登陆Y登陆用户彩信网关下发递交彩信发送中send.java调用各模板示意图在send.java中,模板的调用是靠一个if语句来判断的。StringsMphoneNo=(String)hs.getValue("mphoneno");————程序从网页上读取mphoneno值,然后付值给sMphoneNoif(sMphoneNo==null)sSendTemplet=methods.sSendBeforeTemplet;————判断sMphoneNo是否为空,if为空,则调用SendBefore模板用户将在SendBefore模板上先登陆。elsesSendTemplet=methods.sSendTemplet;————else就是有号码了,即指用户当前处于登陆状态,可直接进入Send模板。不管是SendBefore模板还是Send模板,他们都具有预览和试听功能。当用户点击首页或子页的彩信项目后,该彩信的一系列数据将送入send.java中。有mphoneno、fee、channel、category、title。Send.java得到他们后,通过SQL语句从数据库中查寻该彩信的其他一些数据。r=stmt.executeQuery("selectid,pre_view,pre_path,mobtype,mobtypemore,title,moredescfrommms_datawherechannel='"+sChannel+"'andcategory='"+sCategory+"'andtitle='"+sTitle+"'");)————在数据库中取出相应的值。有了这些值之后,就可以在网页上完成预览与试听功能了。根据从数据库中取得的值pre_view(预览图片值)判断,如果pre_view=0,则可以判断,该彩信是铃声,因为铃声是没有预览图片的。sSendTemplet=sSendTemplet.substring(0,sSendTemplet.indexOf("PREVIEW"))+"/mms/IMAGES/ringview.gif"+sSendTemplet.substring(sSendTemplet.indexOf("PREVIEW")+7,sSendTemplet.length());————网页上不能因为没有预览图片就空在那,所以专门为所有铃声准备了一张图片ringview.gif。sSendTemplet=sSendTemplet.substring(0,sSendTemplet.indexOf("<!--BGMIDI-->"))+"<bgsoundsrc='"+"/mms/resource/"+r.getString("pre_path")+"'loop=-1>"+sSendTemplet.substring(sSendTemplet.indexOf("<!--BGMIDI-->")+13,sSendTemplet.length());————将预览路径所指定的mid音乐文件插入网页中的<!--BGMIDI-->处,当网页打开后,播放该文件,即铃声的试听。讲到在网页中嵌入铃声,就要说一下send.java控制的3块模板中在制作时加了一个播放铃声的标签<!--BGMIDI-->,它是不会在网页上显示出来的。如果pre_view=1,则程序判断是待机彩图或动画,二者都是有预览图片的。sSendTemplet=sSendTemplet.substring(0,sSendTemplet.indexOf("PREVIEW"))+"/mms/resource/"+r.getString("pre_path")+sSendTemplet.substring(sSendTemplet.indexOf("PREVIEW")+7,sSendTemplet.length());————将pre_path所指的图片放入PREVIEW中if(r.getInt("pre_view")==0){}elseif(r.getInt("pre_view")==1){}else{}最后一个else是指组合彩信,组合彩信有图片有铃声。sSendTemplet=sSendTemplet.substring(0,sSendTemplet.indexOf("PREVIEW"))+"/mms/resource/"+r.getS

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论