




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上SUQIAN COLLEGE在 线 相 册 系 统 目 录6883专心-专注-专业第一章 系统功能分析几乎所有人都喜欢照相,而且更喜欢展示自己、亲人的、朋友的照片。而网络正是这样一个好的平台,即使身在千里之外,只要用鼠标点击一下就可以找打想要的资料。我们可以把自己的照片放到网络上,然后我们的朋友就可以通过互联网看到我们的照片。因此,开发一个在线的相册系统,完成相片上传、浏览、发表留言等功能,可以从多方面为用户提供便利,能够很好地管理用户的相片。为实现上述功能,基于XML的在线相册系统采用了XML(Extensible Markup Lang uage)+JSP(Jav
2、a Server Page)技术。XML作为全球通用的标记语言越来越受到人们的关注,成为异构平台数据交换的标准。JSP继承了Java语言的特点,能使Web开发人员轻易地搭建网络平台,建立起功能强大的Web站点。两者的结合,保证了在线相册系统可以顺利运行在不同的平台之上。在线相册系统主要具备一下主要功能。账号管理:将用户的账号信息存储于系统中,管理员登录后可以管理用户,例如普通用户登录、注册账号、修改账号信息等。相片管理:这是系统的核心功能,用户登录后可以上传相片和浏览相片,并可以对相片发表评论。留言管理:用户登录后可以执行添加留言的操作。XML简介:这是显示自己对XML总结。根据这些功能要求,
3、设计的系统功能模块如图0所示。在线相册系统账户管理相片管理留言管理XML简介注册账号用户登录修改账户上传相片相片评论添加留言浏览相片删除留言显示简介图 0系统功能模块第二章系统XML文件的设计根据系统的设计要求和模块功能分析,本节将分析和设计系统中用于存储数据的XML文件。根据系统中所要存储的信息,我们需要创建如下XML文件。 user.xml。 pictures.xml。 messages.xml。 comments.xml。这些XML文件的详细信息如下:1、user.xmlusers.xml文件用来保存管理员和普通用户的账号信息,该文件的定义格式如下:<?xml version=&q
4、uot;1.0" encoding="GBK"?><users> <user> <userid>zhouchenchen</userid> <password></password> <name>zhouchenchen</name> <sex>female</sex> <age>22</age> <tel></tel> <address>safsfsgfsgsfs</add
5、ress> <email></email> <type>Admin</type> </user> <user> <userid>songqian</userid> <password></password> <name>songqian</name> <sex>female</sex> <age>25</age> <tel>110</tel> <address>s
6、uqiancollage</address> <email>120t</email> <type>User</type> </user></users> 其中,第一行的<users>是XML文件的根标签,每个<user>表示一个账户的信息,第3行的<userid>标签表示帐号的用户名,第4行的<password>标签表示帐号的密码,第5行的<name>标签表示用户的姓名,第6行的<sex>标签表示用户的性别,第7行的<age>标
7、签表示用户的年龄,第8行的<tel>标签表示用户的电话,第9行的<address>标签表示用户的地址,第10行的<email>标签表示用户的邮箱地址,第11行<type>标签表示用户的类型,如果上述标签为空标签则表示该标签的内容为空。2.pictures.xmlPictures.xml文件用来保存用户上传得相片信息,该文件的定义格式如下:<?xml version="1.0" encoding="GBK"?><pictures> <picture> <title&g
8、t;sf</title> <content>zhouchenchen_76_未命名.jpg</content> <datetime>2011-11-09 06:01 下午</datetime> <userid>zhouchenchen</userid> </picture> <picture> <title>ww</title> <content>zhouchenchen_15_1.jpg</content> <datetime>
9、;2011-11-09 06:02 下午</datetime> <userid>zhouchenchen</userid> </picture> <picture> <title>sd</title> <content>zhouchenchen_83_2.jpg</content> <datetime>2011-11-09 06:02 下午</datetime> <userid>zhouchenchen</userid> </pict
10、ure></pictures> 其中,第1行的<pictures>标签时XML文件的根标签,每个<pictures>标签表示一个相片的信息,第3行的<title>标签表示相片的标题,第4行的<content>标签表示相片的文件名,第5行的<datetime>标签表示相片的上传时间,第6行的<userid>标签表示上传相片的帐号的用户名。3.messages.xmlMessages.xml文件用来保存用户的留言信息,该文件的定义格式如下:<?xml version="1.0" en
11、coding="GBK"?><messages> <message> <title>trr</title> <content>afasfdgfsdf</content> <datetime>2011-11-09 03:37 下午</datetime> <userid>zhouchenchen</userid> </message> <message> <title>fsaf</title> <co
12、ntent>good</content> <datetime>2011-11-09 03:54 下午</datetime> <userid>zhouchenchen</userid> </message></messages> 其中,第1行的<messages>标签时XML文件的根标签,每个<message>标签表示一条留言信息,id属性是自动添加的留言的编号,第3行的<title>标签表示留言的标题,第4行的<content>标签表示留言的内容,第5行的&
13、lt;datetime>标签表示留言的添加时间,第6行的<user>标签表示留言帐号的用户姓名。ments.xmlcomments.xml文件用来保存用户对相片的评论信息,该文件的定义格式如下:<?xml version="1.0" encoding="GBK"?><comments> <comment> <content>beautiful</content> <filename>zhouchenchen_15_1.jpg</filename> <
14、;datetime>2011-11-09 09:55 下午</datetime> <userid>zhouchenchen</userid> </comment></comments> 其中,第1行的<comments>标签时XML文件的根标签,每个<comment>标签表示一条相片的评论信息,第3行的<content>标签表示评论的内容,第4行的<filename>标签表示评论的相片的文件名,第5行的<datetime>标签表示发表评论的时间,第6行的<user
15、id>标签表示发表的评论的帐号的用户名。第三章 账户管理模块的设计为保证系统的安全性,用户只有登录后才可以对系统进行操作,因此,需要对用户登录信息进行验证,用户登录又分为管理员登录和普通用户登录,不同身份的用户登录系统后将具有不同的操作权限,以管理员身份登录后可以注册新用户以及修改现有用户的信息。3.1 管理员登录管理员登录页面主要用于接收管理员输入的帐号名称和密码,以便与XML文件中存储的帐号和密码进行比较。管理员登录页面如图1所示。 图 1输入登录的管理帐号和密码后,单击“登录”按钮,将把登录信息提交给DoLogin.jsp页面,该页面的代码如下。<% page content
16、Type="text/html;charset=GBK"%><jsp:useBean id="UserAdmin" scope="page" class="com.mg.admin.UserAdmin"/><%UserAdmin.setRootPath(application.getRealPath("/data/");String uid = request.getParameter("account");String pwd = request.g
17、etParameter("pwd");String result = UserAdmin.login(uid, pwd);if (result.equals("Admin") | (result.equals("User") session.setAttribute("LoginSign", "True"); session.setAttribute("UID", uid); session.setAttribute("Type", result); re
18、sponse.sendRedirect("loginsuccess.jsp"); else response.sendRedirect("loginfailed.jsp");%>在该页面的第4行设置获取XML文件的路径,第56行接收登录用户提交的帐号和密码,第7行调用JavaBean中的检查用户登录是否成功的方法,第8行判断登录用户的身份,并将用户登录成功的表示以及登录用户的级别保存在瑟session中,第12行表示登录成功则壮乡登录成功页面,第14行表示登录失败则转向登录失败页面。在该页面中首先引入JavaBean类UserAdmin,在该类中定
19、义了负责解析XML文件的方法,该类中的验证登录用户身份是否合法的login()方法的具体定义代码如下。 /* * 用户登录系统 * <p> * param uid 用户ID * param pwd 密码 * <p> * param 如果登录成功则返回Register.USER_TYPE_ADMIN * 或者Register.USER_TYPE_USER。如果登录失败,则返回""。 */ public String login(String uid, String pwd) Document doc = getDoc(); if (doc != nul
20、l) / 获取根节点 Element root = doc.getRootElement(); List list = root.getChildren(); Iterator list_i = list.iterator(); while (list_i.hasNext() /获取子节点 Element e = (Element)list_i.next(); /获取二级子节点 Iterator row_i = e.getChildren().iterator(); while (row_i.hasNext() Element ee = (Element) row_i.next(); if (
21、ee.getName().equals("userid") if (!ee.getText().equals(uid) break; if (ee.getName().equals("password") if (!ee.getText().equals(pwd) break; if (ee.getName().equals("type") return ee.getText(); return "" 在该类中,第4行获取XML文档的根节点,第8行获取根节点的子节点,第9行获取根节点的二级子节点,第12-22行判断
22、输入的登录帐号和密码是否与XML文档中存储的相吻合。3.2 注册帐号以管理员的身份登录后,单击系统主页面左侧菜单栏中的“注册帐号”链接,将显示如图2所示的注册帐号页面。 图 2在该页面中可以输入新注册帐号的各种信息,其中,在输入新帐号名称的时候,可以单击右边的“检测帐号”链接来检测在系统中是否已经存在该名称的帐号。这个操作将有JavaBean泪UserAdmin中的checkUser()方法完成,该方法的具体定义代码如下。 /* * 连接当前的rootPath下的users.xml名的XML文件, * 如果当前用户已经存在则返回true,否则返回false。 * <p> * par
23、am uid 要检查的用户ID * <p> * return 当前用户是否存在,如果存在就返回true,否则返回false。 */ public boolean checkUser(String uid) Document doc = getDoc(); if (doc != null) List list; / 获取根节点 Element root = doc.getRootElement(); list = root.getChildren(); Iterator list_i = list.iterator(); while (list_i.hasNext() /获取子节点
24、Element e = (Element)list_i.next(); /获取二级子节点 Iterator row_i = e.getChildren().iterator(); while (row_i.hasNext() Element ee = (Element) row_i.next(); if (ee.getName().equals("userid") && (ee.getText().equals(uid) return true; return false; 该方法中第5行获取XML文档的根节点,第9行获取子节点,第10行获取二级子节点,在第
25、11-15行开始遍历所有子节点,用来检测是否新注册的用户名已经存在。如果该方法返回false,则表示该用户名在系统中不存在,可以使用。然后在页面中单击“注册”按钮,则可以将新注册的帐号信息保存到users.xml。该操作将由JavaBean类UserAdmin中的register()方法完成,该方法的具体定义代码如下。 /* * 连接当前的rootPath下的users.xml名的XML文件, * 并注册新用户,如果成功则返回true,否则返回false。 * <p> * param uid 用户ID * param pwd 密码 * param name 用户姓名 * param
26、 sex 性别 * param age 年龄 * param tel 电话号码 * param address 地址 * param email */ public boolean register(String uid, String pwd, String name,String sex, String age, String tel, String address, String email) boolean ret = false; Document doc=getDoc(); if (doc != null) / 获取根节点 Element root = doc.getRootEle
27、ment(); List list = root.getChildren(); Element newE = new Element("user"); Element eUserID = new Element("userid"); eUserID.setText(uid); newE.addContent(eUserID); Element ePassword = new Element("password"); ePassword.setText(pwd); newE.addContent(ePassword); Element
28、eName = new Element("name"); eName.setText(name); newE.addContent(eName); Element eSex = new Element("sex"); eSex.setText(sex); newE.addContent(eSex); Element eAge = new Element("age"); eAge.setText(age); newE.addContent(eAge); Element eTel = new Element("tel"
29、); eTel.setText(tel); newE.addContent(eTel); Element eAddress = new Element("address"); eAddress.setText(address); newE.addContent(eAddress); Element eEmail = new Element("email"); eEmail.setText(email); newE.addContent(eEmail); Element eType = new Element("type"); eTyp
30、e.setText(USER_TYPE_USER); newE.addContent(eType); root.addContent(newE); /list.add(newE); /保存修改 save(doc); ret = true; return ret; 在该方法的第8行获取XML文档的根节点,第10-38行创建表示帐号信息的<user>元素及其子元素,第39行调用底48-59行定义的save()方法,将添加的元素添加到根元素上。3.3 修改帐号信息单击系统主页面左侧菜单栏中的“修改信息”链接,将显示如图3所示的修改帐号信息页面。 图 3我们可以看到,在该页面中将首相显示当
31、前登录帐号的信息,这是由JavaBean类UserAdmin中的getUserInfo()方法完成的,该方法的具体定义代码如下。 /* * 把用户信息返回到Hashtable中,其内容应该为: * userid 用户ID * pwd 密码 * name 用户姓名 * sex 性别 * age 年龄 * tel 电话号码 * address 地址 * email * type */ public Hashtable getUserInfo(String uid) Hashtable ht = new Hashtable(); Document doc = getDoc(); if (doc !=
32、 null) / 获取根节点 Element root = doc.getRootElement(); List list = root.getChildren(); Iterator list_i = list.iterator(); Element userNode=null; while (list_i.hasNext() /获取子节点 Element e = (Element)list_i.next(); /获取二级子节点 Iterator row_i = e.getChildren().iterator(); while (row_i.hasNext() Element ee = (
33、Element) row_i.next(); if (ee.getName().equals("userid") && (ee.getText().equals(uid) userNode = e; break; /找到user节点后,退出循环 if (userNode != null) row_i = userNode.getChildren().iterator(); while (row_i.hasNext() Element ee = (Element) row_i.next(); ht.put(ee.getName(), ee.getText();
34、 break; return ht; 该方法的第5行获取XML文档的根节点,第10行获取根节点的子节点,第11行获取二级子节点,第12-18行对这些子节点进行循环遍历,直到第20行判断是否找到user节点,如果找到,则退出循环。用户可以在页面中修改帐号的信息,修改完成后,点击“保存”按钮,将把修改后的账号信息保存到users.xml文件中。该操作将由JavaBean类UserAdmin中的modify()方法完成,该方法的具体定义代码如下: /* * 连接当前的rootPath下的users.xml名的XML文件, * 并修改用户帐户信息,如果成功则返回true,否则返回false。 * &l
35、t;p> * param uid 用户ID * param pwd 密码 * param name 用户姓名 * param sex 性别 * param age 年龄 * param tel 电话号码 * param address 地址 * param email */ public boolean modify(String uid, String pwd, String name,String sex, String age, String tel, String address, String email) boolean ret = false; Document doc=g
36、etDoc(); if (doc != null) String params = new String8; params0 = uid; params1 = pwd; params2 = name; params3 = sex; params4 = age; params5 = tel; params6 = address; params7 = email; / 获取根节点 Element root = doc.getRootElement(); List list = root.getChildren(); Iterator list_i = list.iterator(); Elemen
37、t userNode=null; while (list_i.hasNext() /获取子节点 Element e = (Element)list_i.next(); /获取二级子节点 Iterator row_i = e.getChildren().iterator(); while (row_i.hasNext() Element ee = (Element) row_i.next(); if (ee.getName().equals("userid") && (ee.getText().equals(uid) userNode = e; break;
38、/找到user节点后,修改数据,然后退出循环 int index = 0; if (userNode != null) row_i = userNode.getChildren().iterator(); while (row_i.hasNext() Element ee = (Element) row_i.next(); ee.setText(paramsindex); if (+index >= params.length) break; break; /保存修改 save(doc); ret = true; return ret;该方法的第8-16行获取方法传递的实参,第17行获取
39、XML文档的根节点,第22行获取根节点的子节点,第23行获取二级子节点,第32-44行表示找到user节点后,修改数据,然后退出循环,第45行调用save()方法,保存修改后的XML文档。第四章 相片管理模块的设计在系统中为了保护用户的隐私,不同的用户登录后可以上传相片以及浏览自己所上传过的相片,并且还可以对相片发表评论。但不同的用户之间是不能相互访问的。4.1 上传相片登录后,单击页面左侧菜单栏中的“上传相片”链接,将显示如图4所示的相片上传页面。 图4在该页面中输入相片的标题,然后单击“浏览.”按钮就可以在本地选择要上传的相片,单击“上传.”按钮就将把相片上传到服务器中。具体的上传操作是通
40、过FileUpload类和MultipartStream类完成的,由于不涉及到XML操作,在此就不再赘述,当上传成功后,需要将上传相片的信息保存到pictures.xml文件中,这个操作将由JavaBean类PictureAdmin中的add()方法完成,该方法的具体定义代码如下。 /* * 连接当前的rootPath下的pictures.xml名的XML文件, * 并添加一个相片,如果成功则返回true,否则返回false。 * <p> * param message Message对象 */ public boolean add(Picture picture) boolean
41、 ret = false; Document doc=getDoc(); if (doc != null) / 获取根节点 Element root = doc.getRootElement(); Element newE = new Element("picture"); Element eTitle = new Element("title"); eTitle.setText(picture.getTitle(); newE.addContent(eTitle); Element eContent = new Element("conten
42、t"); eContent.setText(picture.getFileName(); newE.addContent(eContent); Element eDateTime = new Element("datetime"); eDateTime.setText(picture.getDateTime(); newE.addContent(eDateTime); Element eUserID = new Element("userid"); eUserID.setText(picture.getUser(); newE.addConte
43、nt(eUserID); root.addContent(newE); /保存修改 save(doc); ret = true; return ret;该方法的第5行获取XML文档的根节点,第6-8行创建表示新的相片信息的<picture>元素及其子元素,第19行将添加的元素添加到根元素上,第20行调用save()方法,保存XML文档。4.2 浏览相片用户登录后,单击系统主页面左侧菜单栏中的“相片浏览”链接,将显示如图5所示的浏览相片页面。图5浏览相片页面将从pictures.xml文件中检索当前用户以前所上传的所有相片,并将其显示在页面上。这个操作将由JavaBean 类Pict
44、ureAdmin中的getPictures()方法完成,该方法的具体定义代码如下。 /* * 连接当前的rootPath下的pictures.xml名的XML文件, * 并返回当前用户的所有的相片。 * <p> * param uid 当前用户的ID。 * <p> * return 封装了Picture对象的Vecotr对象。 */ public Vector getPictures(String uid) Vector ret = new Vector(); Document doc=getDoc(); if (doc != null) / 获取根节点 Element
45、 root = doc.getRootElement(); List list = root.getChildren(); Iterator list_i = list.iterator(); Element userNode=null; while (list_i.hasNext() /获取子节点 Element e = (Element)list_i.next(); /获取二级子节点 List details = e.getChildren(); if (details.size()<Picture.ELEMENT_NUM) /错误 break; /添加Picture对象 Strin
46、g text1 = (Element)details.get(0).getText(); String text2 = (Element)details.get(1).getText(); String text3 = (Element)details.get(2).getText(); String text4 = (Element)details.get(3).getText(); if (!text4.equals(uid) continue; Picture picture = new Picture(); picture.setTitle(text1); picture.setFileName(text2); picture.setDateTime(text3); picture.setUser(text4); ret.add(picture); return re
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2025学年辽宁省七校协作体高一下学期3月联考语文试题及答案
- 2024-2025学年河北省保定市高一下学期开学考英语试题及答案
- 宠物常见疾病的营养干预试题及答案
- 坚实基础的统计学试题与答案2024
- 2024计算机基础考试复习计划试题及答案
- 美容师考试情境模拟与试题答案
- 2024年汽车美容师技能操作评估试题及答案
- 小学语文拼音试题及答案
- 季节变化对宠物营养需求的影响分析试题及答案
- 六年级语文行为习惯培养题试题及答案
- 2024年广东惠州仲恺高新区招聘中学教师笔试真题
- 马化腾的创业故事
- 高中主题班会 心怀感恩志存高远课件-高一上学期感恩教育主题班会
- 2024年晋城市城区城市建设投资经营有限公司招聘考试真题
- 社工证笔试题库及答案
- 高考写作专项突破之核心概念阐释要诀 课件
- 2025年全国质量月活动总结参考(2篇)
- 口腔四手操作培训
- 2025年月度工作日历含农历节假日电子表格版
- 第37章 真菌学概论课件
- 总裁助理岗位职责
评论
0/150
提交评论