2023年web实验报告网盘系统_第1页
2023年web实验报告网盘系统_第2页
2023年web实验报告网盘系统_第3页
2023年web实验报告网盘系统_第4页
2023年web实验报告网盘系统_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

家3二…学秦皇岛分校

NorthEasternUniversityAtQinHuangDao

Web开发与应用

实验报告

系别电子信息系

专业计算机科学与技术

班级学号_______________________________

姓名_______________________________

指导教师_______________________________

2023年12月27月

一,相关技术

本系统重要采用jsp,serv1et,session,mysq1,html,xml,等知识

点,配合Navicat软件,采用以下技术实现:

1数据存储

由于本系统是个简易网盘,故涉及到的数据量比较小,故采用小巧的MySQL,

鉴于MySQL没有公司管理器,于是采用Navicat软件以简化mysql的使用。

2页面显示

由于涉及到的动态页面,故页面的主语言选用jsp。

3后台解决

由于涉及到连接数据库,处在安全考虑,有关数据库的连接操作至于后台;

而动态页面需要的动态事件的触发、以及响应等重要事件均放在servlet中进

行。

4数据传递

鉴于本系统的页面较多,故使用session进行数据的传递。

二,系统需求分析

1.用户登陆

未注册用户可以进入注册页面进行注册,己注册的用户可以进行登录,若用

户不存或者密码错误则提醒重新输入。用户名密码匹配,则进入个人主页。

2.用户注册

可以进行注册验证,对“用户名反复”,“密码与确认不一致”等问题就行

纠错,并能将对的的数据输入到数据库中。

3.上传文献

可以上传文献到D:'中,并能将文献的名字存入到数据库中。

4.下载文献

会在页面中显示每个用户已经上传的所有文献,并可以下载上述文献。

三,系统设计

1.数据库

droptableifexistsuser;

droptabieifexistsfile;

/*Table:user

*/

createtabledata

(

idvarchar(100),

passwordvarchar(100)

primarykey(id)

);

/*Tab1e:file

*/

ereatetab1euser

(

idvarchar(20),

urlvarchar(20),

primarykey(id,url),

foreignkey(id)referencesuser(id)

);

2.具体代码:

=====================Login.jsp=:

V%@pagelanguage="java"import="Java.utJ1.pageEncoding="GB

2312r,%>

<%

Stringpath=request,getContextPath();

StringbasePath=request.getScheme()+H"+request,getServerNam

e()+":"+request.getServerPort()+path+"/";

%>

<!DOCTYPEHTMLPUBLIC"-//W3c//DTDHTML4.01Transit!onal//EN">

<html>

<head>

<basehref=r,<%-basePath%>">

<title>MyJSP1Login.jsp1startingpage</title>

o<metahttp-equiv="pragma"content="no-cache">

o<metahttp-equiv="cache-control"content=Mno-cache">

o<metahttp—equiv="expires"content="0">

M

o<metahttp-equiv="keywords"content=keywordlfkeyword2,keyword3">

<metahttp-equiv="description"content="Thisismypage”>

0V!一

o<linkre1='stylesheet"type=Htext/cssnhref=nsty1es.css*'>

—>

</head>

<body>

<formmethod="get"action=rrtestLogin.jsp">

<p></P>

<p></p>

<center>欢迎!</center>

<p></p>

<p></p>

<center〉用户名:<inputtype="text"name=nusername"/></center>

<p></p>

<center> : 密码:<inputtype="password"name=Hpassword"/><

/center>

<p></p>

<centerxinputtype="reset"name="reset"/>   

&nbsP;<inputtype="submit"name="submit"value="submit"/><

/center>

<p></p>

<p></p>

<center>&nbsP;  Snbsp;   &nbsP; &n

bsp; ; ;<ahref="legister.JspM>尚未注册?V/a〉</center>

</form>

</body>

</htm1>

=====================testLogin.jsp=========

<%@pagelanguage="java"import="java.uti1.*"imp0rt="uti1.JdbcUtil

opageEncoding="GB2312">

<%

oStringpath=request.getContextPath();

