类似于 qq发说说动态 基于原生servlet 后台方案
一.思路
功能:做一个能够发说说并且附带图片,可以进行点赞,发表评论(评论只做了一级评论)
数据库:comment(评论表),dynamic(动态表),like(点赞表)
dynamic表:
comment表:
Like表:
思路
3.1:上传的图片保存路径在项目的本地目录,新建一个img,在img下,文件夹采用按月存储, 图片名,采用 用户id_时间戳.后缀名 这样的方式应该是可以保证上传图片不被覆盖。
3.2:注意:我这个点赞表,在客户端是不显示具体的点赞人的名字的。
二.Java Web端实现(这里是采用原生servlet实现,如果使用mvc框架会更方便一点)
1.上传采用: fileupload 框架,下载与使用我参考了这个博客:https://www.cnblogs.com/feipeng8848/p/6769261.html
2:根据 fileupload 封装了一个 保存 图片的 ImgSaveUtil,
public class ImgSaveUtil {/*** 将图片保存在 项目根目录下/img/时间文件夹/id_ 时间戳.后缀* @param request * @param servlet* @param id 上传图片的用户id* @return 保存成功的 图片路径*/
public static List<String> saveToLocalImg(HttpServletRequest request, HttpServlet servlet, String id) {List<String> paths = new ArrayList<String>();Boolean isMultipart = ServletFileUpload.isMultipartContent(request);if (isMultipart) {// 创建工厂 (这里用的是工厂模式)DiskFileItemFactory factory = new DiskFileItemFactory();// 从servletContext中得到上传来的数据factory.setSizeThreshold(1024*100); // 缓冲区大小100kbServletContext servletContext = servlet.getServletConfig().getServletContext();File repository = (File) servletContext.getAttribute("javax.servlet.context.tempdir");ServletFileUpload upload = new ServletFileUpload(factory);upload.setFileSizeMax(512*1024); // 设置单文件大小为512kbupload.setSizeMax(512*1024*9); //最多发9张图片try {// 从request 中获取 FileItemList<FileItem> items = upload.parseRequest(request);for(int i = 0; i < items.size(); i++){FileItem item = items.get(i);if (item.isFormField()) { //普通的文本输入域 不进行处理continue;}// 限制上传文件类型String name = item.getName(); // 获取上传文件的名字List<String> fileType = Arrays.asList(".png", ".jpg");String fileExtName = name.substring(name.lastIndexOf(".")); // 获取文件后缀名if (!fileType.contains(fileExtName)) { // 不在限制的格式内System.out.println("上传图片格式不正确");continue;}// 数据库存储的路径String path = TimeUtil.getYearMonth()+ "\\" + id + "_" + TimeUtil.getTimeStamp() + fileExtName;// 本地保存的路径String savePath = request.getRealPath("/img")+"\\" + path;System.out.println("保存地址" + savePath);File file = new File(savePath);if (!file.exists()) {try {file.createNewFile(); } catch (IOException e) { e.printStackTrace(); } }FileOutputStream fos = new FileOutputStream(file); InputStream fis = (InputStream) item.getInputStream();IOUtils.copy(fis, fos); // 内置utils 类 读取inputstream 数据 到 outputstreamfis.close();fos.close();paths.add(path);//打印List中的内容(每一个FileItem的实例代表一个文件,执行这行代码会打印该文件的一些基本属性,文件名,大小等)System.out.println(item);}} catch (Exception e) {// TODO: handle exceptione.printStackTrace();}}return paths;
}
}
3:获取到 保存图片返回的路径, 将 这些 信息 插入到数据库,发表说说的功能 就ok了
类似于 qq发说说动态 基于原生servlet 后台方案相关推荐
- 【java毕业设计】基于javaEE+原生Servlet+MySql的村镇旅游网站设计与实现(毕业论文+程序源码)——村镇旅游网站
基于javaEE+原生Servlet+MySql的村镇旅游网站设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于javaEE+原生Servlet+MySql的村镇旅游网站设计与实现,文章末尾 ...
- 【java毕业设计】基于javaEE+原生Servlet+MySql的企业财务管理系统设计与实现(毕业论文+程序源码)——企业财务管理系统
基于javaEE+原生Servlet+MySql的企业财务管理系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于javaEE+原生Servlet+MySql的企业财务管理系统设计与实现, ...
- 【java毕业设计】基于javaEE+原生Servlet+SqlServer的医院管理住院系统设计与实现(毕业论文+程序源码)——医院管理住院系统
基于javaEE+原生Servlet+SqlServer的医院管理住院系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于javaEE+原生Servlet+SqlServer的医院管理住院 ...
- 【java毕业设计】基于javaEE+原生servlet+tomcat的教师工资管理系统设计与实现(毕业论文+程序源码)——教师工资管理系统
基于javaEE+原生servlet+tomcat的教师工资管理系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于javaEE+原生servlet+tomcat的教师工资管理系统设计与实 ...
- 【java毕业设计】基于javaEE+原生Servlet+MySql的企业员工信息管理系统设计与实现(毕业论文+程序源码)——企业员工信息管理系统
基于javaEE+原生Servlet+MySql的企业员工信息管理系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于javaEE+原生Servlet+MySql的企业员工信息管理系统设计 ...
- 【java毕业设计】基于javaEE+原生Servlet+MySql的Web停车场管理系统设计与实现(毕业论文+程序源码)——停车场管理系统
基于javaEE+原生Servlet+MySql的Web停车场管理系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于javaEE+原生Servlet+MySql的Web停车场管理系统设计 ...
- 【java毕业设计】基于javaEE+原生Servlet+MySql的网络考试系统设计与实现(毕业论文+程序源码)——网络考试系统
基于javaEE+原生Servlet+MySql的网络考试系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于javaEE+原生Servlet+MySql的网络考试系统设计与实现,文章末尾 ...
- 【java毕业设计】基于javaEE+原生Servlet+jsp的人力资源管理系统设计与实现(毕业论文+程序源码)——人力资源管理系统
基于javaEE+原生Servlet+jsp的人力资源管理系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于javaEE+原生Servlet+jsp的人力资源管理系统设计与实现,文章末尾 ...
- 仿qq空间java源码_android 发说说动态源码下载(高仿QQ空间,含图片多选)
[实例简介]仿qq发动态,图片发布效果 [实例截图] [核心代码] package com.king.photo.activity; import android.annotation.Suppres ...
最新文章
- Linux上PHP加入环境变量
- Ubuntu 16.04使用root 帐号开启 SSH 登录
- 关于__str__的介绍
- java 耦合度_Java第三十八天,Spring框架系列,使用工厂模式降低程序耦合度
- C 语言结构体引用,引用 C 语言结构体学习
- java抓取百度搜索结果_java实现抓取百度对某站点搜索结果
- Signaltap的使用
- 手机html5测试苹果八,怎么简单质检你的iPhone手机以及真假判断!
- AE常用快捷键及最常用功能说明
- OSChina 周三乱弹 —— 我在 if 里,你却在 else
- android nfc P2P模式
- 英特尔oneAPI—开拓
- 使用链表进行奇偶分排 c语言
- 计算机联锁想系统包括哪几层,计算机联锁系统技术_习题.ppt
- Handler 简介
- markdown表情
- 安装EDEM出现There is a problem with this Windows Installer package问题
- CTF之crpto练习三
- 区块链如何破解供应链金融痛点
- PMON学习记录2:PMON启动流程1