jsp实现仿QQ空间新建多个相册名称并向相册中添加照片功能
工具:Eclipse,Oracle,smartupload.jar;语言:jsp,Java;数据存储:Oracle。
实现功能介绍:
主要是新建相册,可以建多个相册,在相册中添加多张照片,删除照片,删除相册,当相册下有照片时先删除照片才能删除相册。
因为每个相册和照片要有所属人,所以顺带有登录功能。
声明:只是后端实现代码,前台无任何样式,代码测试可行,仅供参考。
代码:
数据库连接帮助类:
publicclassJDBCHelper{ publicstaticfinalStringDRIVER="oracle.jdbc.driver.OracleDriver"; publicstaticfinalStringURL="jdbc:oracle:thin:@localhost:1521:xxxx"; publicstaticfinalStringDBNAME="scott"; publicstaticfinalStringPASSWORD="xxxx"; publicstaticConnectiongetConn()throwsException{ Class.forName(DRIVER); Connectionconn=DriverManager.getConnection(URL,DBNAME,PASSWORD); returnconn; } }
图片上传时,要修改图片名称,防止上传重名图片将上一张覆盖,这里的做法是将图片名改为由用户ID和精确到毫秒的时间组成,修改图片名的帮助类:
publicclassPhotoName{ privateStringip; publicPhotoName(Stringip){ super(); this.ip=ip; } publicStringgetIp(){ returnip; } publicvoidsetIp(Stringip){ this.ip=ip; } publicStringgetTime(){ Datedate=newDate(); DateFormatdf=newSimpleDateFormat("yyyyMMddHHmmssSSS"); returndf.format(date); } publicStringgetPhotoName(){ returnthis.ip+this.getTime(); } }
实现所有这些的接口类:
publicinterfaceUpDAO{ /** *创建相册名称 * */ publicintcreAlbum(AlbumPOJOap); /** *显示所创建的所有相册名称 */ publicListfindAllAlbum(intid); publicList findAllPhoto(intid); /** *上传照片 */ publicintupPhoto(PhotoPOJOpp); /** *删除相册 *@paramid相册id *@return */ publicintdelAlbum(intid); /** *删除照片 *@paramid照片id *@return */ publicintdelPhoto(intid); /** *登录 *@paramusername *@parampassword *@return */ publicUserPOJOlogin(Stringusername,Stringpassword); }
接口的具体实现类:
publicclassUpDAOImplimplementsUpDAO{ /*(non-Javadoc) *@seecn.jvsun.DAO.UpDAO#creAlbum(cn.jvsun.POJO.AlbumPOJO) *创建相册名称 */ publicintcreAlbum(AlbumPOJOap){ intalbumNum=this.getAlbumNum(); Connectionconn=null; PreparedStatementpstate=null; try{ conn=JDBCHelper.getConn(); conn.setAutoCommit(false); Stringsql="insertintoalbum(id,a_name,user_id)values(?,?,?)"; pstate=conn.prepareStatement(sql); pstate.setInt(1,albumNum); pstate.setString(2,ap.getA_name()); pstate.setInt(3,ap.getUser_id()); pstate.execute(); conn.commit(); }catch(Exceptione){ e.printStackTrace(); try{ conn.rollback();//出问题就撤回,全不提交 }catch(SQLExceptione1){ e1.printStackTrace(); } }finally{ try{ pstate.close(); conn.close(); }catch(SQLExceptione){ e.printStackTrace(); } } returnalbumNum; } /*(non-Javadoc) *@seecn.jvsun.DAO.UpDAO#upPhoto(java.lang.String,java.lang.String,int) *上传照片 */ publicintupPhoto(PhotoPOJOpp){ intpNum=this.getPhotoNum(); Connectionconn=null; PreparedStatementpstate=null; try{ conn=JDBCHelper.getConn(); conn.setAutoCommit(false); Stringsql="insertintophoto(id,p_name,p_url,p_albumid)values(?,?,?,?)"; pstate=conn.prepareStatement(sql); pstate.setInt(1,pNum); pstate.setString(2,pp.getP_name()); pstate.setString(3,pp.getP_url()); pstate.setInt(4,pp.getP_albumId()); pstate.execute(); conn.commit(); }catch(Exceptione){ e.printStackTrace(); try{ conn.rollback();//出问题就撤回,全不提交 }catch(SQLExceptione1){ e1.printStackTrace(); } }finally{ try{ pstate.close(); conn.close(); }catch(SQLExceptione){ e.printStackTrace(); } } returnpNum; } /*(non-Javadoc) *@seecn.jvsun.DAO.UpDAO#delAlbum(int) *删除相册 */ publicintdelAlbum(intid){ intresult=0; Connectionconn=null; PreparedStatementpstate=null; Stringsql="deletefromalbumwhereid="+id+""; try{ conn=JDBCHelper.getConn(); pstate=conn.prepareStatement(sql); result=pstate.executeUpdate(); }catch(SQLExceptione){ e.printStackTrace(); }catch(Exceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }finally{ try{ pstate.close(); conn.close(); }catch(SQLExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } } returnresult; } /*(non-Javadoc) *@seecn.jvsun.DAO.UpDAO#delPhoto(int) *删除照片 */ publicintdelPhoto(intid){ intresult=0; Connectionconn=null; PreparedStatementpstate=null; Stringsql="deletefromphotowhereid="+id+""; try{ conn=JDBCHelper.getConn(); pstate=conn.prepareStatement(sql); result=pstate.executeUpdate(); }catch(SQLExceptione){ e.printStackTrace(); }catch(Exceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }finally{ try{ pstate.close(); conn.close(); }catch(SQLExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } } returnresult; } /*(non-Javadoc) *@seecn.jvsun.DAO.UpDAO#login(java.lang.String,java.lang.String) *用户登录 */ publicUserPOJOlogin(Stringusername,Stringpassword){ UserPOJOuser=null; Connectionconn=null; PreparedStatementpstate=null; ResultSetres=null; try{ conn=JDBCHelper.getConn(); Stringsql="selectid,usernamefromuserinfowhereusername=?andpassword=?"; pstate=conn.prepareStatement(sql); pstate.setString(1,username); pstate.setString(2,password); res=pstate.executeQuery(); while(res.next()){ user=newUserPOJO(res.getInt(1),username,null); } }catch(Exceptione){ e.printStackTrace(); }finally{ try{ res.close(); pstate.close(); conn.close(); }catch(SQLExceptione){ e.printStackTrace(); } } returnuser; } /** *相册序列号 */ publicintgetAlbumNum(){ intalbumNum=-1; Connectionconn=null; PreparedStatementpstate=null; ResultSetres=null; try{ conn=JDBCHelper.getConn(); Stringsql="selectaid.nextvalfromdual"; pstate=conn.prepareStatement(sql); res=pstate.executeQuery(); while(res.next()){ albumNum=res.getInt(1); } }catch(Exceptione){ e.printStackTrace(); }finally{ try{ res.close(); pstate.close(); conn.close(); }catch(SQLExceptione){ e.printStackTrace(); } } returnalbumNum; } /** *照片序列号 */ publicintgetPhotoNum(){ intphotoNum=-1; Connectionconn=null; PreparedStatementpstate=null; ResultSetres=null; try{ conn=JDBCHelper.getConn(); Stringsql="selectpid.nextvalfromdual"; pstate=conn.prepareStatement(sql); res=pstate.executeQuery(); while(res.next()){ photoNum=res.getInt(1); } }catch(Exceptione){ e.printStackTrace(); }finally{ try{ res.close(); pstate.close(); conn.close(); }catch(SQLExceptione){ e.printStackTrace(); } } returnphotoNum; } /*(non-Javadoc) *@seecn.jvsun.DAO.UpDAO#findAll() *显示所创建的相册名 */ publicListfindAllAlbum(intid){ List list=newArrayList (); Connectionconn=null; PreparedStatementpstate=null; ResultSetres=null; try{ conn=JDBCHelper.getConn(); Stringsql="selectid,a_name,user_idfromalbumwhereuser_id=?"; pstate=conn.prepareStatement(sql); pstate.setInt(1,id); res=pstate.executeQuery(); while(res.next()){ AlbumPOJOap=newAlbumPOJO(res.getInt(1),res.getString(2),res.getInt(3)); list.add(ap); } }catch(Exceptione){ e.printStackTrace(); }finally{ try{ res.close(); pstate.close(); conn.close(); }catch(SQLExceptione){ e.printStackTrace(); } } returnlist; } /*(non-Javadoc) *@seecn.jvsun.DAO.UpDAO#findAllPhoto(int) *显示照片 */ publicList findAllPhoto(intaid){ List list=newArrayList (); Connectionconn=null; PreparedStatementpstate=null; ResultSetres=null; try{ conn=JDBCHelper.getConn(); Stringsql="selectid,p_name,p_urlfromphotowhereP_ALBUMID=?"; pstate=conn.prepareStatement(sql); pstate.setInt(1,aid); res=pstate.executeQuery(); while(res.next()){ PhotoPOJOpojo=newPhotoPOJO(res.getInt(1),res.getString(2),res.getString(3),aid); list.add(pojo); } }catch(Exceptione){ e.printStackTrace(); }finally{ try{ res.close(); pstate.close(); conn.close(); }catch(SQLExceptione){ e.printStackTrace(); } } returnlist; } }
用户,相册,照片三个POJO类:
/***用户实体类 * */ publicclassUserPOJOimplementsSerializable{ privatestaticfinallongserialVersionUID=7554548269035753256L; privateintid; privateStringusername; privateStringpassword; publicintgetId(){ returnid; } publicvoidsetId(intid){ this.id=id; } publicStringgetUsername(){ returnusername; } publicvoidsetUsername(Stringusername){ this.username=username; } publicStringgetPassword(){ returnpassword; } publicvoidsetPassword(Stringpassword){ this.password=password; } publicUserPOJO(intid,Stringusername,Stringpassword){ super(); this.id=id; this.username=username; this.password=password; } publicUserPOJO(Stringusername,Stringpassword){ this.username=username; this.password=password; } publicUserPOJO(){ super(); //TODOAuto-generatedconstructorstub } }
/** *相册实体类 * */ publicclassAlbumPOJOimplementsSerializable{ privateintid; privateStringa_name; privateintuser_id; publicintgetId(){ returnid; } publicvoidsetId(intid){ this.id=id; } publicStringgetA_name(){ returna_name; } publicvoidsetA_name(Stringa_name){ this.a_name=a_name; } publicintgetUser_id(){ returnuser_id; } publicvoidsetUser_id(intuser_id){ this.user_id=user_id; } publicAlbumPOJO(intid,Stringa_name,intuser_id){ super(); this.id=id; this.a_name=a_name; this.user_id=user_id; } publicAlbumPOJO(Stringa_name,intuser_id){ this.a_name=a_name; this.user_id=user_id; } publicAlbumPOJO(){ super(); //TODOAuto-generatedconstructorstub } }
/** *照片实体类 * */ publicclassPhotoPOJOimplementsSerializable{ privatestaticfinallongserialVersionUID=5937149639009957458L; privateintid; privateStringp_name; privateStringp_url; privateintp_albumId; publicintgetId(){ returnid; } publicvoidsetId(intid){ this.id=id; } publicStringgetP_name(){ returnp_name; } publicvoidsetP_name(Stringp_name){ this.p_name=p_name; } publicStringgetP_url(){ returnp_url; } publicvoidsetP_url(Stringp_url){ this.p_url=p_url; } publicintgetP_albumId(){ returnp_albumId; } publicvoidsetP_albumId(intp_albumId){ this.p_albumId=p_albumId; } publicPhotoPOJO(intid,Stringp_name,Stringp_url,intp_albumId){ super(); this.id=id; this.p_name=p_name; this.p_url=p_url; this.p_albumId=p_albumId; } publicPhotoPOJO(Stringp_name,Stringp_url,intp_albumId){ this.p_name=p_name; this.p_url=p_url; this.p_albumId=p_albumId; } publicPhotoPOJO(){ super(); //TODOAuto-generatedconstructorstub } }
login.jsp实现登录
<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%> <%@pageimport="cn.jvsun.DAO.Impl.*"%> <%@pageimport="cn.jvsun.POJO.*"%> <%@pageimport="cn.jvsun.DAO.*"%> <% Stringpath=request.getContextPath(); StringbasePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %>"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"> login <% request.setCharacterEncoding("utf-8"); Stringaction=request.getParameter("action"); UpDAOud=newUpDAOImpl(); Stringusername=request.getParameter("username"); Stringpassword=request.getParameter("password"); UserPOJOpojo=ud.login(username,password); if("log".equals(action)){ if(pojo==null){ %>登录失败
<% }else{ request.getSession().setAttribute("username",username); request.getSession().setAttribute("userid",pojo.getId()); response.sendRedirect("index.jsp"); } } %>
index.jsp实现显示相册
代码如下:
<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%> <%@pageimport="cn.jvsun.DAO.Impl.*"%> <%@pageimport="cn.jvsun.POJO.*"%> <%@pageimport="cn.jvsun.DAO.*"%> <% Stringpath=request.getContextPath(); StringbasePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %>"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"> personmessage 相册界面 当前用户:<%=request.getSession().getAttribute("username")%>
去创建相册
我的所有相册:
<% intuserid=(Integer)request.getSession().getAttribute("userid"); UpDAOdao=newUpDAOImpl(); Listlist=dao.findAllAlbum(userid); for(AlbumPOJOpojo:list){ %> 相册id: <%=pojo.getId()%> 相册名称:<%=pojo.getA_name()%> 创建者id:<%=pojo.getUser_id()%> "rel="externalnofollow">添加照片 "rel="externalnofollow">查看照片 "rel="externalnofollow">删除相册
<% } %>
cre.jsp创建相册
<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%> <%@pageimport="cn.jvsun.DAO.Impl.*"%> <%@pageimport="cn.jvsun.POJO.*"%> <%@pageimport="cn.jvsun.DAO.*"%> <% Stringpath=request.getContextPath(); StringbasePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %>"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"> upphoto <% request.setCharacterEncoding("utf-8"); Stringaction=request.getParameter("action"); UpDAOud=newUpDAOImpl(); StringtoCre=request.getParameter("cre"); intuserId=(Integer)request.getSession().getAttribute("userid"); if("cre".equals(action)){ AlbumPOJOap=newAlbumPOJO(toCre,userId); intaNum=ud.creAlbum(ap); if(aNum!=-1){ response.sendRedirect("index.jsp"); }else{ %>创建相册失败
<% } } %>
up.jsp上传照片
<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%> <%@pageimport="cn.jvsun.DAO.Impl.*"%> <%@pageimport="cn.jvsun.POJO.*"%> <%@pageimport="cn.jvsun.DAO.*"%> <%@pageimport="cn.jvsun.tools.*"%> <%@pageimport="org.lxh.smart.*"%> <% Stringpath=request.getContextPath(); StringbasePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %>"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"> 上传照片 <% intaid=Integer.parseInt(request.getParameter("aid")); %>"/>
upCheck.jsp上传照片的处理页
<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%> <%@pageimport="cn.jvsun.DAO.Impl.*"%> <%@pageimport="cn.jvsun.POJO.*"%> <%@pageimport="cn.jvsun.DAO.*"%> <%@pageimport="cn.jvsun.tools.*"%> <%@pageimport="org.lxh.smart.*"%><% Stringip=request.getRemoteAddr(); ip=ip.replaceAll(":",""); PhotoNamepn=newPhotoName(ip); StringpName=pn.getPhotoName();//照片名字,是由IP加当前时间组成 SmartUploadsmartupload=newSmartUpload();//实例化上传操作的对象 //初始化上传文件 smartupload.initialize(pageContext); //准备上传 smartupload.upload(); intalbumId=Integer.parseInt(smartupload.getRequest().getParameter("aid")); //取得文件的后缀 StringendName=smartupload.getFiles().getFile(0).getFileExt(); //文件保存的路径 /*Stringp_url=getServletContext().getRealPath("/")+ "file/"+pName+"."+endName;*/ Stringp_url="K:/workspace/Xiangce/WebRoot/file/"+pName+"."+endName; //保存文件 smartupload.getFiles().getFile(0).saveAs(p_url); UpDAOad=newUpDAOImpl(); PhotoPOJOpojo=newPhotoPOJO(pName+"."+endName,p_url,albumId); intphotoNum=ad.upPhoto(pojo); if(photoNum!=-1){ request.getSession().setAttribute("phid",albumId); response.sendRedirect("show.jsp"); }else{ %> 上传失败 <% } %>
show.jsp显示照片及信息页:
代码如下:
<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%> <%@pageimport="cn.jvsun.DAO.Impl.*"%> <%@pageimport="cn.jvsun.POJO.*"%> <%@pageimport="cn.jvsun.DAO.*"%> <% Stringpath=request.getContextPath(); StringbasePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %>"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"> MyJSP'show.jsp'startingpage 相册界面 当前用户:<%=request.getSession().getAttribute("username")%>
<% intphid=(Integer)request.getSession().getAttribute("phid"); UpDAOdao=newUpDAOImpl(); Listlist=dao.findAllPhoto(phid); for(PhotoPOJOpojo:list){ %> 照片id: <%=pojo.getId()%>
照片名称:<%=pojo.getP_name()%>
照片路径:<%=pojo.getP_url()%>
照片所属相册名称:<%=pojo.getP_albumId()%>
/file/<%=pojo.getP_name()%>"width="100"height="100"/> "rel="externalnofollow">删除照片:
<%}%>
photo_del.jsp删除照片
<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%> <%@pageimport="cn.jvsun.DAO.Impl.*"%> <%@pageimport="cn.jvsun.POJO.*"%> <%@pageimport="cn.jvsun.DAO.*"%> <% Stringpath=request.getContextPath(); StringbasePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %>"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"> del <% intpid=Integer.parseInt(request.getParameter("pid")); intresult=0; UpDAOdao=newUpDAOImpl(); result=dao.delPhoto(pid); if(result==1){ out.println(""); }else{ out.println(""); } %>
del.jsp删除相册
<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%> <%@pageimport="cn.jvsun.DAO.Impl.*"%> <%@pageimport="cn.jvsun.POJO.*"%> <%@pageimport="cn.jvsun.DAO.*"%> <% Stringpath=request.getContextPath(); StringbasePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %>"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"> del <% intaid=Integer.parseInt(request.getParameter("aid")); intresult=0; UpDAOdao=newUpDAOImpl(); result=dao.delAlbum(aid); if(result==1){ out.println(""); }else{ out.println(""); } %>
数据库的建表语句:
--Createtable createtableUSERINFO ( IDNUMBER, USERNAMEVARCHAR2(30), PASSWORDVARCHAR2(30) ) tablespaceUSERS pctfree10 initrans1 maxtrans255 storage ( initial64 minextents1 maxextentsunlimited ); --Create/Recreateprimary,uniqueandforeignkeyconstraints altertableUSERINFO addconstraintPIDprimarykey(ID) disable; --上传者 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --Createtable createtableALBUM ( IDNUMBERnotnull, A_NAMEVARCHAR2(30), USER_IDNUMBER ) tablespaceUSERS pctfree10 initrans1 maxtrans255 storage ( initial64 minextents1 maxextentsunlimited ); --Create/Recreateprimary,uniqueandforeignkeyconstraints altertableALBUM addconstraintAL_PIDprimarykey(ID) usingindex tablespaceUSERS pctfree10 initrans2 maxtrans255 storage ( initial64K minextents1 maxextentsunlimited ); altertableALBUM addconstraintUSERIDforeignkey(USER_ID) referencesUSERINFO(ID) disable; --相册表 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --Createtable createtablePHOTO ( IDNUMBER, P_NAMEVARCHAR2(30), P_URLVARCHAR2(50), P_ALBUMIDNUMBER(30) ) tablespaceUSERS pctfree10 initrans1 maxtrans255 storage ( initial64 minextents1 maxextentsunlimited ); --Create/Recreateprimary,uniqueandforeignkeyconstraints altertablePHOTO addconstraintALB_IDforeignkey(P_ALBUMID) referencesALBUM(ID); --相片表
好了,所有代码就写完了,切记,需要smartupload.jar包,没有的童鞋可以去下载:
smartuploadjar包
以上所述是小编给大家介绍的jsp实现仿QQ空间新建多个相册名称并向相册中添加照片功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!