音效素材网提供各类素材,打造精品素材网站!

站内导航 站长工具 投稿中心 手机访问

音效素材

jsp实现仿QQ空间新建多个相册名称并向相册中添加照片功能
日期:2021-09-07 15:53:21   来源:脚本之家

工具:Eclipse,Oracle,smartupload.jar;语言:jsp,Java;数据存储:Oracle。

实现功能介绍:

主要是新建相册,可以建多个相册,在相册中添加多张照片,删除照片,删除相册,当相册下有照片时先删除照片才能删除相册。

因为每个相册和照片要有所属人,所以顺带有登录功能。

声明:只是后端实现代码,前台无任何样式,代码测试可行,仅供参考。

代码:

数据库连接帮助类:

public class JDBCHelper { 
 public static final String DRIVER = "oracle.jdbc.driver.OracleDriver"; 
 public static final String URL = "jdbc:oracle:thin:@localhost:1521:xxxx"; 
 public static final String DBNAME = "scott"; 
 public static final String PASSWORD = "xxxx"; 
 public static Connection getConn() throws Exception{ 
 Class.forName(DRIVER); 
 Connection conn = DriverManager.getConnection(URL, DBNAME, PASSWORD); 
 return conn; 
 } 
} 

图片上传时,要修改图片名称,防止上传重名图片将上一张覆盖,这里的做法是将图片名改为由用户ID和精确到毫秒的时间组成,修改图片名的帮助类:

public class PhotoName { 
 private String ip; 
 public PhotoName(String ip) { 
 super(); 
 this.ip = ip; 
 } 
 public String getIp() { 
 return ip; 
 } 
 public void setIp(String ip) { 
 this.ip = ip; 
 } 
 public String getTime(){ 
 Date date = new Date(); 
 DateFormat df = new SimpleDateFormat("yyyyMMddHHmmssSSS"); 
 return df.format(date); 
 } 
 public String getPhotoName(){ 
 return this.ip + this.getTime(); 
 } 
} 

实现所有这些的接口类:

public interface UpDAO { 
 /** 
 * 创建相册名称 
 * 
 */ 
 public int creAlbum(AlbumPOJO ap); 
 /** 
 *显示所创建的所有相册名称 
 */ 
 public List<AlbumPOJO> findAllAlbum(int id); 
 public List<PhotoPOJO> findAllPhoto(int id); 
 /** 
 * 上传照片 
 */ 
 public int upPhoto(PhotoPOJO pp); 
 /** 
 * 删除相册 
 * @param id 相册id 
 * @return 
 */ 
 public int delAlbum(int id); 
 /** 
 * 删除照片 
 * @param id 照片id 
 * @return 
 */ 
 public int delPhoto(int id); 
 /** 
 * 登录 
 * @param username 
 * @param password 
 * @return 
 */ 
 public UserPOJO login(String username,String password); 
} 

接口的具体实现类:

