jsp实现仿QQ空间新建多个相冊名称,向相冊中加入照片

工具: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%>">
    <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实现显示相冊

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2VpeGluXzM2MzgwNTE2/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" >

代码例如以下:

<%@ 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%>">
    <title>person message</title>
  </head>

  <body>
    <center>相冊界面</center>
   	 当前用户:<%=request.getSession().getAttribute("username")%> <br>
    <a href="cre.jsp">去创建相冊</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() %>">加入照片</a></td>
  	<td><a href="show.jsp?phid=<%=pojo.getId() %>">查看照片</a></td>
  	<td><a href="del.jsp?aid=<%=pojo.getId() %>">删除相冊</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%>">
    <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%>">
    <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%>">
    <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() %>">删除照片:</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%>">

    <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%>">

    <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包,没有的童鞋能够去下载:http://download.csdn.net/detail/weixin_36380516/9807953

不积硅步无以至千里。努力。

时间: 2024-11-05 13:33:03

jsp实现仿QQ空间新建多个相冊名称,向相冊中加入照片的相关文章

jsp实现仿QQ空间新建多个相册名称,向相册中添加照片

工具:Eclipse,Oracle,smartupload.jar:语言:jsp,Java:数据存储:Oracle. 实现功能介绍: 主要是新建相册,可以建多个相册,在相册中添加多张照片,删除照片,删除相册,当相册下有照片时先删除照片才能删除相册. 因为每个相册和照片要有所属人,所以顺带有登录功能. 声明:只是后端实现代码,前台无任何样式,代码测试可行,仅供参考. 代码: 数据库连接帮助类: public class JDBCHelper { public static final String

安卓开发之Kotlin和java双实现仿qq空间下拉图片拉伸

先不扯淡看今天要实现的效果: 话说使用Kotlin实现安卓功能,那我们还是要做一点准备工作,so,你得加一点插件到eclipse或android studio.然并卵,你现在还在使用eclipse开发的话我只能提供地址Kotlin Plugin for Eclipse,然后我使用的还是死丢丢. 死丢丢(android studio)集成kotlin安卓开发 要使用android studio开发kotlin的安卓app,那么你必须有开发kotlin的环境: Kotlin插件.打开Android

Fragment,仿QQ空间

转载请注明出处:http://blog.csdn.net/yangyu20121224/article/details/9023451          在今天的这篇文章当中,我依然会以实战加理论结合的方式教大家如何设计出自己觉得很炫的UI界面.好的,话不多说,进入正题.今天的这篇文章主要是以仿QQ空间的底部菜单栏效果为主,实现的效果有: <1>实现了点击按钮时的切换图片效果: <2>实现了点击按钮时的切换界面效果: <3>实现了点击中间圆形按钮时弹出菜单以及按钮图片切

Html - 仿QQ空间右下角工具浮动块

仿QQ空间右下角工具浮动块 <style type="text/css"> .cy-tp-area>.cy-tp-fixbtn>.cy-tp-text { display: none; margin-top: 15px; text-align: center; text-decoration: none; } .cy-tp-area>.cy-tp-fixbtn { background-color: #fafafa; color: #8c8c8c; } .

IOS仿QQ空间时间显示

最近项目有类似QQ空间展示动态的UI,模仿了QQ空间的时间显示,在此记录,以备查阅. 这是QQ空间的ui: 时间显示为: 1.今天-->今天 xx:xx(今天 15:39)   2.昨天-->昨天 xx:xx(昨天 06:00)   3.前天-->前天 xx:xx(前天 19:00)   4.同一年, 例如:同一年的一月三号-->01-03 xx:xx(01-03 12:29)   5.不在同一年 --> xxxx-xx-xx(2014-12-12) 程序运行效果如下,以下为

仿QQ空间图片放缩查看

仿QQ空间图片放缩查看 仿QQ空间图片放缩查看,点击图片从原位置放大到全屏,后退从全屏缩小到原位置,效果非常好. 下载地址:http://www.devstore.cn/code/info/830.html  运行截图:   

【Android UI设计与开发】第09期:底部菜单栏(四)Fragment+PopupWindow仿QQ空间最新版底部菜单栏

转载请注明出处:http://blog.csdn.net/yangyu20121224/article/details/9023451          在今天的这篇文章当中,我依然会以实战加理论结合的方式教大家如何设计出自己觉得很炫的UI界面.好的,话不多说,进入正题.今天的这篇文章主要是以仿QQ空间的底部菜单栏效果为主,实现的效果有: <1>实现了点击按钮时的切换图片效果: <2>实现了点击按钮时的切换界面效果: <3>实现了点击中间圆形按钮时弹出菜单以及按钮图片切

ScrollView的阻尼回弹效果实现(仿qq空间)

玩过新浪微博,qq空间等手机客户端的童鞋,都应该清楚,在主界面向下滑动时,会有一个阻尼回弹效果,看起来挺不错,接下来我们就来实现一下这种效果,下拉后回弹刷新界面,先看效果图: 这个是编辑器里面的界面效果,不言自明: 运行效果: 正常界面下: 下拉: 下拉结束: 实现代码: 主要部分就是重写的ScrollView: package com.byl.scollower; import android.content.Context; import android.graphics.Rect; imp

iOS_28仿QQ空间登录与退出

最终效果图如下: 注意事项: 输入框的return Key Main.storyboard中为 LoginController 设置一个storyboardID, 以便可以在代码中通过Storyboard对象实例,创建Main.storyboard里面的控制器 仿QQ窗口抖动 dispach_after模拟延时 输入框的return Key的不同处理方式 Login控制器代码 // // LoginController.m // 28_QQ空间 // // Created by beyond o