StringbasePath=request.getScheme()+”

oo+request.getServerName()+":"+request,getServerPort()

o+path+n/";

%>

<!DocTYPEHTMLPUBLICn-//w3c//DTDHTML4.01Transitiona1//ENn>

<%@pagelanguage="java"import="java.utii"import="jav

a.sql.

<%@pageimport=,rJava.io.*,r%>

<%@pageimport="cOm.mysql.jdbc.Drivern%>

<html>

<head>

o<ti注册V/tit1e>

</head>

6Vbody>

0<%

ooStringreg_name=request.getParameter("username");

oStringreg_pass=request.getParameter("password");

ooConnectioncon=JdbcUtil.getConnection();

ooResu1tSetrs=nu11;

o©Statementst=nul1;

obooleanf1ag=fa1se;

try{

oooost=con.createStatement();

ooors=st.executeQuery("seiect*fromuser");

owhile(rs.next()){

oif(reg_name.equals(rs.getString(1))

oooo&®_pass.equals(rs.getString(2))){

oosession.setAttribute("username",reg_name);

t>t>out

00.println("<script>alert('欢迎回来”

ooooeo+reg_name

ooooo+n!1);location.replace(1UploadFile.jsp1);</scr

iPt>");

oooflag=true;ooo

oobreak;

ooo}elseif(reg_name.equals(rs.getString(1))

ooo&&!reg_Pass.equals(rs.getString(2))){

ooout

ooo.printIn(**<script>a1ert('密码错误!');10cation.rep1

ace(*Login.jsp1);</script>");

o&of1ag=true;o

oobreak;

oDOO}

0)

00if(!flag)

0{

oot>oUt

oooooo.println(n<script>alert(1用户名不存在!,);location.re

place(1Login.jspf);</script>");

000)

ooors.close();

ocon.close();

o}catch(Exceptione){

Out.printIn(e);

05>

</body>

</html>

=====================Register.jsp=======

<%@page1anguage="java"import=.ut/2.pageEncoding="GB2312n%>

<%

Stringpath=request.getContextPath();

StringbasePath=request.getscheme()+n://H+request.getServerName()

+”:"+request.getServerPort()+path+”/”;

%>

<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//ENH>

<htm1>

<head>

<basehref=,r<%=basePath%>">

<title>MyJSP1Login.jsp1startingpage</title>

<metahttp-equiN="Pragma"content="no-cache">

o<metahttp-equi.v="cache-contro1"content="no-cache">

<metahttp—equiv="expiresncontent="0">

-

o<metahttpequiv="keywords"content="keyw0rdl,keyword2fkeyword3

>

<metahttp-equiv="description"content="Thisismypage">

<!——

<linkre1="stylesheet"type=ntext/cssnhref='*styles.cssM>

—>

</head>

<body>

<formmethod="getnaction="testRegister.jsp">

<p></p>

<p></p>

<center>欢迎加入我们!</center>

<P></p>

<P></p>

<center>  ;请输入用户名:<inputtype="Iext"name="us

ername"/></center>

<p></p>

<center>&nbsP;&nbsP;  请输入密码:<inputtype="password”

name="password"id="password"'*/></center>

<p></p>

nter〉请再次输入密码:〈inputtype="password"name="regpassword"i

d="regpass""/></center>

oo<center>

oo<inputtype="reset“name="reset"/>

ooo<inputtype="submit"name=,rsz/bmit"value="submit"/>

000</center>

oo</form>

</body>

</html>

=====================testRegister.jsp======

<%@page1anguage=Mjava"import="java,util.*,rimport="util.Jdbc

Util〃

pageEneoding="GB2312"%>

<%

oStringpath=request.getContextPath();

StringbasePath=request.getScheme()+"://"

000+requeSt.getServerName()+":"+request.getServerPort()

+path+“/,

%>

<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitiona1//ENU>

<%@pagelanguage="java"import=r,java.util.import=,rjava.sq1.★,r%>

<%@pageimport="java.io.★w%>

<%0pageimport="com.mysq1.jdbc.Driver"%>

<html>

<head>

<t注册</title>

o</head>

o<body>

0oStringreg_name=request.getParameter("username");

0oStringreg_pass=request.getParameter('*password**);

oStringreg_rpass=request,getParameter(Hregpassword");

0C0nnectioncon=JdbcUtil.getConnecti0n();

0Resu1tSetrs=nu11;

oStatementst=null;

boo1eanflagl=true;

try(

st=con.createStatement();

oors=st.executeQuery("seiect*fromuser");

while(rs.next()){

oo«if(reg_name.equals(rs.getString(1))){

aooout.println("<br>Vbr><center><B>请重新注册V/B></center>");

oooOUt

oooo.print1n(n<script>alert('对不起,用户名,,

ooooooo+reg_name

t>ooo+”已存在');location.replace('Register.jsp*);</script>");

oooooflag1=false;

oooSystem.out.print1n("movedln);

oobreak;

o)

ooif(f1ag1){

oSystem.out.println("moved");

oif(!reg_pass.equals(reg_rpass)){

oooOUt

ooo.printIn("escript>alert('密码不一致,请重新输入1);location.r

p1ace(*Register.jsp')</script>");

}e1seif(reg_pass,equals(reg_rpass)){

oooPreparedStatementstat=con

n

oo.prepareStatement(insertuservalues(?z?)");

ooostat.setString(1zregname);

oostat.setString(2,reg_pass);

ooostat.executeUpdate();

ooooout.println("<br><br><cen注册成功</B></center>n);

aoout.printin('*<br><br><center>您的用户名是:”+reg_name

o00000+,,</center>n);

000oout.print1n("<br><center>您的密码是:”+reg_pass+H</center

>*1);

00stat.close();

000Stringname_reged=nu11:

0session.setAttribute("username",reg_name);

00out

0a0.Print1n("<script>a1ert(z谢谢注册');location.replace('U

ploadFile.jsp*)</script>M);

00)

0ors.close();

000ocon.c1ose();

}catch(Exceptione){

00oout.println(e);

0)

0°>

o</body>

</htm1>

================Up1oadFile,jsp=============

<%@page1anguage=,rjava"import="java.uti!.★"pageEncoding="GB2

3J2ri%>

<%

Stringpath=request.getContextPath();

oStringbasePath=request.getscheme()+"://n

oo+request.getServerName()+":"+request.getServerPort()

oo+path+"/";

%>

<!DOCTYPEHTMLPUBLICn-//W3C//DTDHTML4.01Transitiona1//ENH>

<htm1>

<head>

<basehref=n<%=basePath%>">

<title>UP1oadFi1e</title>

oo<metahttp-equiv="pragma"content="no-cacheH>

<metahttp-equiv="cache-control"content="no~cache">

<metahttp-equiv=f'expires"content="0lr>

o<metahttP-equiv="keywords"content="keywordl,keyword2,keywor

d3">

<metahttp-equiv=Mdescription"content="Thisismypagerr>

o<!——

o<linkre1fstylesheet"type=Htext/css”href="styles.cssn>

0—>

</head>

<body>

<formenctype=nmultipart/form-data"meth0d="post"name="uploadf

orm"

action="serv1et/Upload">

0你的名字是:〈书」session.getAttribute("username")%>

00<p>

0请选择你要上传的文献:

00o</P>

oo<inputtype=Mfile"name="file'•>

000<p>

oo ;

000</P>

00<p>

oo 

o<inputtype="submit"va1ue="submit"name="button2">

o。o〈/p>

oo</form>

</body>

</html>

=====================DowmloadFile.jsp========

page1anguage="java"import="java.uti1"import=nutil.JdbcUti

1〃

opageEncoding=wGB2312M%>

<%

Stringpath=request.getContextPath();

StringbasePath=request.getScheme()+”:〃"+request.g

etServerName()+":"+request.getServerPort()+path+"/

%>

<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//ENn>

<%@page1anguage="java"import="java.uti1."import="java.sQ1.★

,r%>

<%@pageimport="java.iO.*M%>

PageimporX.="com.mysql.jdbe.Driverw%>

<htm1>

o<head>

(basehref=z/<%=basePath>>n>

o<tit1e>MyJSP'DownloadFi1e.jsp'startingpage</title>

<metahttp-equiv="pragma"content="no-cachez,>

<metahttp-equiv="cache-contro1"content="no-cache">

o<metahttp-equiv="expires“content="0">

o<metahttp-equiv="keywords"content="keywordlfkeyword2,keyword3">

oo<metahttp-equiv="description"content="Thisismypage”>

o<!——

o<linkre1="stylesh㊀et"type="text/cssHhref="styles.css">

0->

o</head>

o<body>

o<formmethod="get11name="downloadform"action="serv1et/Download">

°oo你的名字是:session.getAttribute(nusername")t>

<P>

。请选择你要下载的文献:

00</p>

<%

//HttpSessionsession=request.getSession();

Stringname=(String)session.getAttribute("usernamen);

Connect!oncon=JdbcUti1.getConnection();

aResultSetrs=nul1;

Statementst=nul1;

try

(

st=con.createStatement();

rs=st.executeQuery("se1ect*fromfile");

while(rs.next())

{

if(name.equa1s(rs.getString(1)))

{

Stringur1=rs.getString(2);

out.println(url);

Stringfilepath="servlet/Download?filepath=/u+url;

out.println(n<ahref=n+fi1epath+'1>n);

out.printin("downloadthisfi1e");

out.printin(H</a>");

out.println("<p></p>");

)

)

rs.cl0se();

con.close();

)

catch(Exceptione)

(

out.print1n(e);

)

Odd%>

Vbr〉

oo</form>

o</body>

</html>

=====================Upload.java=================

packageserviet;

importjava.io.Fi1e;

importjava.io.IOException;

importjava.io.PrintWriter;

importjava.sql.SQLException;

importjava,uti1.List;

importjavax.servlet.ServletException;

importjavax.serv1et.http.HttpServ1et;

importjavax.servlet.http.HttpServ1etRequest;

importjavax.servlet.http.HttpServletResponse;

importjavax.serv1et.http.HttpSession;

importorg.apache.commons.fi1eupload.DefaultFileItemFactory;

importorg.apachmons.fileupload.DiskFi1eUp1oad;

importorg.apache.commons.fileup1oad.FileItem;

importcom.mysq1.jdbc.Connection;

importcom.mysq1.jdbc.PreparedStatement;

importcom.mysql.jdbc.ResultSet;

importcom.mysq1.jdbe.Statement;

importuti1.JdbcUtiI;

publicclassUploadextendsHttpServlet{

叩ub1icUpload(){

。。super();

b}

opublicvoiddestroy(){

super.destroy();//Justputs"destroy”stringin1og

^1/Putyourcodehere

。}

。publicvoiddoGet(HttpServ1etRequestrequest,HttpServletResp

onseresponse)

throwsServletException,IOException{

eStringresult="”;

HttpSessionsession=request.getSession();

®Stringname=(String)session.getAttribute("usemamen);

^Stringpath="D:\\";

8Connectioncon=(Connection)JdbcUti1.getConnection();

Stringsq1=ninsertintofileva1ues(?,?)";

。Stringnm=nul1;

。Filefoder=newFi1e(path);

//假如文献夹不存在,则创建文献夹

»if(fbder.exists()==false){

08foder,mkdirs();//多级目录

。“/foder.mkdir();〃只创建一级目录

。}

try(

3Defau1tFi1eItemFactoryfactory=newDefaultF

ileltemFactory();

DiskFileUploadup=newDiskFi1eUpload(factory);

。List<FileItem>1s=up.parseRequest(request);

System.out.printin(Is.size());

gfor(Fi1eItemfileItern:Is)

(

eif(fileItem.isFormField())

°{

gStringFieldName=fileItem.getFieldName();

。StringContent=fileitem,getString(ngbkn);

grequest.setAttribute(Fie1dName,Content);

)

eeIse

。{

nm=fi1eltem.getName().substring(

。fileItem.getName().1astIndexOf("\\")+1);

6Filemkr=newFile(path,nm);

if(mkr.ereateNewFi1e()){

。System.out.println(nup1oading");

。System.out.print1n(fileItem.getFieldName());

bSystem.out.println(nm);

fileltem.write(mkr);

°}

。resuit="success!n;

8}

)

6}catch(Exceptione){

。e.printStackTrace();

oresult="fail!M;

6)

。try{

PreparedStatementstat=(PreparedStatement)con.pre

pareStatement(sq1);

皿stat.setString(l,name);

3stat.setString(2,nm);

。。stat.executeUpdate();

stat.c1ose();

}catch(SQLExceptionel){

3。//TODOAuto-generatedcatchb1ock

照1.printStackTrace();

0)

。System.out.print1n(nm);

ooresponse.setContentType(ntext/htm1H);

。PrintWriterout=response.getWriter();

out

。»».printJn("<!DOCTYPEHTMLPUBLIC\"-//W3C//DTDHTML4.

01Transitiona1//EN\

。out.print1n("<HTML>");

out.print1n("<HEAD><TITLE>AServlet</TITLEx/HEA

D>");

»out.println("<BODY>");

。out.println("<script>a1ert(zsucceess');1ocation.replace('/Mysq

Itest/DownloadFile,jsp')</script>");

out.println("</BODY>");

。out.prin11n("</HTML>");

oout.flush();

ooout.close();

°)

publicvoidinit()throwsServletException{

“//Putyourcodehere

}

)

=====================Download.java==============

packageserv1et;

importjava.io.Fi1e;

importjava.io.Fi1eInputStream;

importjava.io.IOException;

importjava.io.InputStrearn;

importjava.io.PrintWriter;

importjava.net.URLEncoder;

importjavax.servlet.ServletException;

importjavax.serv1et.ServlctOutputStrcam:

importjavax.servlet.http.HttpServ1et;

importjavax.serv1et.http.HttpServleIRequest;

importjavax.serv1et.http.HttpServletResponse;

publicc1assDown!oadextendsHt(pServlet{

叩ublieDownload(){

super():

a)

pub1icvoiddestroy(){

«super.destroy();//Justputs"destroy"stringinlog

g//Putyourcodehere

)

publicvoiddoGet(HttpServ1etRequestrequest,HttpServ1etResponseresponse)

。throwsScrvletException,IOException{

。Stringfilepath=request.getParameter(nfi1epath");

»Stringful1FilePath="D:\\"+fi1epath;

。/*读取文献,到D盘下载*/

。Fi1efile=newFileCfuIlFi1ePath);

/*假如文献存在文/

if(file.exists()){

Stringfi1ename=URLEncoder.encode(file.getName(),"utf-8n);

response.reset();

response.setContentType(Happiication/x-msdownload");

response.addHcader(HContent-Disposition","attachment;fi1cnamc=\""

+filename+”);

intfi1eLength=(int)fi1e.length();

response.setContentLcngth(fileLength);

/*假如文献长度大于0*/

。if(fileLength!=0){

。/*创建输入流可

。InputStreaminStream=newFilelnputStream(fi1e);

byte[]buf=newbyte|4096];

/*创建输出流*/

Serv1etOutputStreamserv1etOS=response.getOutputStream();

intreadLength;

while(((readLength=inSiream.read(buf))!=-1))(

serv1e10S.write(buf,0,readLength);

)

inStream.close();

serv1etOS.flush();

。serv1etOS.close();

}

0)

)

叩ublievoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)

。throwsServ1etException,lOExccption(

response.setContcntTypc("text/htnil");

PrintWriterout=response.getWriter();

®out

。。。.println("<!DOCTYPEHTMLPUBLIC\"-//W3C//DTDHTML4.01Transitional//EN\">");

ooout.printInC<HTML>");

。内ut.print1n(n<HEAD><TITLE>AServlet</TITLE></HEAD>");

oout.println(n<BODY>n);

oout.print(nThisis”);

ut.print(this.getCla

温馨提示

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

评论

0/150

提交评论