冒险商人ver1.0开发文档

PS:此Web应用已经上传到本人的资源下了,可以下载整个包。

冒险商人ver1.0开发文档

--《冒险岛Online》物价记录系统

一、需求分析

1.1 需求概述

经常玩冒险岛的玩家肯定是会涉及到自由市场的买卖。有些新手在里面各种被骗,好东西在手却以很烂的价格出售,自己还不知道;另外一些人就算很少的东西,也可以几天之内迅速发家致富。这就是自由市场的魅力。由于不知道市场行情,很多人卖东西都是看了好几家店,然后做出了一个相对自己满意的价格。但是往往很多物品,有些人就没有卖,找起来就更难找,这不但浪费时间,也浪费精力。于是,一款记录冒险岛物价的系统在这样的要求下应运而生。

 

1.2 系统搭建

       框架:Strut2.3.7 + ExtJs4.0.7

       数据库:Mysql5.2

       语言:J2EE

       J2EE开发的应该能很容易搭建本系统。总目录下的MapleStoryTrade就是放入Tomcat7webapps里面的。然后访问的话就http://127.0.0.1:8080/MapleStoryTrade/。这样就行。

       这个目录下的db是数据库建表语句。

       ExtjsExtjs框架最小的一个部分,可以运行。

       Resource是用来存放物品图片还有网页的其他图片的。

       总目录下的截图是这个项目运行的实际截图。当然数据不多,这每个区的行情都不一样,只有自己用自己记录了。

       总目录下的MapleTrader是后台java程序的Eclipse项目文件夹,带有源代码。就在src目录下。

1.3 系统模块分析

       本系统前台使用Web方式录入数据,以及查询数据。后台使用Mysql数据库记录数据。

1.4 前台功能模块设计

       本系统前台功能模块主要有如下几个(ver1.0):

A.商品分类查询功能

B.商品录入功能

 

二、详细设计

2.1 功能模块设计

       根据需求分析设计本系统共分为3个功能模块:

2.1.1 商品价格录入功能

a.价格分类录入(装备、卷轴、道具)。

b.具体录入还要填入相应物品信息。

(b1)对于数据库里未存在的物品信息,则添加到数据库。

(b2)对于数据库里已经存在的物品信息,则更新数据库。

c.支持图片导入(导入图片地址)。

2.1.2 商品价格检索功能

       a.支持按物品名称和类型检索物品价格的低级检索功能。

b.支持分类、条件等高级检索物品价格的高级检索功能。(v1.0未实现)

2.1.3 商品价格的删除及修改功能(v1.0未实现)

       a.支持在检索结果处进行价格修改。

b.支持在检索结果处进行条目删除。

2.2 数据库表设计

       本系统使用的数据表用于处理冒险岛商品数据,由于冒险岛商品种类繁多,数量很大,需要对商品数据进行分类。这里将商品分为3类:装备、道具、卷轴。

 

       装备数据表:EQUIPMENT

 

装备数据表EQUIPMENT

ID

(ID)

名称

(NAME)

等级

(LEVEL)

所属大类

(CLASS)

所属小类

(SUBCLASS)

职业

(PRO)

图片链接

(IMAGE)

最低价格(MIN)

 

最高价格(MAX)

 

单位

(UNIT)

自动生成

128位字符

4位整数

32位字符

32位字符

32位字符

1024位字符

32位整数

32位整数

16位字符

 

       道具数据表:ITEM

 

道具数据表ITEM

ID

(ID)

名称

(NAME)

分类

(CLASS)

图片链接

(IMAGE)

最低价格

(MIN)

最高价格

(MAX)

单位

(UNIT)

自动生成

128位字符

32位字符

1024位字符

32位整数

32位整数

16位字符

 

         卷轴数据表:REEL

 

卷轴数据表REEL

ID

(ID)

名称

(NAME)

所属大类

(CLASS)

所属小类

(SUBCLASS)

成功概率

(PERCENTAGE)

图片链接

(IMAGE)

最低价格

(MIN)

最高价格

(MAX)

单位

(UNIT)

自动生成

128位字符

32位字符

32位字符

16位字符

1024位字符

32位整数

32位整数

16位字符

 

三、界面构成

         本系统ver1.0目前由于功能比较容易,所以实现的具体来说就2jsp页面。这些都可以在随压缩文件的目录里截图看到,这里也放上几张作为说明。

 

由于页面关系,这里就不一一放入文档了。

四、后台设计问题

4.1 Java包结构

如图4,这里可以看到我一共建立了3个包,分别是lhb.action(用来放action)lhb.pojo(用来放pojo)lhb.util(用来放工具类)。这里简要介绍一下每一个类的用途。

AddEquipData.java 用来处理装备录入的Action

AddItemData.java 用来处理道具录入的Action

AddReelData.java 用来处理卷轴录入的Action

Existence.java 用来检测是否服务器存在有同名的物品

Search.java 用来查找的Action

Equipment.java 装备pojo

Item.java 道具pojo

Reel.java 卷轴pojo

DBManager.java 数据库操作类

MTUtil.java 静态工具方法类

TypeManager.java 类型管理类,用于处理一些静态变量

 

当然本工程还导入了Struts2.3.7mysqltomcat7的必要lib(图5)。

 

