资源描述
辽宁工程技术大学
大型软件项目实训报告
教学单位 软件学院
专 业 软件工程
班 级
学生姓名
学 号
指导教师
目录
一、实训目的 2
二、实训时间和地点 3
三、实训单位简介 3
四、实训内容 3
4.1实训期间完毕的学习任务 4
4.2实训期间完毕的实践项目 7
4.2.1需求分析 7
4.2.2数据需求分析 10
4.2.3概要设计 10
4.2.4具体设计 13
4.2.5系统实现及编码 14
4.3测试 31
五、实训收获与体会 32
六、致谢 32
一、实训目的
为了将大学和培训中心所学的东西应用到实际开发和项目应用中。提高自己的专业技能、编码能力、问题解决能力。了解所做项目某一模块和这一模块跟其他模块的功能、流程。使用JSP,Spring应用框架和Oracle10g数据库技术进行对国内项目开发,在开发过程中使用SVN进行代码批准管理和统一。最后通过公司测试库进行测试,最后将项目上线。完毕整个软件项目开发周期,在项目开发各实行阶段严格进行评审,以保证项目质量。
二、实训时间和地点
1.实训时间:2023年12月9日~2023年1月17日
2.实训地点:大连华信计算机技术股份有限公司
三、实训单位简介
大连华信计算机技术股份有限公司是一家面向全球客户提供领先的应用软件产品、信息服务及行业解决方案的供应商。通过数年的发展,大连华信已经成长为一家以软件技术为核心,提供从软件设计、开发、测试、实行到后期的培训、维护服务和业务征询全面解决方案的提供商。大连华信的软件技术和信息服务应用于电信、电力、公共、金融、保险、交通、物流、传媒、制造业等多个行业,帮助国内外400多家客户改善工作质量,有效提高客户价值。作为国内较早进入日本市场的软件公司之一,大连华信在对日软件外包服务业务领域取得了长足的发展,并与众多日本知名公司建立了良好的合作关系。强大的技术实力、科学的管理机制带来了丰硕的成果。国内市场,大连华信作为行业解决方案的提供商,在电信、保险、政府、ERP等领域有着丰富的经验,成功案例遍布全国270多个城市。
2023年,在全国软件出口排行榜中,大连华信荣登榜首,2023年,大连华信又凭借软件出口的雄厚实力荣膺“2023年最具竞争力的中国软件公司”称号,2023年入围中国软件产业最大规模前100家公司。
2023年软件开发营业额达成7亿多元人民币,规模达成6000人,是中国最大IT外包商之一。
作为中国软件行业的新领军者,大连华信是国家规划布局内重点软件公司、中国软件产业最大规模前100家公司,技术水平居于国内同行业领先地位,具有国家计算机信息系统集成一级资质,并获得了ISO9001:2023、CMM5级、ISO27001:2023、ISO14001:2023、PIPA(个人信息保护合格证书,与日本的P-MARK互认)等资质认证。
在技术竞争日益剧烈的今天,立足国内和日本市场,拓展欧美市场是大连华信国际化的发展战略。大连华信将继续提高整体核心竞争力,实现可连续增长,
成为国内最优秀的应用系统服务提供商、系统集成服务提供商和软件外包服务提供商。
四、实训内容
4.1实训期间完毕的学习任务
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属性页面的编辑,该页面功能为对数据的添加、修改、删除、查询。
4.2.1需求分析
随着中国加入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 方式服务的互联网电视。如2023年在市场上推出的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被业内认为是未来无所不在的多屏互动视频的核心技术。
4.2.2数据需求分析
通过组长规定得出属性的E-R图:
地市
设备序列号
otttv_ device
区域
设备广电号
设备厂商
设备型号
订单号\宽带账号
创建时间
状态
描述
状态变更时间
序号
图4-1 OTTTV的E-R图
4.2.3概要设计
4.2.3.1 系统功能结构图
整个系统为重庆铁通OSS系统,共有系统管理、销账管理、记录查询、客户服务、产品管理、卡类管理、置业收费、客户管理、施工管理、渠道管理。
重庆铁通OSS系统
系统管理
销账管理
记录查询
客户服务
卡类管理
产品管理
置业收费
客户管理
施工管理
渠道管理
电子工单解决
设备重新绑定
宽带复机异常解决
宽带立即更正
OTTTV属性
集群异群工单解决
延时解决
图4-2系统功能结构图
我所做的页面功能为OTTTV属性,此页面功能为对OTTTV_DEVICE表进行查询、修改、数据导入、删除。功能图如下图 4.3重要功能结构图
OTTTV设备属性
模板导出
数据导入
数据修改
数据删除
图4.3重要功能结构图
4.2.3.2 模块设计
查询功能的流程图如下图
查 询
条 件
根据条件得到查询信息
得到所有信息
YY
NY
图4.4查询功能流程图
修改功能流程图如下图
修 改
条 件
根据修改得到最后信息
修改成功
图4.5修改功能流程图
删除功能流程如下图
删 除
条 件
修改成功
图4.6删除功能流程图
4.2.4具体设计
系统数据库名称为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.2.5系统实现及编码
为了方便调试修改,系统登陆使用的公司通用账号,账号拥有所有修改代码权限。
页面为我所做的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"
展开阅读全文