版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
家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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 大学毕业生就业协议书签订流程解析
- 2024年兼职协议样本
- 2024销售合作协议示例
- 个人租房合同书范本
- 房屋室内装修合同书样式
- 合作契约:展会活动合作契约-合同样本
- 广东省餐饮行业劳动合同
- 2024年技术开发合作协议参考
- 高速公路盾构隧道建筑信息模型分类与编码标准
- 2023年高考地理重点难点考点通练-整体性差异性(解析版)
- 仓储物流中心物业安全管理
- 医疗器械注册专员培训
- 期末复习重要考点03 《一元一次方程》十大考点题型(热点题型+限时测评)(原卷版)
- 生物丨金太阳(25-69C)广东省2025届高三10月大联考生物试卷及答案
- 车队车辆挂靠合同模板
- 期中 (试题) -2024-2025学年人教PEP版英语四年级上册
- 动物疫病防治员(高级)理论考试题及答案
- 跨境电商行业研究框架专题报告
- 提升初中生英语写作
- 2024年深圳市优才人力资源有限公司招考聘用综合网格员(派遣至吉华街道)高频500题难、易错点模拟试题附带答案详解
- 高中政治必修四哲学与文化知识点总结
评论
0/150
提交评论