4.2 Action设计

本工程的Action设计完全依照Struts2的设计流程,当然目前v1.0版本没有使用tomcat的数据库连接池。那些以后再说。V1.0所实现的功能在前面已经标出。目前大体就是处理3种响应的Action

Existence这个Action主要处理前台的一个ajax响应。就是在物品录入的时候的“check”按钮的响应。这个Action的功能就是检测数据库里是否有同种类型,同样名称的数据存在。如果存在,则返回一个String类型的true,不存在就返回false。很简单。

Add*Data这种类型的Action用来处理向数据库插入数据。

由于用到了文件上传,所以前台在提交数据的时候,会提交一个File类型的文件来。然后Struts2会自动加入2个属性,一个是文件的名称。一个是文件类型。这就让开发更加方便。返回数据是successresultMsg。这里Struts2通过配置以后会将这些信息自动转换为json数据,方便和前台的传递。

Search。这个Action主要是处理低级查找的。前台会传递一个namesearchType来到这个Action。这里通过判断传入的searchType的值来判断想要搜索的物品类型。从而调用不同的数据库处理方法。前台是通过具体的搜索项,发送ajax请求。来获得store。再更新表格的。

4.3 Struts.xml配置

Struts.xml的配置和普通的Struts2差不太多。具体要说一下需要注意的配置项:

Package如下:

 

<!-- 指定上传路径 -->
	<constant name="struts.multipart.saveDir" value="E:\\Java\\apache-tomcat-7.0.33\\webapps\\MapleStoryTrade\\resource\\maple_temp"></constant>  
<!-- JSON数据Action -->
	<package name="jsonInfo" extends="json-default">
		<action name="Search" class="lhb.action.Search">
			<result type="json"/>
		</action>
		<action name="Existence" class="lhb.action.Existence">
			<result type="json"/>
		</action>
		<action name="AddEquipData" class="lhb.action.AddEquipData">
			<interceptor-ref name="fileUploadStack"></interceptor-ref>
			<result type="json">
				<param name="contentType">text/html</param>
				<param name="includeProperties">success,resultMsg</param>
			</result>
		</action>
		<action name="AddItemData" class="lhb.action.AddItemData">
			<interceptor-ref name="fileUploadStack"></interceptor-ref>
			<result type="json">
				<param name="contentType">text/html</param>
				<param name="includeProperties">success,resultMsg</param>
			</result>
		</action>
		<action name="AddReelData" class="lhb.action.AddReelData">
			<interceptor-ref name="fileUploadStack"></interceptor-ref>
			<result type="json">
				<param name="contentType">text/html</param>
				<param name="includeProperties">success,resultMsg</param>
			</result>
		</action>
	</package>


这里是一定要返回json-default类型的,因为前台的处理是extjs来做。都是json才行。这么配置需要引入Struts的一个插件包。就是那个struts2-json-plugin

第二个需要注意的是返回一定要<result type="json"/>,这样json类型的。

第三个需要注意的问题是<paramname="contentType">text/html</param>,这个返回的是一个text,如果不设置,会返回一个文件,类似下载文件一样,不过没有后缀名。可以保存为txt看一下,是一个json的文档。

第四个需要注意的问题是<paramname="includeProperties">success,resultMsg</param>,这里设置的是返回的json包括的数据。Struts2会自动调用Action里的getter方法来获得这2个值。这2个值在AJAX传递的时候尤其重要。

第五个需要注意的问题是<interceptor-refname="fileUploadStack"></interceptor-ref>这个一定要加上才可以传文件。

第六个问题是指定的上传路径,这里是一个写死的绝对路径。可以根据需要更改。这个路径的作用就是上传文件的临时目录。文件通过前台传过来以后,会生成一个tmp类型的文件。就是放这个文件用的。在Action中有对于这个文件的处理,说的简单就是读入这个tmp文件,然后通过获取的文件名,重新在指定的位置生成相应其他类型的文件。

五、前台设计问题

         前台使用Extjs来搭建框架界面,由于比较简单的功能。所以就使用了2个页面。一个欢迎页面,一个index向导页面。当然,后期可以再根据需要扩展。

       使用Extjs需要注意的就是api的用法。可以通过查阅官网的api获得一些帮助,里面有很清楚的示例代码。另外,网络上的一些代码也可以。不过网络上有很多低版本的Extjs开发心得。并不适用于Extjs4.比如说Extjs有一个json对象的构建器。在Ext.JSON.decode这里,而老版本的就在Ext.util.JSON.decode这。这个是通过ajax访问后台所必须的东西。否则后台返回的就是一个json对象,如果不用这个解析器要读那个对象还比较麻烦。

七、结语

用了几天时间,开发了这个比较袖珍的系统。当然以此系统为原型,其实可以开发出其他更多的系统。这些系统不外乎是对于数据的操作:增删改查。而通过Java可以轻松做到。配合上前台的Extjs框架,也能有不错的用户体验效果。

当然,本系统后续开发的内容还很多,比如高级搜索,比如物品内容的修改,删除等等。感兴趣的请关注作者的QQ406528519。作者会继续做后续开发的。欢迎感兴趣的朋友一起探讨。

PS:本程序包已经上传到本人的资源下了,可以去下载。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值