博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jsp实现仿QQ空间新建多个相册名称,向相册中添加照片
阅读量:4922 次
发布时间:2019-06-11

本文共 23414 字,大约阅读时间需要 78 分钟。

 

工具:Eclipse,,smartupload.jar;语言:jsp,;数据存储: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
findAllAlbum(int id); public List
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
findAllAlbum(int id) { List
list= new ArrayList
(); 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
findAllPhoto(int aid) { List
list= new ArrayList
(); 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+"/";  %>                     login            <%      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){              %>              

登录失败

<% }else{ request.getSession().setAttribute("username", username); request.getSession().setAttribute("userid", pojo.getId()); response.sendRedirect("index.jsp"); } } %>

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+"/";  %>                    person message                  
相册界面
当前用户:<%=request.getSession().getAttribute("username")%>
去创建相册
我的所有相册:
<% int userid=(Integer)request.getSession().getAttribute("userid"); UpDAO dao=new UpDAOImpl(); List
list=dao.findAllAlbum(userid); for(AlbumPOJO pojo:list){ %>
相册id:<%=pojo.getId() %>
相册名称:<%=pojo.getA_name() %>
创建者id:<%=pojo.getUser_id() %>
添加照片
查看照片
删除相册
<% } %>

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+"/";  %>                    up photo            <%      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{              %>              

创建相册失败

<% } } %>

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+"/";  %>                    上传照片                  <%          int aid=Integer.parseInt(request.getParameter("aid"));      %>      

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.*" %>                                  <%          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 {      %>      上传失败      <%              }      %>      

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+"/";  %>                    My JSP 'show.jsp' starting page                  
相册界面
当前用户:<%=request.getSession().getAttribute("username")%>
<% int phid=(Integer)request.getSession().getAttribute("phid"); UpDAO dao=new UpDAOImpl(); List
list=dao.findAllPhoto(phid); for(PhotoPOJO pojo:list){ %>
照片id:<%=pojo.getId() %>
照片名称:<%=pojo.getP_name() %>
照片路径:<%=pojo.getP_url() %>
照片所属相册名称:<%=pojo.getP_albumId() %>
删除照片:
<%} %>

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+"/";  %>                            del                  <%      int pid=Integer.parseInt(request.getParameter("pid"));      int result=0;      UpDAO dao=new UpDAOImpl();      result=dao.delPhoto(pid);      if(result==1){          out.println("");      }else{          out.println("");      }      %>            

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+"/";  %>                            del                  <%      int aid=Integer.parseInt(request.getParameter("aid"));      int result=0;      UpDAO dao=new UpDAOImpl();      result=dao.delAlbum(aid);      if(result==1){          out.println("");      }else{          out.println("");      }      %>            

数据库的建表语句:

-- 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包

 

 

 

转载于:https://www.cnblogs.com/lindaguo/p/6765055.html

你可能感兴趣的文章
Maven Nexus
查看>>
js 判断滚动条的滚动方向
查看>>
关于springboot启动时候报错:springboot Failed to parse configuration class [Application]
查看>>
java中Class的使用详解
查看>>
css,js文件后面加一个版本号
查看>>
webpack第一节(2)
查看>>
python之asyncio三种应用方法
查看>>
Laravel 的文件存储 - Storage
查看>>
转:[Server] 在 Windows 上安裝 PHP 5.3 開發環境
查看>>
【IE6的疯狂之二】IE6中PNG Alpha透明(全集)
查看>>
第一个Shell脚本
查看>>
C++ 小笔记
查看>>
Mysql 语句优化
查看>>
例子:进度条
查看>>
包含单引号的sql
查看>>
HTML 基础 2
查看>>
Java 最常见 200+ 面试题全解析:面试必备(转载)
查看>>
LinkedList
查看>>
Spring框架下PropertyPlaceholderConfigurer类配置roperties文件
查看>>
SQL查询优化
查看>>