基于Java网络相册系统的设计与实现含源文件Word文件下载.docx
《基于Java网络相册系统的设计与实现含源文件Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于Java网络相册系统的设计与实现含源文件Word文件下载.docx(51页珍藏版)》请在冰豆网上搜索。
“JavaWeb应用由一组Servlet、HTML页、类,以及其他可以绑定的资源构成。
它可以在各种供应商提供的实现Servlet规范的Web应用中运行。
”
JavaWeb应用的主要特征之一就是它与Context的关系。
每个Web应用有惟一的Context。
当JavaWeb应用运行时,Servlet容器为每个Web应用创建惟一的ServletContext对象,它被同一个Web应用中所有的组件共享。
2.1.2Web工程过程
Web工程过程活动贯穿Web生命周期,从应用概念的生成到开发、发布、不断的精化和升级系统。
为了降低开发基于Web的应用系统的复杂性,需要一个描述开发基于Web的应用系统阶段的过程模型[4]。
(1)Web分析
基于Web的应用系统的需求分析是很重要的活动,需要一个系统而严密的方法。
根据Web特性和Web应用的特定需求,需要采用更为开放、灵活的需求分析方法。
(2)Web设计
Web设计不但包括功能设计和性能设计,还要包括页面风格设计,包括页面的主色调、页面框架结构、文字颜色搭配、动画和图片的放置等。
有效的Web站点设计需要注意可用性,要把基于Web的系统设计成易于导航,吸引人和有用。
现在,比较流行的Web设计方法是以用户为中心的设计。
(3)Web开发
Web开发过程包括后台数据库程序的开发、页面程序的编写和所有网页的制作。
在设计阶段决定的Web框架基础上,进行具体的页面设计和制作。
把内容提供人员的内容连接到具体的页面。
(4)Web测试
基于Web的应用系统的测试不但需要检查和验证是否按照设计的要求运行,而且还要评价系统在不同用户的浏览器的显示是否合适。
重要的是,还要从最终用户的角度进行安全性和可用性测试。
(5)Web发布
Web发布阶段主要是把开发完成,经过初步测试的Web应用系统传送到Web站点上,供用户浏览和使用。
2.2WEB系统实现技术
2.2.1WEB服务实现技术
目前比较成熟的技术主要有ASP、PHP和JSP。
现对它们做一些说明[5]:
PHP是一种跨平台的服务器端的嵌入式脚本语言。
它大量地借用C,Java和Perl语言的语法,并耦合PHP自己的特性,使WEB开发者能够快速地写出动态产生页面。
它支持目前绝大多数数据库。
JSP是Sun公司推出的新一代网站开发语言JSP可以在Serverlet和JavaBean的支持下,完成功能强大的站点程序。
JSP技术特点:
JSP是JavaServerPagedd的缩写,它是Servlet的扩展,其目的是简化建立和管理动态网站的工作。
在传统的网页HTML文件(*.htm,*.html)中加入Java程序片段(Scriptlet)和JSP标签,就构成了JSP网页。
Java程序片段可以操纵数据库,重新定向网页以及发送E-mail等,实现建立动态网站所需的功能。
所有程序操作都在服务器端执行,网络上传送给客户端的仅是得到的结果,这样大大降低了多客户浏览的要求,即使客户浏览不支持Java,也可以访问JSP网页。
在JSP的众多优点之中,其中之一的是它能把HTML编码和业务逻辑有效地分离。
通常,JSP负责生成动态HTML页面,业务逻辑由其它可重用的组件(如Servlet、JavaBean)和其他Java程序来实现,JSP可以通过Java程序片段访问这些组件。
2.2.2数据库技术
SQLServer具有单进程愈多线索的体系结构,及SQLServer只有一个服务器进程,所有的客户都连接在这个进程上[13]。
但是,该进程又细分为多个并发的线索,他们共享数据缓冲区和CPU时间,能及时捕捉各用户进程发出的存取数据的请求,然后,按一定的调度算法处理这些请求,比操作系统直接对这些请求进行调度高效的多。
SQLServer的事务处理量大,响应速度快,并能为数百或更多用户维持这种高性能。
SQLServer在核心层实现了数据完整性控制,包括建表时申明完整性和用触发器机制定义与应用有关的完整性。
支持分布式查询与更新。
2.3Tomcat的工作模式
Tomcat作为Servlet容器,有以下几种工作模式。
(1)独立的Servlet容器
在这种模式下,Tomcat可以作为独立的JavaWeb服务器,Servlet容器作为构成Web服务器的一部分而存在。
独立的Servlet容器是Tomcat的默认模式。
(2)进程内的Servlet容器
Servlet容器分为Web服务器插件和Java容器两部分。
Web服务器插件在其他Web服务器内部地址空间打开一个Java虚拟机(JVM,JavaVirtualMachine),Java容器在此JVM中运行Servlet。
如有客户端发出调用Servlet的请求,插件获得对此请求的控制并将它传递(使用JNI通信机制)给Java容器。
进程内Servlet容器对于单进程、多线程的服务器非常适合,可以提供较高的运行速度,但缺乏伸缩性。
(3)进程外的Servlet容器
Web服务器插件在其他Web服务器的外部地址空间打开一个JVM,Java容器在此JVM中运行Servlet,如有客户端发出调用Servlet的请求,插件获得对此请求的控制并将它传递(采用IPC通信机制)给Java容器。
进程外Servlet容器对客户请求的响应速度不如进程内容器,但进程外容器具有更好的伸缩性和稳定性。
2.4运行环境和开发工具的选择
Java应用程序(Applications)能在网路上开启及连结使用物件,就如同透过URLs连结使用一个本地文件系统(LocalFileSystem)。
健壮的(Robust):
由Java所编写出的程序能在多种情况下执行而具有其稳定性。
Java与C/C++最大不同点是Java有一个指针模型(PointerModel)来排除内存被覆盖(OverwritingMemory)和毁损数据(CorruptingData)的可能性。
安全的(Secure):
Java是被设计用于网络及分布式的环境中,安全性自必是一个很重要的考虑。
Java拥有数个阶层的互锁(Interlocking)保护措施,能有效地防止病毒的侵入和破坏行为的发生。
结构中立的(ArchitectureNeutral):
一般而言,网络是由很多不同机型的机器所组合而成的,CPU和作业系统体系结构均有所不同;
因此,如何使一个应用程序可以在每一种机器上执行,是一个难题。
所幸,Java的编译器产生一种结构中立的目标文件格式(ObjectFileFormat);
这使得编译码得以在很多种处理器中执行。
可移植的(Portable):
原始资料型式的大小是被指定的,例如"
float"
一直是表示一个32位元IEEE754浮点运算数字,因绝大多数的CPU都具有此共同特征。
程序库属于系统的一部份,它定义了一些可移植的程序接口,Java本身具备有很好的可移植性。
解释的(Interpreted):
Java解释器能直接地在任何机器上执行Java位元码(Bytecodes),因此在进行程序连结时,时间的节省,这对于缩短程序的开发过程,有极大的帮助。
高效能的(HighPerformance):
Java位元码迅速地能被转换成机器码(MachineCode),从位元码转换到机器码的效能几乎与C与C++没有分别。
多线程的(Multithreaded):
Java语言具有多线程的功能,这对于交互回应能力及即时执行行为是有帮助的。
动态的(Dynamic):
Java比C或C++语言更具有动态性,更能适应时刻在变的环境,Java不会因程序库的更新,而必须重新编译程序。
2.3.1运行环境
所必须具备的开发环境:
(1)JDK1.6.0
(2)SQLServer2000
(3)操作系统为WindowXP
(4)Eclipse
(5)Dreamweaver
(6)Tomcat5.0
2.3.2开发工具
Dreamweaver是建立Web站点和应用程序的专业工具。
它将可视布局工具、应用程序开发功能和代码编辑支持组合为一个功能强大的工具,使每个级别的开发人员和设计人员都可利用它快速创建界面吸引人并且基于标准的站点和应用程序。
3过程论述
3.1需求分析
3.1.1主界面设计
访问网络相册程序时首先进入网络相册的主界面,如图1所示。
在该页面中共包括功能导航区域、图片展示区域、用户操作区域及版权信息区域4个部分。
其中,功能导航区域、用户操作区域及版权信息区域是固定的内容,用来进行其他操作,而图片展示区域是按类别显示图片信息。
在图片展示区域只显示3种类别的信息,而每一种类别显示3组图片,图片类别按每组最多的图片种类信息进行显示,这些操作需要与数据库存在一定关联。
当运行程序时,首先执行index.jsp页面,在该页面中访问Servlet实现类,通过该实现类转发到另一个页面。
图1主界面布局图
3.1.2功能描述
网络相册系统是网站为用户提供的个人相片展示和存放平台,浏览查看他人相册并给予支持。
网络相册系统主要由三大主要模块组成,分别为用户注册操作、相册浏览操作及相片操作,网络相册系统功能结构图如图1所示。
图2网络相册系统功能结构图
该系统的三大模块细分为八个部分,分别如下:
(1)用户注册
用户注册了相关信息才能用此相册系统。
(2)用户登录
用户登录时需要输入用户名和密码。
若用户登录成功,则用户可以进入相册系统;
若用户登录失败,则需重新登录。
(3)分栏显示相册
分栏显示相片类别操作时用户登录后才能进行的操作,分别显示图片的类别。
(4)滚动浏览相片
用户可以对滚动的图片进行放大或缩小显示,方便用户更清晰的浏览相片。
(5)幻灯片浏览相册
将页面中的图片交替显示,并在两张图片切换时插入变换效果。
(6)批量上传相片
用户在相片上传表单中输入完整的信息后,单击“上传”按钮即可。
(7)相片加水印
用户登录成功后可以将自己上传的图片增加透明文字,形成水印的效果。
(8)相片删除
用户登陆成功后,可以将当前的图片删除,单击“删除此相片”即可删除当前相片。
3.1.3系统流程图
网络相册系统流程图如图3所示。
图3系统流程图
3.2关键技术
3.2.1对相片上传格式的设置
在计算机文件中,相片的格式多种多样,通常情况下相片可以是“JPG”、“jpg”、“gif”、“bmp”、“BMP”等格式。
因此,用户需要保证上传的图片就是相片所需的图片格式,可以通过Java源代码解决这一问题,具体如下:
(1)将系统中所允许上传的相片格式存储在String类型的数据中,并设置这个数组的对象,该对象的名称为type。
(2)设置相片的固定格式存储在String类型的fileType对象,调用java.util.Arrays类中的binarySearch()方法,该方法的参数分别为type和fileType,主要查询fileType对象内容在type数组对象中的位置并将返回结果赋予int类型变量,该变量的名称为place。
(3)判断place变量值,如果该变量值为正数,则说明fileType在type数组对象中存在,其中正数为具体位置;
如果该变量值为负数,则说明fileType在type数组对象中不存在,其负数值为-1。
3.2.2动态操作上传表单
动态操作上传表单指的就是用户可以在网页中随意增加或减少表单的个数。
如果增加上传表单的数量,则单击“增加…”按钮即可,如果要减少表单的数量,则单击“移除…”按钮将相应的表单进行移除。
现实动态表单主要是通过JavaSrcipt脚本语言实现的,当用户单击“增加…”按钮时触发addMore()方法。
3.2.3缩略图的生成
在相册管理模块中,相片资料的上传是必不可少的功能,但随着高分辨率相片的普及,上传图片的容量会很大,例如300万像素的相片文件大小基本上是大于600KB。
在很多图片的网页中,图片容量越大打开网页的速度越慢。
为了解决这个问题,用户上传图片时可以在类中处理一张大相片并缩小它。
3.2.4相片水印效果
给图片加水印就是在图片加入指定文字。
网页中的图片上面写着网站的名称和地址,添加文字的作用就是可以最大限度防止盗用,同时也起到标识相片的功能。
3.2.5图片显示特效
在相册管理模块中,图片的显示特效主要的无间断图片滚动效果和幻灯片浏览图片。
4数据库设计和连接实现
4.1数据库设计
本系统数据库采用SQLServer2000数据库,数据库名称为db_photo,在该数据库中只存在一个数据表tb_photo,该数据表的结构如下表
tb_photo数据表的结构
字段名
数据类型
是否为空
是否主键
默认值
描述
id
varchar(50)
NULL
系统自动编号
photoName
相片名称
photoSize
相片大小
photoType
相片类型
photoTime
相片上传时间
photoAddress
相片地址
username
相片上传用户名
printAdress
相片生成水印地址
smallPhoto
相片缩略图地址
4.1.1数据库的完整性和安全性
完整性:
主要是指数据的正确性和相容性,防止数据库中存在不符合语义的数据,防止错误信息的输入和输出,即所谓垃圾进垃圾出所造成的无效操作和出错处理。
在这一部分我主要是在信息提交时用脚本控制,并在写入数据库时再次进行检查[16]。
<
Scriptlanguage="
Javascript"
>
!
--
functionLoginCheck(loginform)
{
varuserid,pwd;
userid=loginform.UserId.value;
pwd=loginform.PWD.value;
if(userid=="
"
)
alert("
请输入用户名!
);
returnfalse;
}
if(pwd=="
请输入密码!
//-->
/Script>
安全性:
主是保护数据库防止恶意的破坏和非法的存取,也就是说安全性措施的防范对象是非法用户和非法操作。
4.1.2数据库的连接实现
<%@pagecontentType="
text/html;
charset=gb2312"
%>
<%@pageimport="
java.sql.*"
<html>
<body>
<%Class.forName("
com.microsoft.jdbc.sqlserver.SQLServerDriver"
).newInstance();
Stringurl="
jdbc:
microsoft:
sqlserver:
//localhost:
1433;
DatabaseName=pubs"
;
//pubs为你的数据库的
Stringuser="
sa"
Stringpassword="
Connectionconn=DriverManager.getConnection(url,user,password);
Statementstmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
Stringsql="
select*fromtest"
ResultSetrs=stmt.executeQuery(sql);
while(rs.next()){%>
第一个字段内容为:
<%=rs.getString
(1)%>
第二个字段内容为:
<%=rs.getString
(2)%>
<%}%>
<%out.print("
数据库操作成功,恭喜你"
<%rs.close();
stmt.close();
conn.close();
%>
</body>
</html>
5网络相册系统实现
5.1网络相册模块的场景
5.1.1网络相册的主界面浏览
运行本实例,打开程序主界面,如图1.1所示。
首先单击“注册”按钮,注册用户名和密码,然后进行登录。
图5-1程序主界面
登录成功后,进入个人相册管理页面,如图1.2所示。
图5-2个人相册管理页面
单击“我的相册”导航菜单,进入我的相册页面,如图1.3所示。
说明:
其中“分类相册”和“手机相册”不是本程序所要讲解的技术要点,所以没有实现功能。
图5-3我的相册页面
单击“请您上传自己的相片”超链接,进入图片上传页面,如图1.4所示。
单击“增加”按钮,可添加上传文件位置,实现多文件上传。
添写完图片信息后,单击“上传”按钮,即可上传该图片。
图5-4图片上传页面
此时,在我的相册页面中即可看到刚刚上传的图片信息,如图1.5所示。
图5-5我的相册页面
单击该图片,可进入图片浏览页面,如图1.6所示。
还可以使用幻灯片浏览。
图5-6图片浏览页面
继续单击图片,可进入图片编辑页面,如图1.7所示。
在这里可为图片添加水印文字及删除图片。
图5-7图片编辑页面
6关键技术的实现
6.1动态操作上传表单
实现动态操作表单主要是通过JavaSrcipt脚本语言实现的,当用户单击“增加...”按钮时触发addMore()方法,该方法在JavaSrcipt脚本语言定义的代码如下:
scripttype="
text/javascript"
functionaddMore(){
vartd=document.getElementById("
more"
//获取表格或其他元素的id值
varbr=document.createElement("
br"
//创建<
br>
元素
varinput=document.createElement("
input"
//创建<
input>
元素,作为提交的表单
varbutton=document.createElement("
元素,作为按钮的表单
input.type="
file"
//创建提交表单中的type属性值,该属性值设置为“file”
input.name="
//创建提交表单中的name属性值,该属性值设置为“file”
button.type="
button"
//创建按钮表单中type属性值,该属性值设置为“button”
button.value="
移除..."
//创建按钮表单中value属性值,该属性值设置为“移除...”
button.onclick=function(){//设置按钮的方法,该方法主要实现的移除表单
td.removeChild(br);
//移除<
td.removeChild(input);
td.removeChild(button);
button>
td.appendChild(br);
//添加<
td.appendChild(input);
td.appendChild(button);
/script>
6.2缩略图的生成
在相册管理模块