public class UpDAOImpl implements UpDAO { 
 /* (non-Javadoc) 
 * @see cn.jvsun.DAO.UpDAO#creAlbum(cn.jvsun.POJO.AlbumPOJO) 
 * 创建相册名称 
 */ 
 public int creAlbum(AlbumPOJO ap) { 
 int albumNum=this.getAlbumNum(); 
 Connection conn = null; 
 PreparedStatement pstate = null; 
 try { 
  conn=JDBCHelper.getConn(); 
  conn.setAutoCommit(false); 
  String sql="insert into album(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 (Exception e) { 
  e.printStackTrace(); 
  try { 
  conn.rollback();//出问题就撤回,全不提交 
  } catch (SQLException e1) { 
  e1.printStackTrace(); 
  } 
 }finally{ 
  try { 
  pstate.close(); 
  conn.close(); 
  } catch (SQLException e) { 
  e.printStackTrace(); 
  } 
 } 
 return albumNum; 
 } 
 /* (non-Javadoc) 
 * @see cn.jvsun.DAO.UpDAO#upPhoto(java.lang.String, java.lang.String, int) 
 * 上传照片 
 */ 
 public int upPhoto(PhotoPOJO pp) { 
 int pNum=this.getPhotoNum(); 
 Connection conn = null; 
 PreparedStatement pstate = null; 
 try { 
  conn=JDBCHelper.getConn(); 
  conn.setAutoCommit(false); 
  String sql="insert into photo(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 (Exception e) { 
  e.printStackTrace(); 
  try { 
  conn.rollback();//出问题就撤回,全不提交 
  } catch (SQLException e1) { 
  e1.printStackTrace(); 
  } 
 }finally{ 
  try { 
  pstate.close(); 
  conn.close(); 
  } catch (SQLException e) { 
  e.printStackTrace(); 
  } 
 } 
 return pNum; 
 } 
 /* (non-Javadoc) 
 * @see cn.jvsun.DAO.UpDAO#delAlbum(int) 
 * 删除相册 
 */ 
 public int delAlbum(int id) { 
 int result=0; 
 Connection conn = null; 
 PreparedStatement pstate = null; 
 String sql="delete from album where id="+id+""; 
 try { 
  conn=JDBCHelper.getConn(); 
  pstate = conn.prepareStatement(sql); 
  result=pstate.executeUpdate(); 
 } catch (SQLException e) { 
  e.printStackTrace(); 
 } catch (Exception e) { 
  // TODO Auto-generated catch block 
  e.printStackTrace(); 
 }finally{ 
  try { 
  pstate.close(); 
  conn.close(); 
  } catch (SQLException e) { 
  // TODO Auto-generated catch block 
  e.printStackTrace(); 
  } 
 } 
 return result; 
 } 
 /* (non-Javadoc) 
 * @see cn.jvsun.DAO.UpDAO#delPhoto(int) 
 * 删除照片 
 */ 
 public int delPhoto(int id) { 
 int result=0; 
 Connection conn = null; 
 PreparedStatement pstate = null; 
 String sql="delete from photo where id="+id+""; 
 try { 
  conn=JDBCHelper.getConn(); 
  pstate = conn.prepareStatement(sql); 
  result=pstate.executeUpdate(); 
 } catch (SQLException e) { 
  e.printStackTrace(); 
 } catch (Exception e) { 
  // TODO Auto-generated catch block 
  e.printStackTrace(); 
 }finally{ 
  try { 
  pstate.close(); 
  conn.close(); 
  } catch (SQLException e) { 
  // TODO Auto-generated catch block 
  e.printStackTrace(); 
  } 
 } 
 return result; 
 } 
 /* (non-Javadoc) 
 * @see cn.jvsun.DAO.UpDAO#login(java.lang.String, java.lang.String) 
 * 用户登录 
 */ 
 public UserPOJO login(String username, String password) { 
 UserPOJO user=null; 
 Connection conn = null; 
 PreparedStatement pstate = null; 
 ResultSet res = null; 
 try { 
  conn=JDBCHelper.getConn(); 
  String sql="select id,username from userinfo where username=? and password=?"; 
  pstate = conn.prepareStatement(sql); 
  pstate.setString(1, username); 
  pstate.setString(2, password); 
  res = pstate.executeQuery(); 
  while(res.next()){ 
  user=new UserPOJO(res.getInt(1),username,null); 
  } 
 } catch (Exception e) { 
  e.printStackTrace(); 
 }finally{ 
  try { 
  res.close(); 
  pstate.close(); 
  conn.close(); 
  } catch (SQLException e) { 
  e.printStackTrace(); 
  } 
 } 
 return user; 
 } 
 /** 
 * 相册序列号 
 */ 
 public int getAlbumNum(){ 
 int albumNum=-1; 
 Connection conn = null; 
 PreparedStatement pstate = null; 
 ResultSet res = null; 
 try { 
  conn=JDBCHelper.getConn(); 
  String sql="select aid.nextval from dual"; 
  pstate=conn.prepareStatement(sql); 
  res=pstate.executeQuery(); 
  while(res.next()){ 
  albumNum=res.getInt(1); 
  } 
 } catch (Exception e) { 
  e.printStackTrace(); 
 }finally{ 
  try { 
  res.close(); 
  pstate.close(); 
  conn.close(); 
  } catch (SQLException e) { 
  e.printStackTrace(); 
  } 
 } 
 return albumNum; 
 } 
 /** 
 *照片序列号 
 */ 
 public int getPhotoNum(){ 
 int photoNum=-1; 
 Connection conn = null; 
 PreparedStatement pstate = null; 
 ResultSet res = null; 
 try { 
  conn=JDBCHelper.getConn(); 
  String sql="select pid.nextval from dual"; 
  pstate=conn.prepareStatement(sql); 
  res=pstate.executeQuery(); 
  while(res.next()){ 
  photoNum=res.getInt(1); 
  } 
 } catch (Exception e) { 
  e.printStackTrace(); 
 }finally{ 
  try { 
  res.close(); 
  pstate.close(); 
  conn.close(); 
  } catch (SQLException e) { 
  e.printStackTrace(); 
  } 
 } 
 return photoNum; 
 } 
 /* (non-Javadoc) 
 * @see cn.jvsun.DAO.UpDAO#findAll() 
 * 显示所创建的相册名 
 */ 
 public List<AlbumPOJO> findAllAlbum(int id) { 
 List<AlbumPOJO> list= new ArrayList<AlbumPOJO>(); 
 Connection conn = null; 
 PreparedStatement pstate = null; 
 ResultSet res = null; 
 try { 
  conn=JDBCHelper.getConn(); 
  String sql="select id,a_name,user_id from album where user_id=?"; 
  pstate = conn.prepareStatement(sql); 
  pstate.setInt(1, id); 
  res = pstate.executeQuery(); 
  while(res.next()){ 
  AlbumPOJO ap=new AlbumPOJO(res.getInt(1),res.getString(2),res.getInt(3)); 
  list.add(ap); 
  } 
 } catch (Exception e) { 
  e.printStackTrace(); 
 }finally{ 
  try { 
  res.close(); 
  pstate.close(); 
  conn.close(); 
  } catch (SQLException e) { 
  e.printStackTrace(); 
  } 
 } 
 return list; 
 } 
 /* (non-Javadoc) 
 * @see cn.jvsun.DAO.UpDAO#findAllPhoto(int) 
 * 显示照片 
 */ 
 public List<PhotoPOJO> findAllPhoto(int aid) { 
 List<PhotoPOJO> list= new ArrayList<PhotoPOJO>(); 
 Connection conn = null; 
 PreparedStatement pstate = null; 
 ResultSet res = null; 
 try { 
  conn=JDBCHelper.getConn(); 
  String sql="select id,p_name,p_url from photo where P_ALBUMID=?"; 
  pstate = conn.prepareStatement(sql); 
  pstate.setInt(1, aid); 
  res = pstate.executeQuery(); 
  while(res.next()){ 
  PhotoPOJO pojo=new PhotoPOJO(res.getInt(1),res.getString(2),res.getString(3), aid); 
  list.add(pojo); 
  } 
 } catch (Exception e) { 
  e.printStackTrace(); 
 }finally{ 
  try { 
  res.close(); 
  pstate.close(); 
  conn.close(); 
  } catch (SQLException e) { 
  e.printStackTrace(); 
  } 
 } 
 return list; 
 } 
} 

