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);
publicListfindAllPhoto(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){
Listlist=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)
*显示照片
*/
publicListfindAllPhoto(intaid){
Listlist=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空间新建多个相册名称并向相册中添加照片功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!