工具: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 blocke.printStackTrace();}finally{try {pstate.close();conn.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.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 blocke.printStackTrace();}finally{try {pstate.close();conn.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.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实现显示相册

代码如下:

<%@ 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 USERSpctfree 10initrans 1maxtrans 255storage(initial 64minextents 1maxextents unlimited);
-- Create/Recreate primary, unique and foreign key constraints
alter table USERINFOadd constraint PID primary key (ID)disable;
--上传者
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- Create table
create table ALBUM
(ID      NUMBER not null,A_NAME  VARCHAR2(30),USER_ID NUMBER
)
tablespace USERSpctfree 10initrans 1maxtrans 255storage(initial 64minextents 1maxextents unlimited);
-- Create/Recreate primary, unique and foreign key constraints
alter table ALBUMadd constraint AL_PID primary key (ID)using index tablespace USERSpctfree 10initrans 2maxtrans 255storage(initial 64Kminextents 1maxextents unlimited);
alter table ALBUMadd 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 USERSpctfree 10initrans 1maxtrans 255storage(initial 64minextents 1maxextents unlimited);
-- Create/Recreate primary, unique and foreign key constraints
alter table PHOTOadd constraint ALB_ID foreign key (P_ALBUMID)references ALBUM (ID);
--相片表

好了,所有代码就写完了,切记,需要smartupload.jar包,没有的童鞋可以去下载:http://download.csdn.net/detail/weixin_36380516/9807953

不积硅步无以至千里,努力!

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

  1. qq空间的相册名称java_jsp实现仿QQ空间新建多个相册名称并向相册中添加照片功能...

    工具:Eclipse,Oracle,smartupload.jar:语言:jsp,Java:数据存储:Oracle. 实现功能介绍: 主要是新建相册,可以建多个相册,在相册中添加多张照片,删除照片,删 ...

  2. qq空间的相册名称java_jsp实现仿QQ空间新建多个相册名称,向相册中添加照片

    public class UpDAOImpl implementsUpDAO {/*(non-Javadoc) * @see cn.jvsun.DAO.UpDAO#creAlbum(cn.jvsun. ...

  3. iOS传感器集锦、飞机大战、开发调试工具、强制更新、Swift仿QQ空间头部等源码

    iOS精选源码 飞机大作战 MUPhotoPreview -简单易用的图片浏览器 image LLDebugTool是一款针对开发者和测试者的调试工具,它可以帮... image 多个UIScroll ...

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

    转载请注明出处:http://blog.csdn.net/yangyu20121224/article/details/9023451          在今天的这篇文章当中,我依然会以实战加理论结合 ...

  5. java仿qq空间音乐播放_完美实现仿QQ空间评论回复特效

    评论回复是个很常见的东西,但是各大网站实现的方式却不尽相同.大体上有两种方式 1. 像优酷这种最常见,在输入框中@要回复的人,这种方式下,用www.cppcns.com户可以修改@. 新浪微博则是在这 ...

  6. html5仿qq空间,JS实现的仿QQ空间图片弹出效果代码

    本文实例讲述了JS实现的仿QQ空间图片弹出效果代码.分享给大家供大家参考,具体如下: function imageShow(which_click) { var image_path = which_ ...

  7. php 朋友圈留言,php实例-PHP仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(上)...

    我们大部分人都发过动态,想必都知道发动态.回复评论.删除动态的整个过程,那么这个功能是如何实现的呢?下面小编给大家带来了实例代码,对PHP仿qq空间或朋友圈发布动态.评论动态.回复评论.删除动态或评论 ...

  8. java 仿qq空间_仿QQ空间和微信朋友圈,高解耦高复用高灵活

    先看看效果: 用极少的代码实现了 动态详情 及 二级评论 的 数据获取与处理 和 UI显示与交互,并且高解耦.高复用.高灵活. 动态列表界面MomentListFragment支持 下拉刷新与上拉加载 ...

  9. 仿QQ空间图片放缩查看

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

最新文章

  1. ubuntu 安装qt5
  2. python读取txt文件内容-python读取压缩包里面所有*.txt文件的内容
  3. 学习规划|机器学习和NLP入门规划
  4. FileCoin (1) 初步介绍
  5. Altiris 7.1 安装
  6. 【渝粤教育】电大中专跨境电子商务理论与实务 (9)作业 题库
  7. Telephone Linse(POJ-3662)
  8. Maven: Could not transfer artifact xxx from/to xxx
  9. html下拉列表框跳转,html下拉框跳转问题
  10. iphone开发 加速计
  11. Mac如何破解管理员密码
  12. webp的js插件_Vuejs webp图片支持,插件开发过程~
  13. 量化金融入门笔记(一)
  14. Vim 文件浏览器(Netrw)
  15. 公司邮箱登录入口哪个方便,邮箱移动办公哪个最好用?
  16. html字体设置font-family
  17. sql半小时,小时,天,月,年分组,日期函数day() 、month()、year()
  18. [Contests]2016 ACM/ICPC Asia Regional Dalian Online(1006/7/8/9)
  19. 继金山WPS之后,珠海再出神级电子表格,雷军嫡系出品
  20. 如何使用移动云搭建个人网站(保姆级教程)

热门文章

  1. 日照私家驾车族必看之摄像头和测速器地点
  2. 前端面试题汇总(css基础篇)
  3. 使用fiddler获取手机上的数据
  4. 史上最详细JVM笔记
  5. Android JNI(三)——JNI数据结构之JNINativeMethod
  6. 大数据分析机器学习(一)之线性模型-年龄和心率关系
  7. nodejs 快速发布rtsp server
  8. 我的docker随笔34:gitlab服务部署
  9. 关于“EXP-00056: ORACLE error 12154 encountered”的解决方法
  10. 超级计算机开采金矿,中国已知的第一大金矿,储量可达10000吨,全力开采需要40年时间...