用户,相册,照片三个POJO类:

/** * 用户实体类 
 * 
 */ 
public class UserPOJO implements Serializable{ 
 private static final long serialVersionUID = 7554548269035753256L; 
 private int id; 
 private String username; 
 private String password; 
 public int getId() { 
 return id; 
 } 
 public void setId(int id) { 
 this.id = id; 
 } 
 public String getUsername() { 
 return username; 
 } 
 public void setUsername(String username) { 
 this.username = username; 
 } 
 public String getPassword() { 
 return password; 
 } 
 public void setPassword(String password) { 
 this.password = password; 
 } 
 public UserPOJO(int id, String username, String password) { 
 super(); 
 this.id = id; 
 this.username = username; 
 this.password = password; 
 } 
 public UserPOJO(String username, String password) { 
 this.username = username; 
 this.password = password; 
 } 
 public UserPOJO() { 
 super(); 
 // TODO Auto-generated constructor stub 
 } 
} 
/** 
 * 相册实体类 
 * 
 */ 
public class AlbumPOJO implements Serializable{ 
 private int id; 
 private String a_name; 
 private int user_id; 
 public int getId() { 
 return id; 
 } 
 public void setId(int id) { 
 this.id = id; 
 } 
 public String getA_name() { 
 return a_name; 
 } 
 public void setA_name(String a_name) { 
 this.a_name = a_name; 
 } 
 public int getUser_id() { 
 return user_id; 
 } 
 public void setUser_id(int user_id) { 
 this.user_id = user_id; 
 } 
 public AlbumPOJO(int id, String a_name, int user_id) { 
 super(); 
 this.id = id; 
 this.a_name = a_name; 
 this.user_id = user_id; 
 } 
 public AlbumPOJO(String a_name, int user_id) { 
 this.a_name = a_name; 
 this.user_id = user_id; 
 } 
 public AlbumPOJO() { 
 super(); 
 // TODO Auto-generated constructor stub 
 } 
} 
/** 
 *照片实体类 
 * 
 */ 
