Welcome everyone

毕业设计 中期答辩

毕业设计 汪明鑫 65浏览 0评论

 

 

项目背景:

    在大学四年里,在老师和同学的帮助下学到了很多的知识,但是有时候发现校园的学习氛围不够浓厚,还有时候不知道该学习什么,没有学习方向和目标,期末考试前比较慌,往往没办法做到充足的复习,遇到不会的不知道该问谁,老师不可能只给你一个人解答,也可能不是每次都有时间。学习资料、课件等有时候老师可能忘记上传,或者分散在好几个群不好找,想参加一些学习活动不知道在哪报名。
    因此做这样的一个网站就是为了尝试解决上述的一些问题。

 

 

需求分析:

   毕设最终目标主要包含以下需求:(之后还会有改进和完善)

(1)学习的讨论交流功能。(类似贴吧可以自由讨论)
(2)学习资料等的上传下载、查询和删除。(上传服务已完成)
(3)学习活动的创建、修改、查询和删除。(已完成)
(4)学生外借自己看过的书、借自己需要的书的功能。(已完成)
(5)管理员对普通用户的管理,可以删除不当言论、不当资料,
         可以对恶意用户的进行封号等功能。

 

 

 

 

详述:

活动的创建、图书的借出、资料的上传、问题的发布都会在对应的主页以时间降序排列
且都支持模糊查询等基本功能。支持增删改查,支持表单数据回显。

学习活动是指学生自由组织的线下与学习相关的活动,包括分析、交流、比赛、
复习、答疑、模拟考试等等。

图书的借出采取线上结合线下的形式:书的拥有者在线上把要借出去的书发布出来。
需要的同学在书未借出的状态下可以点击借书,后面2者交换联系方式并进行线下借书。
平台起到图书信息集中的作用,且作为第三方监督的作用。

资料的上传和下载,比如说课件,学习资料,各种文档统一管理,实现全校资源共享。
人人为我,我为人人。

问题的发布这一块就是做一个类似贴吧的简易版,实现其发帖回帖的部分功能。
同学可以在上面自由的讨论学习。


 

 

 

 

 

 

 

 

 

 

FastDFS简单介绍

FastDFS是一个高性能的分布式文件系统
可以帮助我们存储海量文件,
fastDFS非常适合存储图片等那些小文件,
不像HDFS需要对文件分片存储,
fastDFS不对文件进行分块,所以它就没有分块合并的开销

可以利用FastDFS写上传下载服务,文件上传后会返回一个文件在服务器上的唯一标识符fileId

 

这样我在便利书的列表时,封面图片的src直接调用http请求

<img src="http://${fileurl}/${book.coverPath}" >

但是这样调用的前提是为FastDFS配置nginx 

 

 

考虑到服务器成本和现有项目的规模,我只在一台linux服务器上部署配置FastDFS,Tracker和Storage部署在一台机器上


java客户端maven引入FastDFS的依赖,并编写FastDFS的配置文件,指定FastDFS的Tracker的ip:port

 

 

nginx 配置:

 

 

在项目中关于FastDFS部分代码展示


   public String uploadDFS(MultipartFile file) throws IOException, MyException {
        //创建TrackerClient
        TrackerClient trackerClient = new TrackerClient();

        //连接tracker
        TrackerServer trackerServer = trackerClient.getConnection();

        //获取storage
        StorageServer storageServer = trackerClient.getStoreStorage(trackerServer);

        //创建TrackerClient
        StorageClient1 storageClient1 = new StorageClient1(trackerServer,storageServer);

        byte[] bytes = file.getBytes();
        //文件名
        String fileName = file.getOriginalFilename();
        //文件扩展名
        String extName = fileName.substring(fileName.lastIndexOf(".") + 1);

        //上传文件
        String fileId = storageClient1.upload_file1(bytes, extName, null);  //上传成功后得到的id

        System.out.println("fileId : "+fileId);

        return fileId;

    }

 

 

 

上图中的拦截器

是做一层拦截:除了主页,其他页面的访问必须要登陆,如果没有登陆不放行,强制跳转到登陆页面

部分代码展示:

@Configuration
public class SessionConfiguration implements WebMvcConfigurer {

   @Autowired
   SessionInterceptor sessionInterceptor;

   /*
   *  注册拦截器
   * */
   @Override
   public void addInterceptors(InterceptorRegistry registry) {
       registry
               .addInterceptor(sessionInterceptor)
               .addPathPatterns("/**")
               .excludePathPatterns("/")
               .excludePathPatterns("/login")
               .excludePathPatterns("/toLogin")
               .excludePathPatterns("/registry")
               .excludePathPatterns("/toRegistry")
               .excludePathPatterns("/css/**")
               .excludePathPatterns("/js/**")
               .excludePathPatterns("/images/**");
   }
}

 

package pers.wmx.learningcenter.web;

import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * @author: wang ming xin
 * @create: 2019-04-12 10:50
 */

/*
* 登陆拦截器
* */

@Component
public class SessionInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        Object object = request.getSession().getAttribute("nowuser");
        if (null == object) {
            response.sendRedirect("/login");  //session没值直接跳转至登陆页面
            return false;
        }
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {

    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {

    }
}

 

 

成果展示(界面截图)略

转载请注明:汪明鑫的个人博客 » 毕业设计 中期答辩

喜欢 (0)

说点什么

您将是第一位评论人!

提醒
avatar
wpDiscuz