1、题目:基于JSP网上书店系统毕业论文(设计)原创性声明本人所呈交的毕业论文(设计)是我在导师的指导下进行的研究工作及取得的研究成果。据我所知,除文中已经注明引用的内容外,本论文(设计)不包含其他个人已经发表或撰写过的研究成果。对本论文(设计)的研究做出重要贡献的个人和集体,均已在文中作了明确说明并表示谢意。 作者签名: 日期: 毕业论文(设计)授权使用说明本论文(设计)作者完全了解*学院有关保留、使用毕业论文(设计)的规定,学校有权保留论文(设计)并向相关部门送交论文(设计)的电子版和纸质版。有权将论文(设计)用于非赢利目的的少量复制并允许论文(设计)进入学校图书馆被查阅。学校可以公布论文(设
2、计)的全部或部分内容。保密的论文(设计)在解密后适用本规定。 作者签名: 指导教师签名: 日期: 日期: 注 意 事 项1.设计(论文)的内容包括:1)封面(按教务处制定的标准封面格式制作)2)原创性声明3)中文摘要(300字左右)、关键词4)外文摘要、关键词 5)目次页(附件不统一编入)6)论文主体部分:引言(或绪论)、正文、结论7)参考文献8)致谢9)附录(对论文支持必要时)2.论文字数要求:理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。3.附件包括:任务书、开题报告、外文译文、译文原文(复印件)。4.文字、图表要求:1)文字通顺,语
3、言流畅,书写字迹工整,打印字体及大小符合要求,无错别字,不准请他人代写2)工程设计类题目的图纸,要求部分用尺规绘制,部分用计算机绘制,所有图纸应符合国家技术标准规范。图表整洁,布局合理,文字注释必须使用工程字书写,不准用徒手画3)毕业论文须用A4单面打印,论文50页以上的双面打印4)图表应绘制于无格子的页面上5)软件工程类课题应有程序清单,并提供电子文档5.装订顺序1)设计(论文)2)附件:按照任务书、开题报告、外文译文、译文原文(复印件)次序装订3)其它摘 要电子商务(Electronic Commerce)是互联网上出现的新概念。它是利用计算机技术、网络技术和远程通信技术,实现整个商务(买
4、卖)过程中的电子化、数字化和网络化。它使人们不再是面对面的、看着实实在在的货物、靠纸介质单据(包括现金)进行买卖交易。而是通过网络,通过网上琳琅满目的商品信息、完善的物流配送系统和方便安全的资金结算系统进行交易。它已经被广泛使用,给人们带来了便利,并逐渐改变了人们的生活方式。国内电子购物网站多数是用ASP,PHP 技术实现的,而基于JSP 的优秀网站较少。Sun Microsystems 所开发的JSP 以Java 为平台,利用Java 纯面向对象编程语言的巨大优势(跨平台性即一次编译到处运行的特点),给我们的动态网页设计带来了很大的方便。本系统利用JSP+JavaBean+ SQL Serv
5、er 数据库三层模式实现了网上书店系统。本论文对系统的需求分析、系统总体架构及详细设计进行了详细地阐述,主要实现了以下功能:会员注册、登录;浏览图书详细信息;图书搜索;图书管理等。关键词:网上书店 JSP Eclipse JavaBean SQL Server目 录摘 要1一、 前 言4二、 系统开发技术5(一) J2EE概念5(二) MVC设计模式简介5三、 系统开发环境6(一) 服务器的配置6(二) 数据库后台环境的配置8四、 需求分析8(一) 用户需求分析9(二) 数据库设计与实现111 数据库的概念模型分析112 数据表基本结构14五、 系统总体设计16(一) 网上书店系统模块结构图1
6、6(二) 详细设计171 类图172 登录/注册功能173 浏览/搜索图书功能184 图书购买195 订单查询206 图书管理21(三) 系统组建与文件221 视图组件222 模型组件223 控制器组件23六、 系统的实现23(一) 数据库配置及链接23(二) 系统功能的实现251 前台界面功能252 用户登录界面273 后台管理功能的实现31(三) 小 结33七、 致 谢33参 考 文 献35一、 前 言随着Internet 国际互联网的发展,越来越多的企业开始建造自己的网站。于Internet的信息服务,商务服务已经成为现代企业一项不可缺少的内容。很多企业都已不满足于建立一个简单的仅仅能够
7、发布信息的静态网站。现代企业需要的是一个功能强大的,能提供完善的电子商务服务的动态商务网站。JSP是Sun公司推出的一种网站开发技术,Sun公司借助自己在Java上的不凡造诣,又把人们引进JSP 时代,JSP 即Java Server Page,它可以在Servlet 和JavaBean 的支持下,完成功能强大的Web应用程序。所以,在我的毕业设计中,我采用了JSP作为开发工具,构建了一个能实现简单的电子商务的小型动态商务网站网上书店销售系统。该系统能实现用户的注册、登录功能;能够实现商品的查询,订购等功能。该系统基本上具备一个网上商品销售系统应该具备的功能,该设计项目基本上体现了构建一个动态
8、商务网站所需要的技术,可以说,目前的大型商务网站也就是我们这个小型网站在内容上的扩充和重复。通过这次的毕业设计,我了解了目前流行的动态商务网站的构成和运作原理,掌握了用JSP构建动态网站的相关知识和技术原理,锻炼了自己的动手实践能力。更重要的是,通过这次的毕业设计,我培养出了刻苦钻研的学习精神和严肃认真的学习态度,这对我以后的学习和工作有很大的益处。二、 系统开发技术(一) J2EE概念J2EE是一套面向企业应用的体系结构,可以将J2EE理解为J2SE(Java 2 平台的标准版)的扩展和延伸,J2EE的基础就是J2SE,J2EE不仅拥有J2SE中的许多优点,同时还提供了对EJB,Java S
9、ervlet API,JSP以及XML等技术的支持。J2EE通过提供中间层集成框架来满足多种需求,其中包括高可用性,高可靠性,高扩展性以及低成本等要求。同时通过提供统一的开发平台,降低了开发多层系统的复杂性,并且对现有应用程序提供了强有力的支持。其具体表现在:对Enterprise JavaBean的完全支持,对打包和部署应用的良好支持,对添加目录的支持以及对安全机制的支持。(二) MVC设计模式简介MVC是Model(模型)View(视图)Controller(控制器)的缩写,它适用于大型可扩展的Web应用的开发,它强制性地将应用程序的输入、处理和输出分开,将其划分为模型、视图和控制器三个核
10、心部分,使它们各司其职,各自完成不同的任务,其中任何一部分的修改都不会影响其它两部分。在MVC模式中,模型封装了应用问题的核心数据、逻辑关系和业务规则,提供了业务逻辑的处理过程。模型一方面被控制器调用,完成问题处理的操作过程,另一方面为视图获取显示数据提供了访问数据的操作。因为模型是与数据格式无关的,因此一个模型可以为多个视图提供数据,这样一个模型一次编写可以被多个视图重用,从而避免了代码的重复编写。视图是MVC模式下用户看到的并与之交互的界面。视图从模型处获得数据,视图的更新由控制器控制。视图不包含任何业务逻辑的处理,它只是作为一种输出数据的方式。MVC模式中,控制器主要起导航的作用,它根据
11、用户的输入调用相应的模型和视图去完成用户的请求。控制器本身不输出任何东西,它接受用户请求并决定调用哪个模型构件去处理,以及由哪个视图来显示模型处理之后返回的数据。MVC的处理过程是这样的:对于每一个用户输入的请求,首先被控制器接收,并决定由哪个模型来进行处理,然后模型通过业务处理逻辑处理用户的请求并返回数据,最后控制器用相应的视图格式化模型返回的数据,并通过显示页面呈现给用户。图1-1所示为模型、视图、控制器这三个模块各自的功能以及它们之间的相互关系:图2-1 MVC模式三、 系统开发环境(一) 服务器的配置 前面介绍了JSP 的生命周期,为了说明JSP 对运行环境的要求,先简单的介绍一下它的
12、运作过程。服务器在接收到客户端传过来的一个页面请求时,先判断是否是JSP 页面请求(从扩展名来判断),如果不是,只是一般的HTML页面请求,则直接把HTML文档传给客户端,完成客户端与服务器的一次连接。如果判断是JSP页面请求,则由JSP引擎(或Servlet引擎)将JSP页面代码转换成Servlet 代码,再通知服务器上的JVM(Java 虚拟机)对转换过来的Servlet 代码进行编译,将生成的字节码文件放在服务器上相应的地方,并执行编译后得到的字节码,然后把结果传送给客户端,这样就完成一次连接。以后如果有相同的JSP页面的请求,则直接由JSP引擎通知JVM 执行已有的字节码,并把结果传送
13、给客户端。从上面JSP 运作全过程可见,运行JSP 最少需要三样东西:JSP 引擎、Web 服务器和JVM最常用的Java 开发工具你可以选择IDE(Integration Development Environment 继承开发环境)也可以直接用SUN 公司提供的JDK 进行开发。常用的IDE有JBuilder,MyEclipse等,它们是桌面开发环境嵌入JDK,给用户的开发带来很大的便利。本系统直接采用JDK 作为JVM 和java 编译器。所用的操作系统是Windows XP,服务器采用的是Tomcat,利用了它充当JSP引擎,同时还利用了它的信息发布功能。首先把JDK,Tomcat安装
14、到本地硬盘C盘根目录下,下面详细的介绍如何配置运行环境: 配置环境变量第一步:进入我的桌面,右击“我的电脑”,选择“属性”选项,进入“系统属性”对话框,单击“高级标签”第二步:点击上图箭头所示“环境变量”, 配置JAVA_HOME第三步:单击“系统变量”部分的“新建按扭”,创建JAVA-HOME 变量,在变量值栏内输入C: JDK6;JAVA_HOME 指明JDK安装路径,就是刚才安装时所选择的路径C: JDK6,此路径下包括lib,bin,jre等文件夹(此变量最好设置,因为以后运行Tomcat需要依靠此量)第四步:同样的方法创建CLASSPATH 变量,在变量栏内输入:.;%JAVA_HO
15、ME%libdt.jar;%JAVA_HOME%libtools.jar; %JAVA_HOME%jrelibrt.jar;(要加.表示当前径)CLASSPATH 为java加载类(class or lib)路径,只有类在classpath中,java 命令才能识别。第五步:创建PATH 变量,在变量栏内输入,%JAVA_HOME%bin;%JAVA_HOME%jrebinPath使得系统可以在任何路径下识别java 命令。第六步:检测配置是否成功:1)检测JDK是否配置成功编写一个java 程序,例如:public class HelloWorldApp public static void
16、 main(String args) System.out.println(“HelloWorld!”); 首先把它放到一个名为HelloWorldApp.java 的文件中,这里,文件名应和类名相同,因为java 解释器要求公共类必须放在与其同名的文件中。然后对它进行编译:c:javac HelloWorldApp.java编译的结果是生成字节码文件HelloWorldApp.class。最后用java 解释器来运行该字节码文件:c:java HelloWorldApp结果是在屏幕上显示“Hello World!”至此,JDK 完全安装成功。2)检测Tomcat是否配置成功进入C:Tomca
17、t5.0bin目录,双击startup.bat执行文件启动Tomcat服务器。我们现在就可以通过浏览器看Tomcat服务器的示例程序了,打开浏览器,键入http:/localhost:8080/进入Tomcat服务器的主页面。(二) 数据库后台环境的配置 建立数据库 SQL Server 是由Microsoft开发和推广的关系数据库管理系统(DBMS),它最初是由Microsoft、Sybase和Ashton-Tate三家公司共同开发的,并于1988 年推出了第一个OS/2 版本。SQL Server 近年来不断更新版本,1996 年,Microsoft 推出了SQL Server 6.5版本
18、;1998年,SQL Server 7.0版本和用户见面;2000年,SQL Server 2000版本面世,SQL Server 2005 是Microsoft公司于2005 年推出的最新版本。 JSP与SQL Server 数据库的连接选择任务栏的“开始” “所有程序” “Microsoft SQL Server”四、 需求分析网上书店系统主要是实现网上选书、购书、产生订单等功能的系统。一个典型的网上商城一般都需要实现商品信息的动态展示、购物车管理、客户信息注册登录管理、订单处理等模块。(一) 用户需求分析1.本网上书店系统主要完成以下具体任务:1) 图书查询需求当客户进入网上书店时,应该
19、在主页面中分类显示书目信息,以供客户选择所需图书,同时也应该提供按照图书名称,或者作者或图书的ISBN或图书的价格范围快速查询所需书目信息的功能。2) 购物车管理需求当客户选择购买某图书产品时,应该能够将对应图书信息,例如:价格、数量记录到购物车中,并允许客户继续选择其他商品,并添加到购物车中,当对购物订单生成后,应该能够查询已生成订单的购物车中的信息。3) 订单处理需求对应客户购买图书商品信息的需求,在确定了所购图书商品的价格、数量等信息后,提示用户选择对应的送货方式及付款方式,最终生成对应的订单记录,以便于网站配货人员依据订单信息进行后续的出货、送货和处理。4) 会员注册需求为了能够实现图
20、书商品的购买,需要管理客户相关的联系方式、送货地点等相关信息。2. 用户需求所对应的用例图为: 用例图展现了一组用例和参与者,以及他们之间的关系,它在一个较高的抽象层次上从外部执行者的角度描述了系统的功能。图1 管理员用例图图2 普通用户用例图(二) 数据库设计与实现1 数据库的概念模型分析l 依据网上书店的处理需求,对应数据表的设计及功能如下:1) 图书信息表(Book):存放网上书店所销售图书的基本信息。2) 用户信息表(userinfo):存放书店用户的相关信息。3) 订单表(orders):存放与客户相关的订单的基本信息。4) 订单详细信息表(orderLine):存放订单的详细信息。
21、5) 图书分类信息表(Category):存放图书的分类信息。6) 收货人地址信息表(consigneeAddress):存放收人的详细信息。l 数据库中设计的实体有: 用户信息、订单、图书、订单的详细信息、图书类别、地址信息实体的E-R图和关系:用户信息表姓名密码用户编号用户类型备注邮箱图1用户信息的E-R图图书信息表ISBN出版日期类别编号出版社作者类别名价格目录库存图2 图书信息表E-R图订单详细信息图书编号订单编号订单编号订单图书数量编号单价图3 订单详细信息E-R图订单订单编号用户编号订单日期订单总价支付方式邮递地址邮递方式订单状况图4 订单E-R图图书类别类别编号类别名图5 图书类
22、别E-R图用户编号地址编号接收地用户姓名备注固定电话电话号码地址信息图6 地址信息E-R图在找出所有实体的基础上,需要进一步分析各实体之间的联系。经过分析两两实体之间的联系,然后进行合并,给出所有实体的联系图即E-R图,如图所示:1n1111n图书订单详细信息地址信息订单图书类别属于购买用户浏览各实体之间的联系图2 数据表基本结构该系统采用微软的Sql Server2000作为数据库系统。根据上面的E-R图,得出以下6个数据表。下面是这6个数据表的结构。1. 表1表名User(用户信息表)列名数据类型空/非空约束条件含义idint主键(自动增加,外键参照)用户编号userNameChar(10
23、)用户名passwordChar(10)密码emailChar(30)电子邮件bzChar(30)备注roleNameChar(10)用户类型补充说明用户类型分为管理员和用户两种2. 表2表名Book(图书信息表)列名数据类型空/非空约束条件含义idint主键(自动增加,外键参照)图书顺序号isbnvarchar(30)图书编号bookNamevarchar(50)图书名catelogNamevarChar(50)目录authorvarchar(50)作者publishervarchar(50)出版社pubDatevarchar(30)出版日期pricefloat价格picPahtvarcha
24、r(50)图片路径categoryIDint图书类型编号bzvarchar(50)备注numberint数量补充说明3. 表3表名orders(订单表)列名数据类型空/非空约束条件含义idnvarchar(50)主键(外键参照)订单编号userIdInt用户编号orderDateNvarchar(50)下单时间orderPricefloat订单金额payMethodnvarchar(50)付款方式shippingMethodnvarchar(50)邮递方式addressIdInt地址编号orderStatusnvarchar(50)订单状态bznvarchar(50)备注补充说明4. 表4表名
25、orderLine(订单详细信息表)列名数据类型空/非空约束条件含义idint主键编号orderIdNvarchar(50)外键订单编号bookNamevarchar(50)图书名称priceFloat图书价格quantityInt数量bookIdInt图书编号补充说明5.表5表名Category(图书分类信息表)列名数据类型空/非空约束条件含义idint主键编号categoryNamenvarchar(20) 分类名称parentIDnvarchar(50)父类编号layernvarchar(50)层bznvarchar(50)备注补充说明6.表6表名consigneeAddress(收货人
26、地址信息表)列名数据类型空/非空约束条件含义idint主键(自动增加,外键参照)编号userIdint用户编号consigneeNameNvarchar(50)收货人姓名addressNvarchar(50)收货人地址zipcodeChar(10)邮编telNvarchar(50)移动电话BzNvarchar(50)备注fixtelNvarchar(50)固定电话补充说明五、 系统总体设计(一) 网上书店系统模块结构图用户管理网上书店系统管理员普通用户登录管理图书注册登录和退出搜索图书维护购物车确认订单修改资料增加图书更新图书删除图书系统模块结构图(二) 详细设计系统的详细设计包括各个功能模块
27、的设计,以及类图的设计。类图使用的是类图。功能模块的设计利用的是顺序图,详细的介绍了用户使用该系统的详细步骤。1 类图类图不仅说明了各个类的内部结构,即类的属性和操作,而且描述了类之间的泛化(即继承)、聚集、关联、依赖等静态关系。该系统包括的类图有:userinfo,Book,Category,orders,orderline,consigneeAddress。2 登录/注册功能用户登录是购物网站这种电子商务应用必需的功能之一。网上书店系统的登录页面要求用户输入用户名和密码。在输入用户名和密码之后,系统将验证用户名和密码是否正确,如果验证成功,就使用户处于登录状态。否则,系统显示该用户不存在的
28、信息。用户在登录页面中能够进行新用户注册,这是系统要求用户注册信息,包括用户名,密码,电子邮箱,居住地址,邮政编码。用户登录后可以随时修改个人的注册信息。如图图4-2 登录顺序图3 浏览/搜索图书功能用户可以通过网站浏览各种图书。在系统主页面提供所有图书的列表,通过单击某种图书的链接,用户可以查看该图书的名称,描述和单价等信息以及添加到购物车中。图4-3 网页浏览4 图书购买 用户进入网站后,登录后可以通过查找图书后,选择购买按钮进行购买图书。当用户单击“购买”按钮时,图书会被自动添加到购物车中。在购物车页面,将列出用户的购物车中的所有图书,并且每种图书列出图书名,图书作者,图书价格,图书数量
29、。图4-4 图书购买顺序图5 订单查询 用户或管理员进入本网页后,该用户或管理员可以通过登录页面中,进行订单查询。如果是普通用户可以进行该用户的订单查询,此时出现该用户的订单信息;如果是管理员,则可以出现所有的订单详细信息。4-5 订单查询顺序图6 图书管理 管理员进入管理员登录的界面后可以进行图书管理的具体功能。该功能的顺序图为:图 4-6 图书管理顺序图(三) 系统组建与文件1 视图组件视图是与用户交互的界面,其作用包括向用户显示数据,接受用户输入,与模型层行交互,向模型层查询业务状态,接收模型发出的数据,更新显示用户界面。在网上书店系统中用到的视图组件如下:1) index.jsp 显示
30、首页 2) userlogin.jsp 用户或管理员登录界面3) userRegister.jsp 用户注册界面4) fras.jsp 用户或管理员登录后的界面 5) simpleSearch.jsp 简单地图书查询6) complexSearch.jsp 高级图书查询7) searchResult.jsp 图书查询结果的界面8) S.html 操作失败页面9) Filed.html 查找书时没有该书显示的页面10) F.html 添加图书没成功显示的页面11) Success.html 图书购买成功的页面2 模型组件模型是应用程序的主体,它用于表示业务数据和业务逻辑。一个模型可以同时为多个视
31、图提供数据,从而提高了代码的可重用性。它获取来自视图组件的数据,并将其传递给控制器组件进行处理。在网上书店系统中用到的模型组件如下: 1) Book.java 接受来自管理员对图书的增、删、改、查并传递给BookControl 2) Cart.java 接受来自用户的购物订单信息并传递给CartControl 3) Category.java 接受对图书的分类并传递给CategoryControl 4) ConsignessAddress.java 接受收货人的信息地址传ConsignessAddressControl5) Order.java 接受来自用户购买的图书的信息并传递给CartCo
32、ntrol6) OrderLine.java 接受用户查询订单时显示订单的信息并传递给OrderControl7) User.java 接收来自用户登录的数据并传递给userControl8) VbookCategory.java 接收用户对图书的分类并传递给categryList 9) VuserOrder.java 接受用户订单的信息并传递给OrderControl3 控制器组件控制器,顾名思义起控制作用。它接收用户输入,并调用模型和视图来完成用户请求。在用户提交表单时,控制器本身不做任何处理和输出工作。控制器所做的仅仅是:接收请求,然后调用模型组件处理请求,最后用视图来显示模型处理后返回
33、的数据。在网上书店系统中用到的控制器组件如下:1) AdminInfoControl.java 处理用户注册 2) BookControl.java 处理图书的删除和更新3) BookSearchControl.java 处理图书的查找4) CartControl.java 处理购物车的信息5) CategoryControl.java 处理图书的分类6) ConsigneeAddrssControl.java 处理收货人的信息地址7) OrderControl.java 处理订单的信息六、 系统的实现(一) 数据库配置及链接 SQL Server 是由Microsoft开发和推广的关系数据库
34、管理系统(DBMS),它最初是由Microsoft、Sybase和Ashton-Tate三家公司共同开发的,并于1988 年推出了第一个OS/2 版本。SQL Server 近年来不断更新版本,1996 年,Microsoft 推出了SQL Server 6.5版本;1998年,SQL Server 7.0版本和用户见面;2000年,SQL Server 2000版本面世,SQL Server 2005 是Microsoft公司于2005 年推出的最新版本。 JSP与SQL Server 数据库的连接 建立数据库选择任务栏的“开始” “所有程序” “Microsoft SQL Server”数
35、据库链接的代码如下:import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;public class DBJDBCConn public static void main(String args) /JDBC数据库连接方式try /1.注册驱动程序/java.lang包下Class类forName()、newInstance()方法Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver);/Class.forName(
36、com.microsoft.jdbc.sqlserver.SQLServerDriver).newInstance()/2.获取数据库连接Connnection coon=DriverManager.getConnection(jdbc:microsoft:sqlserver:/127.0.0.1:7788;DatabaseName=bookManager,sa,admin);System.out.println(conn.hashCode();/3.关闭数据库连接conn.close(); catch (ClassNotFoundException e) e.printStackTrace(
37、); catch (SQLException e) e.printStackTrace();/end main/end DBJDBCConn(二) 系统功能的实现1 前台界面功能前台的登录界面:注册时用户需输入用户名,密码,邮箱,备注。然后单击时用户身份,还是管理员身份,输入完单击注册便可。单用户已存在时后出现该用户不能注册的信息,如果信息符合,则用户可注册成功。没有进行注册时,可以单击注册,此时的页面如上图。其中部分按钮的代码为:%/获取表单数据 CodeChange c1=new CodeChange(); String userName=request.getParameter(user
38、Name); userName=c1.getString(userName); String password=request.getParameter(password); password=c1.getString(password); String email=request.getParameter(email); email=c1.getString(email); String bz1=request.getParameter(bz); bz1=c1.getString(bz1); /封装信息准备存储 User u1=new User(); u1.setUserName(userN
39、ame); u1.setPassword(password); u1.setEmail(email); u1.setBz(bz1); u1.setRoleName(0); / u.setRoleName(1); /存储 UserInfoDao dao1=new UserInfoDao();2 用户登录界面用户注册后可以点击登录界面,该界面需要填入用户名,用户注册时的密码;还有就是用户可以选择是普通用户,还是以管理员的身份进入,填入后单击登录,如果有误可以选择重置。如果用户想修改密码,可以单击修改密码;如果忘记密码可以选择忘记密码,然后用户可以根据用户名和邮箱寻找密码。实现功能的部分代码:0 &
40、 rolename.equals(1) session.setAttribute(id,result); session.setAttribute(rolename,rolename); response.sendRedirect(fras.jsp); /out.print(登陆成功进入主页面); else if(result0 & rolename.equals(0) ) session.setAttribute(rolename,rolename); session.setAttribute(userName,username); session.setAttribute(id,result); /out.println(登陆成功进入主页面); ServletContext context=this.getServletContext(); HashMap map=(HashMap)context.getAttribute(map); if(map=null) map=new HashMap(
©2010-2025 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100