public class PhotoPOJO implements Serializable{ 
 private static final long serialVersionUID = 5937149639009957458L; 
 private int id; 
 private String p_name; 
 private String p_url; 
 private int p_albumId; 
 public int getId() { 
 return id; 
 } 
 public void setId(int id) { 
 this.id = id; 
 } 
 public String getP_name() { 
 return p_name; 
 } 
 public void setP_name(String p_name) { 
 this.p_name = p_name; 
 } 
 public String getP_url() { 
 return p_url; 
 } 
 public void setP_url(String p_url) { 
 this.p_url = p_url; 
 } 
 public int getP_albumId() { 
 return p_albumId; 
 } 
 public void setP_albumId(int p_albumId) { 
 this.p_albumId = p_albumId; 
 } 
 public PhotoPOJO(int id, String p_name, String p_url, int p_albumId) { 
 super(); 
 this.id = id; 
 this.p_name = p_name; 
 this.p_url = p_url; 
 this.p_albumId = p_albumId; 
 } 
 public PhotoPOJO(String p_name, String p_url, int p_albumId) { 
 this.p_name = p_name; 
 this.p_url = p_url; 
 this.p_albumId = p_albumId; 
 } 
 public PhotoPOJO() { 
 super(); 
 // TODO Auto-generated constructor stub 
 } 
} 

login.jsp实现登录

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 
<%@ page import="cn.jvsun.DAO.Impl.*" %> 
<%@ page import="cn.jvsun.POJO.*" %> 
<%@ page import="cn.jvsun.DAO.*" %> 
<% 
String path = request.getContextPath(); 
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 
%> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html> 
 <head> 
 <base href="<%=basePath%>" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" > 
 <title>login</title> 
 </head> 
 <body> 
 <% 
 request.setCharacterEncoding("utf-8"); 
 String action=request.getParameter("action"); 
 UpDAO ud=new UpDAOImpl(); 
 String username=request.getParameter("username"); 
 String password=request.getParameter("password"); 
 UserPOJO pojo=ud.login(username, password); 
 if("log".equals(action)){ 
 if(pojo==null){ 
  %> 
  <h1>登录失败</h1> 
  <% 
 }else{ 
  request.getSession().setAttribute("username", username); 
  request.getSession().setAttribute("userid", pojo.getId()); 
  response.sendRedirect("index.jsp"); 
 } 
 } 
 %> 
 <form action="login.jsp?action=log" method="post"> 
 <input type="text" name="username" placeholder="请输入用户名"/> 
 <input type="password" name="password" placeholder="请输入密码"/> 
 <input type="submit"/> 
 </form> 
 </body> 
