快捷搜索:

File Space——Java DIY,filespacejavadiy

File Space——Java DIY,filespacejavadiy
1 概述

File Space系统适用于团体,主要提供的是团队文件分享以及个人文件的存储管理服务。分为个人文件存储管理平台和团队文件共享平台。

个人文件存储平台主要为个人提供相关的文件分类存储服务:该部分在用户登录后,可以选择添加新的文件,创建新的分类,修改原有的文件,查看相关的文件,以及对个人信息的管理等。

    团队space主要是将个人部分添加的资料进行共享性的展示。

    个人用户可以浏览团队共享的内容,然后在已登录的情况下,可以将浏览到的自己喜欢的资料添加到自己的收藏。

项目针对半封闭的团队管理方式,因此用户添加方式采用管理员添加方式。

详细的系统功能请看下图(图1-1)所示:

 

 1 public final static String toMD5(String s) {
 2 
 3 char hexDigits[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};       
 4 
 5 try {
 6 
 7     byte[] btInput = s.getBytes();
 8 
 9     // 获得MD5摘要算法的 MessageDigest 对象
10 
11     MessageDigesAAAAInst = MessageDigest.getInstance("MD5");
12 
13     // 使用指定的字节更新摘要
14 
15     mdInst.update(btInput);
16 
17     // 获得密文
18 
19     byte[] md = mdInst.digest();
20 
21     // 把密文转换成十六进制的字符串形式
22 
23     int j = md.length;
24 
25     char str[] = new char[j * 2];
26 
27     int k = 0;
28 
29     for (int i = 0; i < j; i++) {
30 
31         byte byte0 = md[i];
32 
33         str[k++] = hexDigits[byte0 >>> 4 & 0xf];
34 
35         str[k++] = hexDigits[byte0 & 0xf];
36 
37     }
38 
39     return new String(str);
40 
41 } catch (Exception e) {
42 
43     e.printStackTrace();
44 
45     return null;
46 
47 }
48 
49 }
View Code 4.4 登录权限控制的实现

系统的权限控制是通过AAA实现。

首先定义该AAA,在执行相关的Action前进行拦截,该AAA的实现通过继承

MethodFilterInterceptor并重写doIntercept方法实现。

关键代码如下:

 1 HttpServletRequest request = ServletActionContext.getRequest();
 2 
 3 User user = (User) request.getSession(false).getAttribute("user");
 4 
 5 if(user == null){
 6 
 7 //logger.info("用户没有登录!");
 8 
 9 return "re";
10 
11 } else {
12 
13 //logger.info("用户登录成功!");
14 
15 return invoker.invoke();
16 
17 }
View Code

 

4.5 数据库连接池的实现

数据库连接池能够有效的提高访问数据库的速度,因此采用。

该项目使用Tomcat7.0 自带的Tomcat JDBC Pool,通过在项目中添加context.xml中配置数据源,然后通过获取context中的数据源获取数据库的连接。

 

4.6 文件上传功能的实现

文件上传前台使用类型为file的input,因为中文文件名在下载时出现问题,难以传输,因此在这里限制上传的文件名必须是英文名。

后台上传实现直接就通过

ServletActionContext.getServletContext().getRealPath("/uploaAAAAAAAAAAA>获取文件上传的地址(项目下面的upload文件夹),然后将文件通过文件的输入输出流写入到服务器。

最后将文件的相关的存储信息写入到数据库,以便下载。

 

4.7 文件下载功能的实现

首先根据前台传递过来的文件的id值,获取该文件的相关信息,然后定义一个文件输出流以及相关的getter与setter方法,确定fileName以及contentType,最后配置输出的result

<result name="download" type="stream">

<param name="inputName">fileDown</param>

<param name="contentDisposition">attachment;filename="${fileFileName}"</param>

<param name="contentType">fileContentType;charset=utf-8</param>

</result>

 

4.8 查看文件列表功能的实现

文件列表分为区分用户与不区分用户的列表两种,分别对应首页的共享的文件展示与个人文件的展示,首页的文件展示因为文件数量巨大,因此采用的是分页的方式进行展示,个人文件里面的文件列表因为每一次展示都需要涉及文件的分类,因此数量不是很大,没有采用分页。

首页文件的共享展示,采用的分页方式过程请参考分页的实现 

个人文件的展示通过session里面的用户对象以及前台传过来的文件类型的id值获取相关的文件对象列表进行实现。

 

4.9 数据库设计(用户区分,文件级联删除,存储过程)

数据库的具体设计见系统设计中的数据库设计。

用户区分采用的是在用户的属性中添加判断该用户是否是管理员的字段,根据该字段的值进行判断该用户是管理员还是普通用户。

文件删除功能,项目中没有提供单个文件的删除功能。

在用户删除某个文件类型的时候,根据外键关系,级联删除这些文件信息,在管理员删除该用户时,该用户下面的文件也会被删除。

 

项目的数据访问都采用的是存储过程。

采用Navicat直接在数据库定义存储过程,然后在DAO层中通过

prepareCall(“call XXX”);调用该存储过程获得数据。

 

4.10 面包屑导航功能的实现

面包屑导航的作用是告诉访问者他们目前在网站中的位置以及如何返回,当网站中出现典型的单线3层以上的层次使用面包屑导航可以有效的提高用户的体验。

本次项目中因为要实现文件分类的无限级别的分类,因此采用面包屑导航。

项目中的页面部分展示通过后台传递的Map集合直接读取显示。

Map里面存放的当前分类的所有的父类的id值(键)以及对应的类别名称(值)。

因为考虑到需要按照一定的顺序存放,Map采用的是LinkedHashMap。

Map里面键的集合里面的值通过数据库里面定义的函数实现。

该函数通过传递的当前的类别的id值获取该类别的所有的父类并且按照一定的顺序,形成字符串输出。

该函数如下:

 1 BEGIN
 2 
 3 DECLARE sParentList varchar(1000);
 4 
 5 DECLARE sParentTemp varchar(1000);
 6 
 7 SET sParentTemp =cast(rootId as CHAR);
 8 
 9 WHILE sParentTemp is not null DO
10 
11 IF (sParentList is not null) THEN
12 
13 SET sParentList = concat(sParentTemp,',',sParentList);
14 
15 ELSE
16 
17 SET sParentList = concat(sParentTemp);
18 
19 END IF;
20 
21 SELECT group_concat(parentid) INTO sParentTemp FROM tab_type where FIND_IN_SET(tid,sParentTemp)>0;
22 
23   END WHILE;
24 
25   RETURN sParentList;
26 
27 END
View Code

 

源码地址:https://github.com/husky00/Java/tree/master/Java/FileSpace01

sql地址:http://files.cnblogs.com/files/husky/FileSpace.zip  用的mysql 数据库,sql 使用navicat自动导出的!

http://www.bkjia.com/Mysql/1189424.htmlwww.bkjia.comtruehttp://www.bkjia.com/Mysql/1189424.htmlTechArticleFile Space——Java DIY,filespacejavadiy 1 概述 File Space 系统适用于团体,主要提供的是团队文件分享以及个人文件的存储管理服务。分为 个人文...

本文源自: AG88环亚

您可能还会对下面的文章感兴趣: