《XML编程技术》课程设计报告.docx
- 文档编号:8432600
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:27
- 大小:68.42KB
《XML编程技术》课程设计报告.docx
《《XML编程技术》课程设计报告.docx》由会员分享,可在线阅读,更多相关《《XML编程技术》课程设计报告.docx(27页珍藏版)》请在冰豆网上搜索。
《XML编程技术》课程设计报告
SUQIANCOLLEGE
在线相册系统
第一章系统功能分析
几乎所有人都喜欢照相,而且更喜欢展示自己、亲人的、朋友的照片。
而网络正是这样一个好的平台,即使身在千里之外,只要用鼠标点击一下就可以找打想要的资料。
我们可以把自己的照片放到网络上,然后我们的朋友就可以通过互联网看到我们的照片。
因此,开发一个在线的相册系统,完成相片上传、浏览、发表留言等功能,可以从多方面为用户提供便利,能够很好地管理用户的相片。
为实现上述功能,基于XML的在线相册系统采用了XML(ExtensibleMarkupLanguage)+JSP(JavaServerPage)技术。
XML作为全球通用的标记语言越来越受到人们的关注,成为异构平台数据交换的标准。
JSP继承了Java语言的特点,能使Web开发人员轻易地搭建网络平台,建立起功能强大的Web站点。
两者的结合,保证了在线相册系统可以顺利运行在不同的平台之上。
在线相册系统主要具备一下主要功能。
账号管理:
将用户的账号信息存储于系统中,管理员登录后可以管理用户,例如普通用户登录、注册账号、修改账号信息等。
相片管理:
这是系统的核心功能,用户登录后可以上传相片和浏览相片,并可以对相片发表评论。
留言管理:
用户登录后可以执行添加留言的操作。
XML简介:
这是显示自己对XML总结。
根据这些功能要求,设计的系统功能模块如图0所示。
图0系统功能模块
第二章系统XML文件的设计
根据系统的设计要求和模块功能分析,本节将分析和设计系统中用于存储数据的XML文件。
根据系统中所要存储的信息,我们需要创建如下XML文件。
user.xml。
pictures.xml。
messages.xml。
comments.xml。
这些XML文件的详细信息如下:
1、user.xml
users.xml文件用来保存管理员和普通用户的账号信息,该文件的定义格式如下:
xmlversion="1.0"encoding="GBK"?
>
其中,第一行的
2.pictures.xml
Pictures.xml文件用来保存用户上传得相片信息,该文件的定义格式如下:
xmlversion="1.0"encoding="GBK"?
>
01下午
02下午
02下午
其中,第1行的
3.messages.xml
Messages.xml文件用来保存用户的留言信息,该文件的定义格式如下:
xmlversion="1.0"encoding="GBK"?
>
37下午
54下午
其中,第1行的
ments.xml
comments.xml文件用来保存用户对相片的评论信息,该文件的定义格式如下:
xmlversion="1.0"encoding="GBK"?
>
55下午
其中,第1行的
第三章账户管理模块的设计
为保证系统的安全性,用户只有登录后才可以对系统进行操作,因此,需要对用户登录信息进行验证,用户登录又分为管理员登录和普通用户登录,不同身份的用户登录系统后将具有不同的操作权限,以管理员身份登录后可以注册新用户以及修改现有用户的信息。
3.1管理员登录
管理员登录页面主要用于接收管理员输入的帐号名称和密码,以便与XML文件中存储的帐号和密码进行比较。
管理员登录页面如图1所示。
图1
输入登录的管理帐号和密码后,单击“登录”按钮,将把登录信息提交给DoLogin.jsp页面,该页面的代码如下。
<%@pagecontentType="text/html;charset=GBK"%>
useBeanid="UserAdmin"scope="page"class="com.mg.admin.UserAdmin"/> <% UserAdmin.setRootPath(application.getRealPath("/data/")); Stringuid=request.getParameter("account"); Stringpwd=request.getParameter("pwd"); Stringresult=UserAdmin.login(uid,pwd); if((result.equals("Admin"))||(result.equals("User"))){ session.setAttribute("LoginSign","True"); session.setAttribute("UID",uid); session.setAttribute("Type",result); response.sendRedirect("loginsuccess.jsp"); }else{ response.sendRedirect("loginfailed.jsp"); } %> 在该页面的第4行设置获取XML文件的路径,第5—6行接收登录用户提交的帐号和密码,第7行调用JavaBean中的检查用户登录是否成功的方法,第8行判断登录用户的身份,并将用户登录成功的表示以及登录用户的级别保存在瑟session中,第12行表示登录成功则壮乡登录成功页面,第14行表示登录失败则转向登录失败页面。 在该页面中首先引入JavaBean类UserAdmin,在该类中定义了负责解析XML文件的方法,该类中的验证登录用户身份是否合法的login()方法的具体定义代码如下。 /** *用户登录系统 * *@paramuid用户ID *@parampwd密码 * *@param如果登录成功则返回Register.USER_TYPE_ADMIN *或者Register.USER_TYPE_USER。 如果登录失败,则返回""。 */ publicStringlogin(Stringuid,Stringpwd){ Documentdoc=getDoc(); if(doc! =null){ //获取根节点 Elementroot=doc.getRootElement(); Listlist=root.getChildren(); Iteratorlist_i=list.iterator(); while(list_i.hasNext()){ //获取子节点 Elemente=(Element)list_i.next(); //获取二级子节点 Iteratorrow_i=e.getChildren().iterator(); while(row_i.hasNext()){ Elementee=(Element)row_i.next(); if(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")){ returnee.getText(); } } } } return""; } 在该类中,第4行获取XML文档的根节点,第8行获取根节点的子节点,第9行获取根节点的二级子节点,第12-22行判断输入的登录帐号和密码是否与XML文档中存储的相吻合。 3.2注册帐号 以管理员的身份登录后,单击系统主页面左侧菜单栏中的“注册帐号”链接,将显示如图2所示的注册帐号页面。 图2 在该页面中可以输入新注册帐号的各种信息,其中,在输入新帐号名称的时候,可以单击右边的“检测帐号”链接来检测在系统中是否已经存在该名称的帐号。 这个操作将有JavaBean泪UserAdmin中的checkUser()方法完成,该方法的具体定义代码如下。 /** *连接当前的rootPath下的users.xml名的XML文件, *如果当前用户已经存在则返回true,否则返回false。 * *@paramuid要检查的用户ID * *@return当前用户是否存在,如果存在就返回true,否则返回false。 */ publicbooleancheckUser(Stringuid){ Documentdoc=getDoc(); if(doc! =null){ Listlist; //获取根节点 Elementroot=doc.getRootElement(); list=root.getChildren(); Iteratorlist_i=list.iterator(); while(list_i.hasNext()){ //获取子节点 Elemente=(Element)list_i.next(); //获取二级子节点 Iteratorrow_i=e.getChildren().iterator(); while(row_i.hasNext()){ Elementee=(Element)row_i.next(); if((ee.getName().equals("userid"))&& (ee.getText().equals(uid))){ returntrue; } } } } returnfalse; } 该方法中第5行获取XML文档的根节点,第9行获取子节点,第10行获取二级子节点,在第11-15行开始遍历所有子节点,用来检测是否新注册的用户名已经存在。 如果该方法返回false,则表示该用户名在系统中不存在,可以使用。 然后在页面中单击“注册”按钮,则可以将新注册的帐号信息保存到users.xml。 该操作将由JavaBean类UserAdmin中的register()方法完成,该方法的具体定义代码如下。 /** *连接当前的rootPath下的users.xml名的XML文件, *并注册新用户,如果成功则返回true,否则返回false。 * *@paramuid用户ID *@parampwd密码 *@paramname用户姓名 *@paramsex性别 *@paramage年龄 *@paramtel电话号码 *@paramaddress地址 *@paramemail */ publicbooleanregister(Stringuid,Stringpwd, Stringname,Stringsex, Stringage,Stringtel, Stringaddress,Stringemail){ booleanret=false; Documentdoc=getDoc(); if(doc! =null){ //获取根节点 Elementroot=doc.getRootElement(); Listlist=root.getChildren(); ElementnewE=newElement("user"); ElementeUserID=newElement("userid"); eUserID.setText(uid); newE.addContent(eUserID); ElementePassword=newElement("password"); ePassword.setText(pwd); newE.addContent(ePassword); ElementeName=newElement("name"); eName.setText(name); newE.addContent(eName); ElementeSex=newElement("sex"); eSex.setText(sex); newE.addContent(eSex); ElementeAge=newElement("age"); eAge.setText(age); newE.addContent(eAge); ElementeTel=newElement("tel"); eTel.setText(tel); newE.addContent(eTel); ElementeAddress=newElement("address"); eAddress.setText(address); newE.addContent(eAddress); ElementeEmail=newElement("email"); eEmail.setText(email); newE.addContent(eEmail); ElementeType=newElement("type"); eType.setText(USER_TYPE_USER); newE.addContent(eType); root.addContent(newE); //list.add(newE); //保存修改 save(doc); ret=true; } returnret; } 在该方法的第8行获取XML文档的根节点,第10-38行创建表示帐号信息的 3.3修改帐号信息 单击系统主页面左侧菜单栏中的“修改信息”链接,将显示如图3所示的修改帐号信息页面。 图3 我们可以看到,在该页面中将首相显示当前登录帐号的信息,这是由JavaBean类UserAdmin中的getUserInfo()方法完成的,该方法的具体定义代码如下。 /** *把用户信息返回到Hashtable中,其内容应该为: *userid用户ID *pwd密码 *name用户姓名 *sex性别 *age年龄 *tel电话号码 *address地址 *email *type */ publicHashtablegetUserInfo(Stringuid){ Hashtableht=newHashtable(); Documentdoc=getDoc(); if(doc! =null){ //获取根节点 Elementroot=doc.getRootElement(); Listlist=root.getChildren(); Iteratorlist_i=list.iterator(); ElementuserNode=null; while(list_i.hasNext()){ //获取子节点 Elemente=(Element)list_i.next(); //获取二级子节点 Iteratorrow_i=e.getChildren().iterator(); while(row_i.hasNext()){ Elementee=(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()){ Elementee=(Element)row_i.next(); ht.put(ee.getName(),ee.getText()); } break; }} } returnht; } } 该方法的第5行获取XML文档的根节点,第10行获取根节点的子节点,第11行获取二级子节点,第12-18行对这些子节点进行循环遍历,直到第20行判断是否找到user节点,如果找到,则退出循环。 用户可以在页面中修改帐号的信息,修改完成后,点击“保存”按钮,将把修改后的账号信息保存到users.xml文件中。 该操作将由JavaBean类UserAdmin中的modify()方法完成,该方法的具体定义代码如下: /** *连接当前的rootPath下的users.xml名的XML文件, *并修改用户帐户信息,如果成功则返回true,否则返回false。 * *@paramuid用户ID *@parampwd密码 *@paramname用户姓名 *@paramsex性别 *@paramage年龄 *@paramtel电话号码 *@paramaddress地址 *@paramemail */ publicbooleanmodify(Stringuid,Stringpwd, Stringname,Stringsex
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- XML编程技术 XML 编程 技术 课程设计 报告