</html> 

index.jsp实现显示相册

代码如下:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 
<%@ page import="cn.jvsun.DAO.Impl.*" %> 
<%@ page import="cn.jvsun.POJO.*" %> 
<%@ page import="cn.jvsun.DAO.*" %> 
<% 
String path = request.getContextPath(); 
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 
%> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html> 
 <head> 
 <base href="<%=basePath%>" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" > 
 <title>person message</title> 
 </head> 
 <body> 
 <center>相册界面</center> 
 当前用户:<%=request.getSession().getAttribute("username")%> <br> 
 <a href="cre.jsp" rel="external nofollow" >去创建相册</a><br> 
 我的所有相册:<br> 
 <% 
 int userid=(Integer)request.getSession().getAttribute("userid"); 
 UpDAO dao=new UpDAOImpl(); 
 List<AlbumPOJO> list=dao.findAllAlbum(userid); 
 for(AlbumPOJO pojo:list){ 
 %> 
 <tr> 
 <a>相册id:</a><td><%=pojo.getId() %></td> 
 <a>相册名称:</a><td><%=pojo.getA_name() %></td> 
 <a>创建者id:</a><td><%=pojo.getUser_id() %></td> 
 <td><a href="up.jsp?aid=<%=pojo.getId() %>" rel="external nofollow" >添加照片</a></td> 
 <td><a href="show.jsp?phid=<%=pojo.getId() %>" rel="external nofollow" >查看照片</a></td> 
 <td><a href="del.jsp?aid=<%=pojo.getId() %>" rel="external nofollow" >删除相册</a></td> 
 </tr><br> 
 <% 
 } 
 %> 
 </body> 
</html> 

cre.jsp创建相册

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 
<%@ page import="cn.jvsun.DAO.Impl.*" %> 
<%@ page import="cn.jvsun.POJO.*" %> 
<%@ page import="cn.jvsun.DAO.*" %> 
<% 
String path = request.getContextPath(); 
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 
%> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html> 
 <head> 
 <base href="<%=basePath%>" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" > 
 <title>up photo</title> 
 </head> 
 <body> 
 <% 
 request.setCharacterEncoding("utf-8"); 
 String action=request.getParameter("action"); 
 UpDAO ud=new UpDAOImpl(); 
 String toCre=request.getParameter("cre"); 
 int userId=(Integer)request.getSession().getAttribute("userid"); 
 if("cre".equals(action)){ 
 AlbumPOJO ap=new AlbumPOJO(toCre,userId); 
 int aNum=ud.creAlbum(ap); 
 if(aNum!=-1){ 
  response.sendRedirect("index.jsp"); 
 }else{ 
  %> 
  <h1>创建相册失败</h1> 
  <% 
 } 
 } 
 %> 
 <form action="cre.jsp?action=cre" method="post"> 
 <input type="text" name="cre" placeholder="请输入您要创建的相册名称"/> 
 <input type="submit" value="确定"> 
 </form> 
 </body> 
</html> 

up.jsp上传照片

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 
<%@ page import="cn.jvsun.DAO.Impl.*" %> 
<%@ page import="cn.jvsun.POJO.*" %> 
<%@ page import="cn.jvsun.DAO.*" %> 
<%@ page import="cn.jvsun.tools.*" %> 
<%@page import="org.lxh.smart.*" %> 
<% 
String path = request.getContextPath(); 
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 
%> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html> 
 <head> 
 <base href="<%=basePath%>" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" > 
 <title>上传照片</title> 
 </head> 
 <body> 
 <% 
 int aid=Integer.parseInt(request.getParameter("aid")); 
 %> 
 <form action="upCheck.jsp" method="post" enctype="multipart/form-data"> 
 <input type="hidden" name="aid" value="<%=aid %>"/> 
 <input type="file" name="photo"/> 
 <input type="submit" value="确认上传"/> 
 </form> 
 </body> 
