《Web体系结构与开发技术》实验报告说明书_第1页
《Web体系结构与开发技术》实验报告说明书_第2页
《Web体系结构与开发技术》实验报告说明书_第3页
《Web体系结构与开发技术》实验报告说明书_第4页
《Web体系结构与开发技术》实验报告说明书_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGE1/13《Web体系结构与开发技术》实验报告班级:计软二班学号:20095538姓名:郭凯实验日期:2011/12/16实验成果:实验目的了解Web体系结构与开发技术的基本知识掌握静态页面的标签结构,能够编写静态页面。掌握Flash的基本原理,会使用AdobeFlash制作Flash动画。掌握动态网站技术JSP,理解其原理,并使用JSP技术制作个人网站.二、实验原理JSP(JavaServerPages)是由SunMicrosystems公司提倡、很多公司参加一起建立的一种HYPERLINK”http://baike。baidu.com/view/348756.htm”\t”_blank"动态网页技术标准.JSP技术有点类似ASP技术,它是在传统的HYPERLINK"http://baike.baidu。com/view/828。htm”\t"_blank"网页HTML文件(*.htm,*.html)中插入JavaHYPERLINK"http://baike。baidu.com/view/1005329.htm”\t"_blank"程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件(*。jsp)。用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他HYPERLINK”http://baike。baidu。com/view/880。htm”\t"_blank"操作系统上运行.JSP技术使用HYPERLINK"http://baike。baidu.com/view/53201。htm"\t”_blank"Java编程语言编写类XML的tags和scriptlets,来封装产生动态HYPERLINK”http://baike.baidu。com/view/828.htm"\t"_blank”网页的处理规律。网页还能通过tags和scriptlets访问存在于服务端的资源的HYPERLINK”http://baike.baidu.com/view/2646378.htm"\t"_blank”应用规律.JSP将网页规律与HYPERLINK”http://baike.baidu.com/view/8972.htm"\t"_blank"网页设计和显示分离,支持可重用的基于组件的设计,使基于Web的HYPERLINK"http://baike.baidu.com/view/330120.htm"\t”_blank"应用程序的开发变得飞快和容易.WebHYPERLINK”http://b/view/899。htm"\t”_blank"服务器在遇到访问JSP网页的恳求时,首先执行其中的HYPERLINK”http://baike.baidu。com/view/1005329.htm"\t"_blank"程序段,然后将执行结果连同JSP文件中的HTMLHYPERLINK"http://baike。baid/view/41.htm"\t"_blank"代码一起返回给客户。插入的HYPERLINK"http://baike.baidu。com/view/29.htm"\t"_blank"Java程序段可以操作HYPERLINK”http://baike.baidu.com/view/1088。htm"\t"_blank”数据库、重新定向网页等,以实现建立动态网页所需要的功能.JSP与JavaHYPERLINK"http://baike。baidu。com/view/25169.htm"\t"_blank"Servlet一样,是在服务器端执行的,通常返回给HYPERLINK”http://baike.baidu.com/view/930.htm"\t"_blank”客户端的就是一个HTML文本,因此客户端只要有HYPERLINK”http://baike.baidu.com/view/7718.htm”\t"_blank”扫瞄器就能扫瞄。三、实验步骤网站前期筹备工作。网站功能设计。网站为在线音乐网站,主要功能有:用户在线听音乐,管理员后台登录,添加、管理歌手,添加、管理歌曲等功能。数据库设计。由于网站功能较少,结构较简洁,数据库设计也比较简洁,简略如下:数据库名:music_db数据表设计:admin(管理员表):idint主键自增namevarchar(10)登录名pwdvarchar(20)登录密码typeint管理员权限song(歌曲表):idint主键自增namevarchar(30)歌曲名artistvarchar(20)艺术家(歌手)albumvarchar(30)所属专辑urlvarchar(50)硬盘路径genrevarchar(10)流派durationvarchar(10)时长timesint点播次数(热度)artist(歌手表):idint主键自增namevarchar(20)艺术家名(歌手名)typevarchar(5)性别areavarchar(20)地区notevarchar(1000)简介songsint歌曲数量hotint热度名目结构设计。在开发工具MyEclipse中新建WebProject工程music_player,并创建如下名目:各名目说明:/src资源名目,包含编写的各种Java类,Servlet源文件/WebRoot网站根名目/WebRoot/admin后台管理界面的所属名目/WebRoot/conn包含连接数据库的代码文件/WebRoot/csscss样式表文件名目/WebRoot/images网站排版所需图片名目/WebRoot/jsjs代码文件名目/WebRoot/META—INF系统自动生成的名目/WebRoot/music存放上传的音乐文件名目/WebRoot/WEB-INF存放Web信息名目,包含所需类库,配置文件网站代码编写。登录界面。原理简介:通过将login.jsp页面表单的action设置为./admin/index.jsp,将表单填写的用户密码值传递给后台页面,后台index。jsp页面通过查询数据库,比对用户是否存在以及密码是否正确,如果正确,则进入后台,并设置session保存登录信息;否则返回登录页面,并通过url传递登录出错信息并显示.关键代码:见附录:代码片段1。添加歌曲界面。原理简介:后台。/admin/add_song.jsp界面显示添加歌曲表单.将表单属性设置为enctype=”multipart/form—data”使之能上传二进制文件,同时action设置为ServletUploadServlet.java,UploadServlet。java的主要功能为猎取上传的表单域的值,将其转码为UTF—8格式以及将二进制歌曲文件存储到磁盘,并将数据写入到数据库中。关键代码:见附录:代码片段2。管理歌曲及歌手.原理简介:通过查询数据库,将现有歌手及歌曲的信息以表格形式显示出来,为每一个数据添加操作(删除,修改),通过点击操作进入相应的操作页面,然后进行相应的操作,并将操作结果存如数据库,完成数据的修改。关键代码:略.防止恶意登录。为防止他人在未进行登录验证的情况下通过输入恰当的url登录后台,在登录后台页面时均会检验其是否已登录,即检验是否已设置session值,如已设置,才能登录,否则会跳转到登录页面。且session的设置只有在其登录成功后才能设置生效。当退出后,会立即清楚session值.关键代码:略。前台主页面各功能规律.原理简介:通过点击导航条,主页获得查询字符串中的值对,获得要显示的内容及定位.例如导航条中的排行榜,其链接为。/index。jsp?current=rank,则为链接到主页(即本页面),并传递current=rank值对,主页通过获得值对,知道要显示的内容为“排行榜”,于是进行相应的工作,如查询数据库,设置相应的值,然后将数据显示到页面的相应标签内。关键代码:见附录:代码片段3。前台播放歌曲功能。原理简介:播放歌曲功能主要通过加载WindowsMediaPlayer控件来实现歌曲的播放.其主要内容为<object〉标签,并通过〈param>标签为其设置参数,加载控件。歌曲的播放,暂停,音量大小由js代码掌握控件实现。当点击歌曲后面的播放链接后,如。/index.jsp?current=rank&play=13,主页通过play=13获得要播放歌曲的ID,通过查询数据库获得歌曲的磁盘路径,并将路径值设置给一个隐藏的标签,在页面初始化后,js代码获得路径值,并传递给控件,然后点击播放按钮,则能通过js播放歌曲。关键代码:见附录:代码片段4。四、实验结果代码片段1(登录验证)//推断是否已登录(即是否已设置session值)//已登录则猎取值,未登录则返回登录页面if(session.getAttribute("admin_name”)!=null)//session已设置ﻩadmin_name=session.getAttribute(”admin_name").toString();elseif(session。getAttribute(”admin_name”)==null&&request.getParameter("name")==null)//session未设置且不是从登录页面转来此页面 response。sendRedirect("../login.jsp?islogin=unlogin");else//从登录页面转来此页面,猎取表单,检验正确性{ﻩ//猎取表单数据ﻩif(request。getParameter("name")!=null) name=request.getParameter("name”)。toString(); if(request.getParameter("pwd")!=null) pwd=request。getParameter("pwd”).toString();ﻩ//转码ﻩﻩname=newString(name。getBytes("ISO-8859—1"),”UTF—8”);ﻩpwd=newString(pwd.getBytes(”ISO—8859-1"),"UTF—8”);ﻩ//查询数据库ﻩsql="select*fromadminwherename='"+name+"’";ﻩResultSetrs=stmt.executeQuery(sql);ﻩStringquery_pwd=”";ﻩﻩif(rs。next()) query_pwd=rs.getString("pwd”);ﻩ//比对密码ﻩif(query_pwd==""||!pwd.equals(query_pwd))//用户名或密码不对,重新登录 response。sendRedirect(”。./login.jsp?islogin=wrong”); else//登录成功,设置sessionﻩﻩsession。setAttribute(”admin_name",name);}代码片段2(添加歌曲的ServletUploadServlet.java)importorg.apache.commons.fileupload.FileItem;importorg。apache.commons.fileupload.FileItemFactory;importorg。apamons.fileupload。FileUploadException;importorg.apache.commons.fileupload.disk。DiskFileItemFactory;importorg.apamons.fileupload.servlet.ServletFileUpload;importjava。text.SimpleDateFormat;importjava.util。Calendar;importjava。util.Date;importjava.util。Iterator;importjava.util.List;importjava。io.*;importjava。sql。*;importjavax.servlet。*;importjavax.servlet。http。*;publicclassUploadServletextendsHttpServlet{ﻩpublicvoidservice(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOExceptionﻩ{ ﻩtryﻩ { ﻩﻩrequest.setCharacterEncoding(”UTF-8");ﻩ ﻩresponse。setContentType(”text/html;charset=UTF—8"); ﻩPrintWriterout=response。getWriter();ﻩﻩﻩﻩﻩﻩFileItemFactoryfactory=newDiskFileItemFactory();ﻩﻩ ServletFileUploadupload=newServletFileUpload(factory);ﻩﻩ List〈FileItem>items=upload。parseRequest(request); ﻩInputStreamis=null; ﻩ StringuploadPath="D:\\workspace\\music_player\\WebRoot\\music\\”;//存储路径ﻩﻩ Stringfilename="”;ﻩ ﻩﻩStringresult="";//结果字符串 ﻩ ﻩﻩbooleansuccess=false;//事务指示ﻩﻩﻩbooleansuccess1=false;ﻩﻩ booleansuccess2=false; ﻩ ﻩﻩﻩString[]valuerow=newString[4];ﻩﻩﻩﻩﻩﻩinti=0;ﻩ ﻩfor(FileItemitem:items)ﻩﻩﻩ{ﻩﻩﻩ if(item。isFormField()) ﻩﻩﻩ{ﻩﻩﻩﻩﻩﻩﻩﻩﻩﻩStringfieldname=item.getFieldName();ﻩﻩ ﻩ Stringvalue=item。getString("UTF-8”); ﻩﻩﻩﻩvaluerow[i]=value; ﻩﻩﻩ i++;ﻩﻩﻩ }ﻩ ﻩ elseif(item.getName()!=null&&!item.getName().equals(”")) ﻩ ﻩ{ ﻩﻩﻩﻩfilename=item.getName().substring(item.getName().lastIndexOf(”\\")+1);ﻩﻩﻩﻩﻩis=item.getInputStream();ﻩﻩ ﻩ}ﻩﻩﻩﻩelseif(item.getName()==null&&item。getName()。equals(”"))ﻩﻩﻩﻩﻩout.println("无文件"); ﻩﻩ}ﻩﻩ ﻩﻩ//以时间命名文件ﻩ ﻩintindex=filename.indexOf(".");ﻩﻩ Datedt=newDate();ﻩﻩﻩSimpleDateFormatsdf=newSimpleDateFormat("yyyyMMddHHmmssSSS");ﻩ ﻩfilename=filename。substring(0,index)+sdf.format(dt)+filename.substring(index);ﻩ filename=uploadPath+filename;ﻩﻩﻩﻩﻩ //连接数据库,检查歌手是否已存在,后再则开头上传ﻩ ﻩ Class.forName("com。microsoft.sqlserver.jdbc.SQLServerDriver”).newInstance(); ﻩﻩStringurl=”jdbc:sqlserver://localhost:1433;DatabaseName=music_db;characterEncoding=UTF8"; ﻩﻩStringdb_user="sa";ﻩ ﻩStringdb_pwd="sa”; ﻩ Connectionconn=DriverManager。getConnection(url,db_user,db_pwd);ﻩﻩﻩStatementstmt=conn。createStatement();ﻩ ﻩStringsql="select*fromartistwherename='”+valuerow[1]+"’";ﻩﻩﻩbooleanisexit=true;ﻩﻩﻩResultSetrs1=stmt。executeQuery(sql); ﻩﻩif(rs1。next())ﻩﻩﻩ isexit=true;//歌手已存在 ﻩﻩelse ﻩﻩﻩisexit=false;//歌手不存在ﻩ ﻩﻩﻩﻩif(!isexit) ﻩﻩ{ﻩﻩﻩﻩout.println("歌手不存在,请先〈ahref=\”./admin/add_artist.jsp\">添加〈/a〉”); ﻩ}ﻩ elseﻩﻩ {ﻩﻩﻩﻩsql=”insertintosong(name,artist,album,url,genre,times)values(’"+valuerow[0]+”',’"+valuerow[1]+"','"+valuerow[2]+"','"+filename+”',’"+valuerow[3]+”',0)";ﻩﻩﻩﻩintrs=stmt.executeUpdate(sql);ﻩ ﻩ if(rs==1) ﻩﻩﻩﻩsuccess1=true;ﻩﻩﻩﻩelseﻩﻩﻩ ﻩsuccess=false;ﻩ ﻩﻩﻩﻩ ﻩ//开头上传ﻩﻩﻩﻩif(!filename.equals("”))ﻩﻩ ﻩ{ ﻩﻩﻩﻩFileOutputStreamfos=newFileOutputStream(filename);ﻩﻩ ﻩﻩbyte[]buffer=newbyte[8192];//每次读8K字节 ﻩﻩﻩﻩintcount=0; ﻩﻩﻩ while((count=is。read(buffer))〉0)ﻩﻩﻩ ﻩ{ﻩ ﻩﻩﻩfos。write(buffer,0,count); ﻩﻩﻩﻩ}ﻩ ﻩfos.close();ﻩﻩﻩﻩ is.close();ﻩﻩﻩ ﻩsuccess2=true; ﻩﻩ }ﻩﻩ }ﻩﻩﻩﻩﻩﻩsuccess=success1&&success2;//事务成功?ﻩﻩ ﻩif(success)ﻩﻩﻩresult=”添加成功!<ahref=\”./admin/add_song.jsp\">返回</a〉";ﻩﻩelseﻩﻩ{ﻩ result="添加失败,";ﻩ ﻩif(success1==false) ﻩﻩ result+=”数据库错误,”;ﻩ ﻩif(success2==false)ﻩﻩﻩﻩresult+="上传错误,”;ﻩﻩﻩresult+="<ahref=\"./admin/add_song.jsp\">重新添加</a〉<br/>”;ﻩ }ﻩ if(success)ﻩﻩﻩout.println(result); }ﻩﻩcatch(Exceptione)ﻩﻩ{ ﻩﻩSystem.err.println(e。getMessage());ﻩ }ﻩ}}代码片段3(前台页面规律)Stringcurrent="”; if(request.getParameter("current")!=null)ﻩﻩcurrent=request.getParameter("current").toString();<%ﻩif(current.equals(”rank”))///////////////////排行榜ﻩ{%〉<divclass=”rank_left”>ﻩ<div><h3〉top10歌手</h3〉〈/div>ﻩ<div><table> ﻩ<tr〉ﻩﻩﻩ<td>歌手</td>ﻩ ﻩ<td〉歌曲数</td〉ﻩ ﻩ〈td>热度</td〉ﻩﻩ〈/tr>〈% ﻩsql="selecttop10*fromartistorderbyhotDESC";ﻩﻩrs=stmt。executeQuery(sql);ﻩﻩwhile(rs.next()) { ﻩﻩintartistid=rs。getInt(”id");ﻩﻩﻩStringname=rs.getString("name");ﻩ ﻩintsongs=rs.getInt("songs”); ﻩﻩinthot=rs.getInt(”hot”);%>ﻩ<tr> ﻩ<td><%=name%></td〉ﻩﻩ〈td>〈ahref=”./index。jsp?current=song&artistid=<%=artistid%〉”〉〈%=songs%〉</a〉</td>ﻩ <td>〈%=hot%>〈/td>ﻩ</tr><%ﻩﻩ}%〉〈/table〉〈/div></div〉<divclass="rank_right”> <div><h3>top10歌曲〈/h3〉</div> <div><table〉 <tr〉ﻩﻩ <td〉歌名〈/td>ﻩﻩﻩ<td>歌手〈/td〉ﻩﻩﻩ〈td〉播放次数</td〉ﻩ ﻩ〈td〉播放</td>ﻩﻩ</tr>〈%ﻩﻩsql=”selecttop10*fromsongorderbytimesDESC”;ﻩﻩrs=stmt。executeQuery(sql);ﻩ while(rs.next()) ﻩ{ﻩﻩﻩintsongid=rs。getInt("id”);ﻩﻩﻩStringname=rs.getString("name”);ﻩﻩﻩStringartist=rs.getString(”artist”);ﻩﻩﻩinttimes=rs.getInt(”times");%〉ﻩ<tr〉 ﻩ〈td><%=name%>〈/td〉 ﻩ<td>〈%=artist%></td>ﻩ <td>〈%=times%〉</td〉 ﻩ<td><ahref="./index。jsp?current=rank&play=〈%=songid%>">播放〈/a>〈/td>ﻩ</tr>〈%ﻩﻩ}%></table></div></div><%代码片段4(控件掌握control.js)varstate;varvarb;varvarfullscreen=0;functionloop(){WindowsMediaPlayer。playCount=2;}functionopenfile(){ﻩif(url.value=="")return;ﻩWindowsMediaPlayer。URL=url。value;}functionplayerinit(){WindowsMediaPlayer.url="";//定义你自己的文件WindowsMediaPlayer.settings。autoStart=false;}functionplay(){if(WindowsMediaPlayer.controls。isavailable('play')){WindowsMediaPlayer.controls.play();state=setInterval(”updatetime()",1000);playerinfo。innerHTML=”播放"varfullscreen=1;playerinfo2。innerHTML=’音量:’+WindowsMediaPlayer.settings.volume;}}functionvoldown(){if(WindowsMediaPlayer.settings.volume〈5){WindowsMediaPlayer.settings.volume=0;playerinfo2.innerHTML="音量:0";playerinfo1.innerHTML=’缄默中’;}else{ WindowsMediaPlayer.settings。volume-=5; playerinfo2。innerHTML=’音量:’+WindowsMediaPlayer.settings.volume;ﻩplayerinfo1。innerHTML='非静音';ﻩ}}functionvolup(){ if(WindowsMediaPlayer。settings.volume〉95) {ﻩﻩWindowsMediaPlayer。settings.volume=100;ﻩﻩplayerinfo2.innerHTML="音量:100";ﻩﻩplayerinfo1.innerHTML=’最大音'; }ﻩelse {ﻩﻩWindowsMediaPlayer.settings.volume+=5;ﻩﻩplayerinfo2.innerHTML='音量:'+WindowsMediaPlayer.settings.volume;playerinfo1。inn

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论