资源描述
辽宁工程技术大学
大型软件工程实训报告
教学单位 软件学院
专 业 软件工程
班 级
学生姓名
学 号
指导教师
目录
一、实训目的 2
二、实训时间和地点 3
三、实训单位简介 3
四、实训内容 3
实训期间完成的学习任务 4
实训期间完成的实践工程 7
需求分析 7
数据需求分析 10
概要设计 10
详细设计 13
系统实现及编码 14
测试 31
五、实训收获与体会 32
六、致谢 32
一、实训目的
为了将大学和培训中心所学的东西应用到实际开发和工程应用中。提高自己的专业技能、编码能力、问题解决能力。了解所做工程某一模块和这一模块跟其他模块的功能、流程。使用JSP,Spring应用框架和Oracle10g数据库技术进行对国内工程开发,在开发过程中使用SVN进行代码同意管理和统一。最后通过公司测试库进行测试,最后将工程上线。完成整个软件工程开发周期,在工程开发各实施阶段严格进行评审,以保证工程质量。
二、实训时间和地点
1.实训时间:2013年12月9日~2014年1月17日
2.实训地点:大连华信计算机技术股份
三、实训单位简介
大连华信计算机技术股份是一家面向全球客户提供领先的应用软件产品、信息效劳及行业解决方案的供给商。经过多年的开展,大连华信已经成长为一家以软件技术为核心,提供从软件设计、开发、测试、实施到后期的培训、维护效劳和业务咨询全面解决方案的提供商。大连华信的软件技术和信息效劳应用于电信、电力、公共、金融、保险、交通、物流、传媒、制造业等多个行业,帮助国内外400多家客户改善工作质量,有效提升客户价值。作为国内较早进入日本市场的软件企业之一,大连华信在对日软件外包效劳业务领域取得了长足的开展,并与众多日本知名企业建立了良好的合作关系。强大的技术实力、科学的管理机制带来了丰硕的成果。国内市场,大连华信作为行业解决方案的提供商,在电信、保险、政府、ERP等领域有着丰富的经验,成功案例遍布全国270多个城市。
2002年,在全国软件出口排行榜中,大连华信荣登榜首,2003年,大连华信又凭借软件出口的雄厚实力荣膺“2003年最具竞争力的中国软件企业〞称号,2004年入围中国软件产业最大规模前100家企业。
2021年软件开发营业额到达7亿多元人民币,规模到达6000人,是中国最大IT外包商之一。
作为中国软件行业的新领军者,大连华信是国家规划布局内重点软件企业、中国软件产业最大规模前100家企业,技术水平居于国内同行业领先地位,具有国家计算机信息系统集成一级资质,并获得了ISO9001:2021、CMM5级、ISO27001:2005、ISO14001:2004、PIPA(个人信息保护合格证书,与日本的P-MARK互认)等资质认证。
在技术竞争日益剧烈的今天,立足国内和日本市场,拓展欧美市场是大连华信国际化的开展战略。大连华信将继续提高整体核心竞争力,实现可持续增长,
成为国内最优秀的应用系统效劳提供商、系统集成效劳提供商和软件外包效劳提供商。
四、实训内容
Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台〔即JavaSE, JavaEE, JavaME〕的总称。Java 技术具有卓越的通用性、高效性、平台移植性和平安性,广泛应用于个人PC、数据中心、游戏控制台、科学级超级计算机、移动 和互联网,同时拥有全球最大的开发者专业社群。在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。后来Sun公司被甲骨文公司并购,Java也随之成为甲骨文公司的产品。
Java是一种软件技术是一种由美国SUN计算机公司所研究而成的语言是一种为Internet开展的计算机语言是一种使网页产生生动活泼画面的语言是一种使网页由静态(Static)转变为动态(Dynamic)的语言是一种语言,用以产生「小应用程序」是一种简化的C++语言是一种平安的语言,具有阻绝计算机病毒传输的功能是一种将平安性列为第一优先考虑的语言是一种使用者不需花费很多时间学习的语言是一种突破用户端机器环境和CPU结构的语言是一种写一次,即可在任何机器上执行的语言是有史以来,第一套允使用者将应用程序通过Internet从远端的效劳器传输到本地端的机器上并执行。
ORACLE数据库系统是美国ORACLE公司〔甲骨文〕提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/效劳器(CLIENT/SERVER)或B/S体系结构的数据库之一。比方SilverStream就是基于数据库的一种中间件。ORACLE数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产
品;作为分布式数据库它实现了分布式处理功能。但它的所有知识,只要在一种机型上学习了ORACLE知识,便能在各种类型的机器上使用它。
主要功能特点首先完整的数据管理功能:数据的大量性、数据的保存的持久性、数据的共享性、数据的可靠性。完备关系的产品:信息准那么---关系型DBMS的所有信息都应在逻辑上用一种方法,即表中的值显式地表示;保证访问的准那么;视图更新准那么---只要形成视图的表中的数据变化了,相应的视图中的数据同时变化;数据物理性和逻辑性独立准那么。分布式处理功能:ORACLE数据库自第5版起就提供了分布式处理能力,到第7版就有比拟完善的分布式数据库功能了,一个ORACLE分布式数据库由oracle rdbms、sql*Net、SQL*CONNECT
和其他非ORACLE的关系型产品构成。
Java Web,是用Java技术来解决相关web互联网领域的技术总和。web包括:web效劳器和web客户端两局部。Java在客户端的应用有java applet不过现在使用的很少,Java在效劳器端的应用非常的丰富,比方Servlet,JSP和第三方框架等等。Java技术对Web领域的开展注入了强大的动力。
Java EE标准,这意味着有很大的市场需求和更多的工作时机,上手快速并且相对容易,有大量可用的组件库。对覆盖绑定〔overriding binding〕、验证〔validation〕等提供生命周期管理。与许多表示层技术/框架无缝集成:JSP/JSTL、Tiles、Velocity、FreeMarker、Excel、XSL、PDF等。便于测试归功于IoC不需要书写XML配置文件,良好的学习文档。架构简单易于扩展,标记库很容易利用FreeMarker或者Velocity来定制,基于控制器或者基于页面的导航。一旦学会它,将极大地提高生产率。HTML模板对页面设计师非常有利每出一个新版本,都会有大量的创新。对Java开发者有利,页面和显示绑定紧密。Java Web其实就是一个技术的总和,把Web看成一个容器而已主要使用JavaEE技术来实现.在加上各种中间件(SSH等)JavaWeb其实做什么都可以,你可以通过JavaWeb制作一个软件,一个ERP,一个网页,甚至是一个网络游戏都可以。没有特定的范畴。在加上Java的可移植性,现在普遍用于各种ERP,大型交互式网站的开发。
Struts最早是作为ApacheJakarta工程的组成局部,工程的创立者希望通过对该工程的研究,改良和提高JavaServer Pages 、Servlet、标签库以及面向对象的技术水准。Struts这个名字来源于在建
筑和旧式飞机中使用的支持金属架。这个框架之所以叫"Struts",是为了提醒我们记住那些支撑我们房屋,建筑,桥梁,甚至我们踩高跷时候的根底支撑。这也是一个解释Struts在开发Web应用程序中所扮演的角色的精彩描述。当建立一个物理建筑时,建筑工程师使用支柱为建筑的每一层提供支持。同样,软件工程师使用Struts为业务应用的每一层提供支持。它的目的是为了帮助我们减少在运用MVC设计模型来开发Web应用的时间。我们仍然需要学习和应用该架构,不过它将可以完成其中一些繁重的工作。如果想混合使用Servlets和JSP的优点来建立可扩展的应用,Struts是一个不错的选择。
早期Smalltalk程序语言便采用了MVC(Model-View -Controller) 模式( Patterns ) 以增加程序代码弹性,MVC模式将程序代码整理切割为三局部,Model 局部是业务与应用领域〔 Business domain) 相关逻辑、管理状态之对象,Controller 局部接收来自View 所输入的资料并与Model 局部互动,
是业务流程控制〔 Flow Control) 之处,View 局部那么负责展现资料、接收使用者输入资料。在Java 应用中,JFC/Swing、AWT、JSP皆是可用作View 的技术规格,而JavaBean 与Enterprise JavaBean 规格那么可用于Model程序代码,一旦应用程序以MVC 模式加以适当的分割,Model 局部程序代码可在不同使用者接口外观的应用程序中重复使用。
随着JSP 与Servlet 技术大量应用于以Web 为根底的应用程序,Java 开发人员群体认为应以较佳的模式以提升Web 应用程序的可维护性与重复使用性。早期JSP 规格书中曾列举两种可行之JSP 应用架构,分别为Model1 与Model 2。
在Model 1 架构中,JSP 直接处理Web浏览器送来的请求〔 Request 〕,并辅以JavaBean 处理应用相关逻辑。Model 1 架构单纯编写比拟容易,但在Model 1 中JSP 可能同时肩负View 与Controller 角色,两类程序代码有可能混杂而不易维护。而Model 2 中将Servlet 纳入架构中扮演前端Controller 角色,将Web浏览器送出的请求集中送至Servlet ,Servlet 可集中管理使用者登入、权限控制、多国语言转换等前置处理,再视需求转向给对应的JSP 处理。Model 2 中采用了较佳的MVC 模式,但增加了编写复杂度。
Spring是一个开源框架,它由Rod Johnson创立。它是为了解决企业应用开发的复杂性而创立的。Spring使用根本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于效劳器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。
Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。
轻量——从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微缺乏道的。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。
控制反转——Spring通过一种称作控制反转〔IoC〕的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创立或者查找依赖对象。你可以认为IoC与JNDI相反——不是对象沉着器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。
面向切面——Spring提供了面向切面编程的丰富支持,允许通过别离应用的业务逻辑与系统级效劳〔例如审计〔auditing〕和事务〔transaction〕管理〕进行内聚性的开发。应用对象只实现它们应该做的——完成业务逻辑——仅此而已。它们并不负责〔甚至是意识〕其它的系统级关注点,例如日志或事务支持。
容器——Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你可以配置你的每个bean如何被创立——基于一个可配置原型〔prototype〕,你的bean可以创立一个单独的实例或者每次需要时都生成一个新的实例——以及它们是如何相互关联的。然而,Spring不应该被混淆于传统的重量级的EJB容器,它们经常是庞大与笨重的,难以使用。
框架——Spring可以将简单的组件配置、组合成为复杂的应用。在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里。Spring也提供了很多根底功能〔事务管理、持久化框架集成等等〕,将应用逻辑的开发留给了你。
所有Spring的这些特征使你能够编写更干净、更可管理、并且更易于测试的代码。它们也为Spring中的各种模块提供了根底支持。
4.2实训期间完成的实践工程
根据整个OSS系统进行OTTTV属性页面的编辑,该页面功能为对数据的添加、修改、删除、查询。
需求分析
随着中国参加WTO,人们已经认识到中国网络产业已翻过了历史性的一页,新一代的OSS系统建设在各运营商那里近乎默契的同时启动,标志着电信业正在由第一阶段的"资源竞争"转向到第二阶段的"业务竞争"。国内外各电信运营商之间的竞争越来越剧烈。有些国内的电信运营企业还有一种传统的观念就是将开展的重点放在电信网络根底设施和网络的运行及管理建设上,以资源优势来应对国外资本和企业的挑战,但是我们认为在电信网络根底设施和资源方面恰恰不是竞争的焦点,竞争的焦点应是电信业务的经营和运行。目前,中国市场的电信运营还没有完全放开,真正意义上的虚拟电信运营商还未产生,当前中国的OSS市场的需求主要以中国电信,中国移动,中国联通,中国网通,中国铁通等几家大的电信运营商为主,关于OSS的所有市场行为与市场需求都与运营商有关,中国的电信运营商成为整个OSS市场的源头。由于中国电信市场及电信运营商的特殊情况,单独的OSS产品很难形成单独的行销趋势进入整个市场价值链,它必须集成到系统集成商为电信运营商所提供的解决方案中去。中国的OSS系统往往由系统集成商采用工程招投标的形式与电信运营商来合作完成……您将在OSS市场参与者价值链中,找到贵公司的位置,发现您的市场时机!
宽带网建设风起云涌,下一代网络建设雾里看花,多业务多网络的融合,电信行业业已拆分,竞争格局已经改变,运营商投资更趋理性,中国参加WTO,对电信企业来说,短期弊大于利,挑战大于机遇,OSS系统建设标准尚未统一。OSS市场份额虽大,是否有人动了你的奶酪?
OSS在中国刚刚起步,OSS在欧美电信业中已经耳熟能详,您所要的OSS模型是什么样的?Cisco Systems,Nortel Networks, ADC, Agilent Tech等这些你所熟知的全球顶尖企业在OSS全球市场中的表现如何?成功?失败?一切归于你对竞争对手的详尽了解和胜算一步。纵览全球,定位自己,构筑OSS市场的竞争优势!
据Frost & Sullivan预测,OSS工程市场在今后的几年中,会有一个比拟显著的增幅,并保持一个强有力的增长势头,这主要是由于市场业务的需求不确定性使投资持续的增长。OSS市场的主要问题只有通过更长的时间来解决。能够易于实施、广泛接受更好的标准将是在未来几年间的市场救星。进入目前没有明确领导者的市场的新厂商将培育竞争,创造供未来开展的更好的OSS。
我所做的是融入到OSS系统中的一种功能OTTTV。OTT TV是“Over The Top TV〞的缩写,是指基于开放互联网的视频效劳,终端可以是电视机、电脑、机顶盒、PAD、智能 等等。意指在网络之上提供效劳,强调效劳与物理网络的无关性。通过互联网传输的视频节目,如PPS、UUSEE等平台的内容传输到显示屏幕(包括电视)上。
从消费者的角度出发,OTT TV就是互联网电视,满足消费者的需求,集成互动电视功能的全功能的互联网电视。
OTT TV 〔Over-The-Top TV〕,即以Over-The-Top 方式效劳的互联网电视。如2021年在市场上推出的Apple TV及Google TV即是此种模式。
在国际上,OTT TV指通过公共互联网面向电视传输的IP视频和互联网应用融合的效劳。其接收终端为互联网电视一体机或机顶盒+电视机。
在我国,OTT TV是指通过公共互联网面向电视机传输的由国有播送电视机构提供视频内容的可控可管效劳。接收终端一般为国产互联网电视一体机。
目前,OTT TV主要有两种实现方式:HTTP渐进下载〔HTTP Progressive Download,简称HPD〕和HTTP自适应流媒体〔HTTP Adaptive Streaming,简称HAS〕。传统的OTT TV一般采用HPD技术。基于HPD的客户端在开始播放之前仅需等待一段较短的时间用于下载和缓冲媒体文件最前面的一局部数据,之后便可以一边下载一边播放。HPD OTT TV存在诸多的局限性,例如:不适合对实时性要求较高的直播节目的传输;初始播放的等待时延一般较长;当网络带宽不稳定时比拟容易出现卡屏现象;由于客户端会持续下载视频文件,当用户中途放弃节目观看,会造成已下载文件〔消耗带宽〕的浪费。
为了克服HPD OTT TV技术的局限性,近年来基于HAS的OTT TV技术逐渐被业界广泛采用和推广。HAS OTT TV采用视频分片和自适应码率〔ABR〕技术。在HAS系统中,媒体流分割器将编码器输出的视频流分割为一系列连续的、长度均等的小分片文件,并将它们存储在Web内容分发效劳器。HAS客户端设备可在可用的带宽的根底上,自动向Web效劳器请求适宜的视频质量〔即不同的分辨率和码率〕的分片文件,从而给用户最好的视觉体验。为了便于HAS客户端实现不同码率分片之间的快速、实时切换,HAS视频一般采用较短的分片长度〔例如10秒〕。由于HAS系统可向不同屏幕大小的终端提供适合分辨率的视频分片文件,并可在不同网络带宽情况下实现流畅的视频播放,因此HAS被业内认为是未来无所不在的多屏互动视频的核心技术。
数据需求分析
通过组长要求得出属性的E-R图:
地市
设备序列号
otttv_ device
区域
设备广电号
设备厂商
设备型号
订单号\宽带账号
创立时间
状态
描述
状态变更时间
序号
图4-1 OTTTV的E-R图
4.2.3概要设计
4.2.3.1 系统功能结构图
整个系统为重庆铁通OSS系统,共有系统管理、销账管理、统计查询、客户效劳、产品管理、卡类管理、置业收费、客户管理、施工管理、渠道管理。
重庆铁通OSS系统
系统管理
销账管理
统计查询
客户效劳
卡类管理
产品管理
置业收费
客户管理
施工管理
渠道管理
电子工单处理
设备重新绑定
宽带复机异常处理
宽带立即更正
OTTTV属性
集群异群工单处理
延时处理
图4-2系统功能结构图
我所做的页面功能为OTTTV属性,此页面功能为对OTTTV_DEVICE表进行查询、修改、数据导入、删除。功能图如下列图
OTTTV设备属性
模板导出
数据导入
数据修改
数据删除
图4.3主要功能结构图
.2 模块设计
查询功能的流程图如下列图
查 询
条 件
根据条件得到查询信息
得到全部信息
YY
NY
功能流程图
修改功能流程图如下列图
修 改
条 件
根据修改得到最后信息
修改成功
功能流程图
删除功能流程如下列图
删 除
条 件
修改成功
功能流程图
详细设计
系统数据库名称为cq_oss,所用到的表为otttv_device。
表4.1 otttv_device表
属性
属性类型
是否标识
长度
是否为空
序号
serial
是
32
否
设备广电号
varchar(32)
否
32
否
设备序列号
varchar(32)
否
32
是
设备厂商
varchar(32)
否
32
是
设备型号
varchar(32)
否
32
是
区域
varchar(32)
否
32
是
地市
varchar(32)
否
32
否
创立时间
datetime
否
20
否
订单号\宽带账号
varchar(32)
否
32
是
状态变更时间
datetime
否
10
否
描述
varchar(32)
否
32
否
状态
varchar(2)
否
2
否
4.系统实现及编码
为了方便调试修改,系统登陆使用的公司通用账号,账号拥有所有修改代码权限。
页面为我所做的OTTTV属性页面,该页面有修改、删除、导出模板、导入数据等功能。
图4.7配置菜单页面图
主要代码:
Javascript局部:
<script language="javascript" src="../serviceProvision/style/script/setday.js"></script>
<script language="javascript" src="../style/script/private.js"></script>
<script language="javascript" src="../style/script/validate.js"></script>
<script language="javascript" src="../style/script/setday.js"></script>
<script type="text/javascript" language="javascript">
function reset(){
document.forms[0].SNO.value="";
document.forms[0].NUMBER.value="";
var chkArr = document.getElementsByName('NUMBER1');
var size = chkArr.length;
for(var i = 0; i < size; i++) {
if(chkArr[i].checked == true )
chkArr[i].checked=false;
}
}
function query(){
document.forms[0].operationType.value = "query";
document.forms[0].currentPage.value = "1";
document.forms[0].submit();
}
function create(){
document.forms[0].operationType.value = "create";
document.forms[0].submit();
}
function edit(){
if(checkedForEDIT()) {
document.forms[0].operationType.value = "edit";
document.forms[0].submit();
}
}
function del(){
if(!checkSelect("arrayID")){
alert("请先选择记录!");
return;
}
if(!statusValidate()){
alert("有效状态的记录不允许删除,请重新选择!");
return;
}
if(confirm("是否确认删除?")){
document.forms[0].operationType.value = "delete";
document.forms[0].submit();
}
}
function checkedForEDIT()
{
var the_form=document.forms[0];
var selectCount=0;
var objLen = the_form.length;
var chkArr = document.getElementsByName('arrayID');
var size = chkArr.length;
for(var i = 0; i < size; i++) {
if(chkArr[i].checked == true && chkArr[i].id !="checkall")
selectCount++;
}
if (selectCount==0)
{
alert("<bean:message bundle = "productConfigRes" key="Constants.msgSingleSelect" />");
return false;
}
else if(selectCount>=2)
{
alert("<bean:message bundle = "productConfigRes" key="Constants.msgSingleNodufy" />");
return false;
}
return true;
}
function onLoad()
{
if(document.forms[0].operationType.value == 'inUse')
{
alert("<bean:message bundle = "productConfigRes" key="specPrpty.alertInUse" />");
document.forms[0].standardCode.value='';
document.forms[0].name.value='';
document.forms[0].operationType.value = "query";
document.forms[0].currentPage.value = "1";
document.forms[0].submit();
}else if(document.forms[0].operationType.value == 'notSelect'){
alert('<bean:message bundle = "productConfigRes" key="specPrpty.notSelect" />');
}
}
function statusValidate(){
var arrayIDs=document.getElementsByName("arrayID");
for(var i=0;i<arrayIDs.length;i++){
if(arrayIDs[i].checked){
var tr=arrayIDs[i].parentElement.parentElement;
var status=tr.cells[12].innerHTML;
var pos = status.indexOf("1");
var pos1=status.indexOf("2");
if(pos != -1||pos1!=-1){
return false;
}
}
}
return true;
}
function downloadMold(){
document.forms[0].operationType.value="exportExcelModel";
document.forms[0].submit();
}
function save(){
var url="<%=request.getContextPath()%>/otttv/otttvSave.jsp";
var l=window.screen.width ;
var w= window.screen.height;
var al=l/2-200;
var aw=w/3-100;
var opt = "toolbar=no,location=no,directories=no,status=no,menubar=no,
scrollbars=yes,resizable=yes,width=400,height=200"+",top="+aw+",left="+al+"";
window.open(url,'otttvSaveWin',opt);
}
主要Table:
< table width="99%" border="0" cellspacing="0"
cellpadding="1" style="word-break:break-all" class="list_table">
<tr>
<td width="4%" align="center" class="list_checkbox">
<input value="checkbox" name="checkAll" type="checkbox"
onClick="javascript:clickCheckbox('arrayID');"></td>
<td width="3%" align="center" class="list_trb">序号</td>
<td width="7%" align="center" class="list_trb">设备广电号</td>
<td width="7%" align="center" class="list_trb">设备序列号</td>
<td width="7%" align="center" class="list_trb">设备厂商</td>
<td width="6%" align="center" class="list_trb">设备型号</td>
<td width="7%" align="center" class="list_trb">区域</td>
<td width="7%" align="center" class="list_trb">地市</td>
<td width="12%" align="center" class="list_trb">创立时间</td>
<td width="6%" align="center" class="list_trb">号码类型</td>
<td width="6%" align="center" class="list_trb">号码</td>
<td width="4%" align="center" class="list_trb">状态</td>
<td width="4%" align="center" class="list_trb" style="display:none;" >状态</td>
<td width="12%" align="center" class="list_trb">状态变更时间</td>
<td width="9%" align="center" class="list_trb">描述</td>
</tr>
<logic:present name="OtttvForm" property="list">
<logic:iterate id="rowp" name="OtttvForm" property="list">
<tr onMouseOver="mOvr(this,'#F2F7FD');" onMouseOut="mOut(this,'');">
<td align="center" class="list_rb">
<html:multibox property="arrayID">
<bean:write name="rowp" property="ID" />
</html:multibox></td>
<td align="center" class="list_rb" title="<bean:write name="rowp" property="ID" />"> <bean:write name="rowp" property="ID" /></td>
<td align="center" class="list_rb" title="<bean:write name="rowp" property="GSNO" />"> <bean:write name="rowp" property="GSNO" /></td>
<td align="center" class="list_rb" title="<bean:write name="rowp" property="SNO" />"> <bean:write name="rowp" property="SNO" /></td>
<td align="center" class="list_rb" title="<bean:write name="rowp" property="FACTORY" />"> <bean:write name="rowp" property="FACTORY" /></td>
<td align="center" class="list_rb" title="<bean:write name="rowp" property="MODEL" />"> <bean:write name="rowp" property="MODEL" /></td>
<td align="center" class="list_rb" title="<bean:write name="rowp" property="REGION" />"> <bean:write name="rowp" property="REGION" /></td>
<td align="center" class="list_rb" title="<bean:write name="rowp" property="LOCAL_NET" />"> <bean:write name="
展开阅读全文