</html> 

upCheck.jsp上传照片的处理页

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 
<%@ page import="cn.jvsun.DAO.Impl.*" %> 
<%@ page import="cn.jvsun.POJO.*" %> 
<%@ page import="cn.jvsun.DAO.*" %> 
<%@ page import="cn.jvsun.tools.*" %> 
<%@page import="org.lxh.smart.*" %> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html> 
 <head> 
 <title></title> 
 </head> 
 <body> 
 <% 
 String ip = request.getRemoteAddr(); 
 ip = ip.replaceAll(":",""); 
 PhotoName pn=new PhotoName(ip); 
 String pName = pn.getPhotoName();//照片名字,是由IP加当前时间组成 
 SmartUpload smartupload = new SmartUpload();//实例化上传操作的对象 
 //初始化上传文件 
 smartupload.initialize(pageContext); 
 //准备上传 
 smartupload.upload(); 
 int albumId=Integer.parseInt(smartupload.getRequest().getParameter("aid")); 
 //取得文件的后缀 
 String endName = smartupload.getFiles().getFile(0).getFileExt(); 
 //文件保存的路径 
 /*String p_url = getServletContext().getRealPath("/")+ 
   "file/"+pName+"."+endName;*/ 
 String p_url="K:/workspace/Xiangce/WebRoot/file/"+pName+"."+endName; 
 //保存文件 
 smartupload.getFiles().getFile(0).saveAs(p_url); 
 UpDAO ad=new UpDAOImpl(); 
 PhotoPOJO pojo=new PhotoPOJO(pName+"."+endName,p_url,albumId); 
 int photoNum=ad.upPhoto(pojo); 
 if(photoNum != -1){ 
  request.getSession().setAttribute("phid", albumId); 
  response.sendRedirect("show.jsp"); 
  } else { 
 %> 
 上传失败 
 <% 
  } 
 %> 
 </body> 
</html> 

show.jsp显示照片及信息页:

代码如下:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 
<%@ page import="cn.jvsun.DAO.Impl.*" %> 
<%@ page import="cn.jvsun.POJO.*" %> 
<%@ page import="cn.jvsun.DAO.*" %> 
<% 
String path = request.getContextPath(); 
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 
%> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html> 
 <head> 
 <base href="<%=basePath%>" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" > 
 <title>My JSP 'show.jsp' starting page</title> 
 </head> 
 <body> 
 <center>相册界面</center> 
 当前用户:<%=request.getSession().getAttribute("username")%> <br> 
 <% 
 int phid=(Integer)request.getSession().getAttribute("phid"); 
 UpDAO dao=new UpDAOImpl(); 
 List<PhotoPOJO> list=dao.findAllPhoto(phid); 
 for(PhotoPOJO pojo:list){ 
 %> 
 <tr> 
 <a>照片id:</a><td><%=pojo.getId() %></td><br> 
 <a>照片名称:</a><td><%=pojo.getP_name() %></td><br> 
 <a>照片路径:</a><td><%=pojo.getP_url() %></td><br> 
 <a>照片所属相册名称:</a><td><%=pojo.getP_albumId() %></td><br> 
 <td><img src="<%=path%>/file/<%=pojo.getP_name() %>" width="100" height="100"/></td> 
 <a href="photo_del.jsp?pid=<%=pojo.getId() %>" rel="external nofollow" >删除照片:</a></td><br> 
 </tr><br> 
 <%} %> 
 </body> 
</html> 

