—— Eclipse为Java环境配置,mysql+navicat为数据库配置 ,依赖SSH的框架,主要分成前端和后台两个部分的内容
tags:Eclipse, mysql, navicat, SSH
---------------------------------------------------------
在 Windows 10 (64 bit) 中利用Eclipse 安装、配置Java环境。利用mysql+navicat安装和配置数据库环境。其他 Windows 版本的环境配置过程类似。
1. Eclipse 的安装
Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。
这里下载了官网eclipse,该版本直接安装即可运行,并且配置JDK环境JDK1.8!
2. Mysql 的安装
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。
官方下载地址:MySQL Community Downloads
安装过程基本默认即可,其中有 2个步骤需要说明。
(1)设置编码类型,西文编码,选多字节的通用utf8编码
![bb79118e7e0bdffaca1ea029b63322cb.png](https://i-blog.csdnimg.cn/blog_migrate/0a38f80b9a1071b58731889abc7eb00c.jpeg)
(2)设置用户名以及密码,用户名:root 密码:123456
![47017bdb9aeebd137e2be7e5d0382534.png](https://i-blog.csdnimg.cn/blog_migrate/9a67263166817be34b7d9e95d6e2aec5.jpeg)
3.navicat for mysql 的安装
Navicat是一套快速、可靠并价格相当便宜的数据库管理工具,专为简化数据库的管理及降低系统管理成本而设。它的设计符合数据库管理员、开发人员及中小企业的需要。Navicat 是以直觉化的图形用户界面而建的,让你可以以安全并且简单的方式创建、组织、访问并共用信息。
官方下载地址:http://www.formysql.com/
解压之后进入文件夹,双击navicat.exe就可以安装了,安装后有 2个步骤需要说明。
(1)打开navicat软件之后,输入注册码
(2)注册成功之后连接到MySQL数据库。点击左上角的【连接】图标,连接名可以任意起,其中,因为我们是本地连接,所以是主机名是“localhost”,IP是“127.0.0.1”,密码是我们刚才设置的mysql密码。
![db569a9bef6477587ec6349d6d70c783.png](https://i-blog.csdnimg.cn/blog_migrate/0a107a3542eee6fc0b9c1fcac698b71f.jpeg)
4.SSH框架
SSH是 struts+spring+hibernate的一个集成框架,是目前比较流行的一种Web应用程序开源框架。区别于 Secure Shell 。
集成SSH框架的系统从职责上分为四层:表示层、业务逻辑层、数据持久层和域模块层,以帮助开发人员在短期内搭建结构清晰、可复用性好、维护方便的Web应用程序。其中使用Struts作为系统的整体基础架构,负责MVC的分离,在Struts框架的模型部分,控制业务跳转,利用Hibernate框架对持久层提供支持,Spring做管理,管理struts和hibernate。具体做法是:用面向对象的分析方法根据需求提出一些模型,将这些模型实现为基本的Java对象,然后编写基本的DAO(Data Access Objects)接口,并给出Hibernate的DAO实现,采用Hibernate架构实现的DAO类来实现Java类与数据库之间的转换和访问,最后由Spring做管理,管理struts和hibernate。
5.实现内容
视频播放与检索系统主要分为前台部分和后台部分,前台主要包括网站简介、用户登录、用户注册、视频搜索等功能模块;后用户主要实现了视频列表等功能,主要负责各种编码格式的视频进行上传。
系统实现框图:
![c74232226b22f61b58854bf45383c3be.png](https://i-blog.csdnimg.cn/blog_migrate/0269661b556d06d33729331e7645eaeb.jpeg)
6.视频格式解码
上传的视频非mp4的时候,代码就会去调用第三方软件ffmpeg进行转码,html是根据标签对播放,转码后,必须还得把标签对里的内容换成mp4,网页才会认定资源是mp4的。因此,实现解码的另一个步骤是将标签内的内容解析出来,并替换为MP4即完成视频的解码操作。
代码实现如下:
1、简单判断格式,转码
public static void getPath(String inputPath,String outputPath) {
// 先获取当前项目路径,在获得源文件、目标文件、转换器的路径
File diretory = new File("");
try {
String currPath = diretory.getAbsolutePath();
inputPath = inputPath ;
inputPath = new String(inputPath.getBytes(),"utf-8");
outputPath = outputPath;
ffmpegPath = "E:ffmpeg1";
System.out.println(currPath);
} catch (Exception e) {
System.out.println("getPath出错");
}
}
public static boolean process(String inputPath,String fileName) {
int type = checkContentType();
boolean status = false;
System.out.println("直接转成mp4格式");
status = processMp4(inputPath,fileName);// 直接转成mp4格式
return status;
}
private static int checkContentType() {
String type = inputPath.substring(inputPath.lastIndexOf(".") + 1, inputPath.length())
.toLowerCase();
// ffmpeg能解析的格式:(asx,asf,mpg,wmv,3gp,mp4,mov,avi,flv等)
if (type.equals("avi")) {
return 0;
} else if (type.equals("mpg")) {
return 0;
} else if (type.equals("wmv")) {
return 0;
} else if (type.equals("3gp")) {
return 0;
} else if (type.equals("mov")) {
return 0;
} else if (type.equals("mp4")) {
return 0;
} else if (type.equals("asf")) {
return 0;
} else if (type.equals("asx")) {
return 0;
} else if (type.equals("flv")) {
return 0;
}
// 对ffmpeg无法解析的文件格式(wmv9,rm,rmvb等),
// 可以先用别的工具(mencoder)转换为avi(ffmpeg能解析的)格式.
else if (type.equals("wmv9")) {
return 1;
} else if (type.equals("rm")) {
return 1;
} else if (type.equals("rmvb")) {
return 1;
}
return 9;
}
private static boolean checkfile(String path) {
File file = new File(path);
if (!file.isFile()) {
return false;
}
return true;
}
2、标签解析
public static String videoToMp4(String htmltest) {
String html = htmltest;
Document doc = Jsoup.parse(html);
Elements rows = doc.select("video[class=edui-upload-video vjs-default-skin video-js]");
String inputPath = "";
String fileName = "";
boolean result =false;
System.out.println(rows.size());
for (int i = 0; i < rows.size(); i++) {
Element videoSrc = rows.get(i);
String vdSrc = videoSrc.attr("src");
Element source = rows.get(i).select("source").get(0);
String src = source.attr("src");
String type = source.attr("type");
String srcSuffix = src.substring(src.lastIndexOf(".") + 1);
inputPath = "D:/my" + src.substring(0, src.lastIndexOf("/") + 1);
fileName = src.substring(src.lastIndexOf("/") + 1);
if (!"mp4".equals(srcSuffix)) {
//TODO 转换视频格式为mp4
ConvertVideo.getPath(inputPath+fileName, inputPath);
result = ConvertVideo.process(inputPath+fileName,fileName);
source.attr("src", src.substring(0, src.lastIndexOf(".") + 1) + "mp4");
source.attr("type", type.substring(0,type.lastIndexOf("/") + 1) + "mp4");
String resout2 = source.toString();
videoSrc.attr("src", vdSrc.substring(0, vdSrc.lastIndexOf(".") + 1) + "mp4");
}
System.out.println("------------source"+source.toString());
System.out.println("inputPath----------"+inputPath);
System.out.println("inputPath----------"+fileName);
System.out.println("src----------"+src);
}
System.out.println(doc.select("p").get(0).toString());
return doc.select("p").get(0).toString();
}
7.视频演示
>前台展示
![01e441b9dc637ce584a1cff79b46749a.png](https://i-blog.csdnimg.cn/blog_migrate/bba1d223b40bc0b2277bc63b3b381c82.jpeg)
>后台展示
![71139b54feaa6740158bc9042980e0c2.png](https://i-blog.csdnimg.cn/blog_migrate/706b28ba82640681df3bf2b8178d1fd5.jpeg)
![1a0ae606e873d6ec1f143ace23843a56.png](https://i-blog.csdnimg.cn/blog_migrate/3ebeb44e64b6c2d0ff859a350be69182.jpeg)