工具:Eclipse,Oracle,smartupload.jar;語言:jsp,Java;數(shù)據(jù)存儲(chǔ):Oracle。
實(shí)現(xiàn)功能介紹:
主要是新建相冊(cè),可以建多個(gè)相冊(cè),在相冊(cè)中添加多張照片,刪除照片,刪除相冊(cè),當(dāng)相冊(cè)下有照片時(shí)先刪除照片才能刪除相冊(cè)。
因?yàn)槊總€(gè)相冊(cè)和照片要有所屬人,所以順帶有登錄功能。
聲明:只是后端實(shí)現(xiàn)代碼,前臺(tái)無任何樣式,代碼測(cè)試可行,僅供參考。
代碼:
數(shù)據(jù)庫(kù)連接幫助類:
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;
}
}
圖片上傳時(shí),要修改圖片名稱,防止上傳重名圖片將上一張覆蓋,這里的做法是將圖片名改為由用戶ID和精確到毫秒的時(shí)間組成,修改圖片名的幫助類:
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();
}
}
實(shí)現(xiàn)所有這些的接口類:
public interface UpDAO {
/**
* 創(chuàng)建相冊(cè)名稱
*
*/
public int creAlbum(AlbumPOJO ap);
/**
*顯示所創(chuàng)建的所有相冊(cè)名稱
*/
public ListAlbumPOJO> findAllAlbum(int id);
public ListPhotoPOJO> findAllPhoto(int id);
/**
* 上傳照片
*/
public int upPhoto(PhotoPOJO pp);
/**
* 刪除相冊(cè)
* @param id 相冊(cè)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);
}
接口的具體實(shí)現(xiàn)類:
public class UpDAOImpl implements UpDAO {
/* (non-Javadoc)
* @see cn.jvsun.DAO.UpDAO#creAlbum(cn.jvsun.POJO.AlbumPOJO)
* 創(chuàng)建相冊(cè)名稱
*/
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)
* 刪除相冊(cè)
*/
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;
}
/**
* 相冊(cè)序列號(hào)
*/
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;
}
/**
*照片序列號(hào)
*/
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()
* 顯示所創(chuàng)建的相冊(cè)名
*/
public ListAlbumPOJO> findAllAlbum(int id) {
ListAlbumPOJO> list= new ArrayListAlbumPOJO>();
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 ListPhotoPOJO> findAllPhoto(int aid) {
ListPhotoPOJO> list= new ArrayListPhotoPOJO>();
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;
}
}
用戶,相冊(cè),照片三個(gè)POJO類:
/** * 用戶實(shí)體類
*
*/
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
}
}
/**
* 相冊(cè)實(shí)體類
*
*/
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
}
}
/**
*照片實(shí)體類
*
*/
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實(shí)現(xiàn)登錄
%@ 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="請(qǐng)輸入用戶名"/>
input type="password" name="password" placeholder="請(qǐng)輸入密碼"/>
input type="submit"/>
/form>
/body>
/html>
index.jsp實(shí)現(xiàn)顯示相冊(cè)
代碼如下:
%@ 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>相冊(cè)界面/center>
當(dāng)前用戶:%=request.getSession().getAttribute("username")%> br>
a href="cre.jsp" rel="external nofollow" >去創(chuàng)建相冊(cè)/a>br>
我的所有相冊(cè):br>
%
int userid=(Integer)request.getSession().getAttribute("userid");
UpDAO dao=new UpDAOImpl();
ListAlbumPOJO> list=dao.findAllAlbum(userid);
for(AlbumPOJO pojo:list){
%>
tr>
a>相冊(cè)id:/a>td>%=pojo.getId() %>/td>
a>相冊(cè)名稱:/a>td>%=pojo.getA_name() %>/td>
a>創(chuàng)建者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" >刪除相冊(cè)/a>/td>
/tr>br>
%
}
%>
/body>
/html>
cre.jsp創(chuàng)建相冊(cè)
%@ 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>創(chuàng)建相冊(cè)失敗/h1>
%
}
}
%>
form action="cre.jsp?action=cre" method="post">
input type="text" name="cre" placeholder="請(qǐng)輸入您要?jiǎng)?chuàng)建的相冊(cè)名稱"/>
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="確認(rèn)上傳"/>
/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加當(dāng)前時(shí)間組成
SmartUpload smartupload = new SmartUpload();//實(shí)例化上傳操作的對(duì)象
//初始化上傳文件
smartupload.initialize(pageContext);
//準(zhǔn)備上傳
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>相冊(cè)界面/center>
當(dāng)前用戶:%=request.getSession().getAttribute("username")%> br>
%
int phid=(Integer)request.getSession().getAttribute("phid");
UpDAO dao=new UpDAOImpl();
ListPhotoPOJO> 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>照片所屬相冊(cè)名稱:/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('出錯(cuò)了');window.location.href('show.jsp');/script>");
}
%>
/body>
/html>
del.jsp刪除相冊(cè)
%@ 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('刪除失敗,請(qǐng)先把相冊(cè)中的照片刪掉');window.location.href('index.jsp');/script>");
}
%>
/body>
/html>
數(shù)據(jù)庫(kù)的建表語句:
-- 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;
--相冊(cè)表
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- 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實(shí)現(xiàn)仿QQ空間新建多個(gè)相冊(cè)名稱并向相冊(cè)中添加照片功能,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!