photo_del.jsp删除照片

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 
<%@ page import="cn.jvsun.DAO.Impl.*" %> 
<%@ page import="cn.jvsun.POJO.*" %> 
<%@ page import="cn.jvsun.DAO.*" %> 
<% 
String path = request.getContextPath(); 
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 
%> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html> 
 <head> 
 <base href="<%=basePath%>" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" > 
 <title>del</title> 
 </head> 
 <body> 
 <% 
 int pid=Integer.parseInt(request.getParameter("pid")); 
 int result=0; 
 UpDAO dao=new UpDAOImpl(); 
 result=dao.delPhoto(pid); 
 if(result==1){ 
 out.println("<script>alert('删除成功');window.location.href('show.jsp');</script>"); 
 }else{ 
 out.println("<script>alert('出错了');window.location.href('show.jsp');</script>"); 
 } 
 %> 
 </body> 
</html> 

del.jsp删除相册

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 
<%@ page import="cn.jvsun.DAO.Impl.*" %> 
<%@ page import="cn.jvsun.POJO.*" %> 
<%@ page import="cn.jvsun.DAO.*" %> 
<% 
String path = request.getContextPath(); 
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 
%> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html> 
 <head> 
 <base href="<%=basePath%>" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" > 
 <title>del</title> 
 </head> 
 <body> 
 <% 
 int aid=Integer.parseInt(request.getParameter("aid")); 
 int result=0; 
 UpDAO dao=new UpDAOImpl(); 
 result=dao.delAlbum(aid); 
 if(result==1){ 
 out.println("<script>alert('删除成功');window.location.href('index.jsp');</script>"); 
 }else{ 
 out.println("<script>alert('删除失败,请先把相册中的照片删掉');window.location.href('index.jsp');</script>"); 
 } 
 %> 
 </body> 
</html> 

数据库的建表语句:

-- Create table 
create table USERINFO 
( 
 ID NUMBER, 
 USERNAME VARCHAR2(30), 
 PASSWORD VARCHAR2(30) 
) 
tablespace USERS 
 pctfree 10 
 initrans 1 
 maxtrans 255 
 storage 
 ( 
 initial 64 
 minextents 1 
 maxextents unlimited 
 ); 
-- Create/Recreate primary, unique and foreign key constraints 
alter table USERINFO 
 add constraint PID primary key (ID) 
 disable; 
--上传者 
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
-- Create table 
create table ALBUM 
( 
 ID NUMBER not null, 
 A_NAME VARCHAR2(30), 
 USER_ID NUMBER 
) 
tablespace USERS 
 pctfree 10 
 initrans 1 
 maxtrans 255 
 storage 
 ( 
 initial 64 
 minextents 1 
 maxextents unlimited 
 ); 
-- Create/Recreate primary, unique and foreign key constraints 
alter table ALBUM 
 add constraint AL_PID primary key (ID) 
 using index 
 tablespace USERS 
 pctfree 10 
 initrans 2 
 maxtrans 255 
 storage 
 ( 
 initial 64K 
 minextents 1 
 maxextents unlimited 
 ); 
alter table ALBUM 
 add constraint USERID foreign key (USER_ID) 
 references USERINFO (ID) 
 disable; 
--相册表 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
-- Create table 
create table PHOTO 
( 
 ID NUMBER, 
 P_NAME VARCHAR2(30), 
 P_URL VARCHAR2(50), 
 P_ALBUMID NUMBER(30) 
) 
tablespace USERS 
 pctfree 10 
 initrans 1 
 maxtrans 255 
 storage 
 ( 
 initial 64 
 minextents 1 
 maxextents unlimited 
 ); 
-- Create/Recreate primary, unique and foreign key constraints 
alter table PHOTO 
 add constraint ALB_ID foreign key (P_ALBUMID) 
 references ALBUM (ID); 
--相片表 

好了,所有代码就写完了,切记,需要smartupload.jar包,没有的童鞋可以去下载:

smartuploadjar包

以上所述是小编给大家介绍的jsp实现仿QQ空间新建多个相册名称并向相册中添加照片功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!

    您感兴趣的教程

    在docker中安装mysql详解

    本篇文章主要介绍了在docker中安装mysql详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编...

    详解 安装 docker mysql

    win10中文输入法仅在桌面显示怎么办?

    win10中文输入法仅在桌面显示怎么办?

    win10系统使用搜狗,QQ输入法只有在显示桌面的时候才出来,在使用其他程序输入框里面却只能输入字母数字,win10中...

    win10 中文输入法

    一分钟掌握linux系统目录结构

    这篇文章主要介绍了linux系统目录结构,通过结构图和多张表格了解linux系统目录结构,感兴趣的小伙伴们可以参考一...

    结构 目录 系统 linux

    PHP程序员玩转Linux系列 Linux和Windows安装

    这篇文章主要为大家详细介绍了PHP程序员玩转Linux系列文章,Linux和Windows安装nginx教程,具有一定的参考价值,感兴趣...

    玩转 程序员 安装 系列 PHP

    win10怎么安装杜比音效Doby V4.1 win10安装杜

    第四代杜比®家庭影院®技术包含了一整套协同工作的技术,让PC 发出清晰的环绕声同时第四代杜比家庭影院技术...

    win10杜比音效

    纯CSS实现iOS风格打开关闭选择框功能

    这篇文章主要介绍了纯CSS实现iOS风格打开关闭选择框,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作...

    css ios c

    Win7如何给C盘扩容 Win7系统电脑C盘扩容的办法

    Win7如何给C盘扩容 Win7系统电脑C盘扩容的

    Win7给电脑C盘扩容的办法大家知道吗?当系统分区C盘空间不足时,就需要给它扩容了,如果不管,C盘没有足够的空间...

    Win7 C盘 扩容

    百度推广竞品词的投放策略

    SEM是基于关键词搜索的营销活动。作为推广人员,我们所做的工作,就是打理成千上万的关键词,关注它们的质量度...

    百度推广 竞品词

    Visual Studio Code(vscode) git的使用教程

    这篇文章主要介绍了详解Visual Studio Code(vscode) git的使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。...

    教程 Studio Visual Code git

    七牛云储存创始人分享七牛的创立故事与

    这篇文章主要介绍了七牛云储存创始人分享七牛的创立故事与对Go语言的应用,七牛选用Go语言这门新兴的编程语言进行...

    七牛 Go语言

    Win10预览版Mobile 10547即将发布 9月19日上午

    微软副总裁Gabriel Aul的Twitter透露了 Win10 Mobile预览版10536即将发布,他表示该版本已进入内部慢速版阶段,发布时间目...

    Win10 预览版

    HTML标签meta总结,HTML5 head meta 属性整理

    移动前端开发中添加一些webkit专属的HTML5头部标签,帮助浏览器更好解析HTML代码,更好地将移动web前端页面表现出来...

    移动端html5模拟长按事件的实现方法

    这篇文章主要介绍了移动端html5模拟长按事件的实现方法的相关资料,小编觉得挺不错的,现在分享给大家,也给大家...

    移动端 html5 长按

    HTML常用meta大全(推荐)

    这篇文章主要介绍了HTML常用meta大全(推荐),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参...

    cdr怎么把图片转换成位图? cdr图片转换为位图的教程

    cdr怎么把图片转换成位图? cdr图片转换为

    cdr怎么把图片转换成位图?cdr中插入的图片想要转换成位图,该怎么转换呢?下面我们就来看看cdr图片转换为位图的...

    cdr 图片 位图

    win10系统怎么录屏?win10系统自带录屏详细教程

    win10系统怎么录屏?win10系统自带录屏详细

    当我们是使用win10系统的时候,想要录制电脑上的画面,这时候有人会想到下个第三方软件,其实可以用电脑上的自带...

    win10 系统自带录屏 详细教程

    + 更多教程 +
    ASP编程JSP编程PHP编程.NET编程python编程