# OVLS **Repository Path**: moyongjun/OVLS ## Basic Information - **Project Name**: OVLS - **Description**: OVLS 在线学习平台。基于 Java 开发的在线学习平台。采用分布式系统架构和 redis 本地缓存机制,实现了单点登录功能的要求。 - **Primary Language**: CSS - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-08-05 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

OVLS在线学习平台

主要功能模块

主要技术

系统架构

OVLS数据库(MySQL)

MySQL安装

参考安装文档。

MySQL使用

  1. 库操作

    库里面用于存储表,索引,视图,过程。如果想对表操作,必须先use库。

  2. 表操作

    注意:与Oracle不同的是字段类型、自动递增、表引擎。

  3. 记录操作

  4. 函数和关键字

    mysql和oracle都有各自的数值函数、字符函数、日期函数等。

    select sysdate from dept;

    select now() from dept;

数据库导入

create database studyonline; use studyonline; set names utf8; source D:\\studyonline.sql

数据库结构

在线学习Web工程搭建

  1. 创建maven project,在pom.xml中追加定义

    org.springframework.boot spring-boot-starter-parent 1.4.7.RELEASE org.springframework.boot spring-boot-starter-web jstl jstl 1.2 org.apache.tomcat.embed tomcat-embed-jasper
  2. 添加application.properties,追加定义

    server.port=9001 spring.mvc.view.prefix=/study/ spring.mvc.view.suffix=.jsp
  3. 添加启动类

    @SpringBootApplication public class StudyBootApplication { public static void main(String[] args) { SpringApplication.run(StudyBootApplication.class, args); } }
  4. 在src/main下创建webapp目录,将study界面复制进去。

  5. 映射html请求,显示jsp页面

    /study/.html-->DispatcherServlet-->StudyController-->ViewResolver-->webapp/study/.jsp

    @Controller public class StudyController { @RequestMapping("/study/index.html") public String toIndex(){ return "index";//viewresolver-->index.jsp } @RequestMapping("/study/course.html") public String toCourse(){ return "course"; } }

在线考试Web工程搭建

  1. 创建maven project,在pom.xml添加定义

    org.springframework.boot spring-boot-starter-parent 1.4.7.RELEASE org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-thymeleaf net.sourceforge.nekohtml nekohtml
  2. 在application.properties添加参数定义

    server.port=9002 #nekohtml spring.thymeleaf.mode=LEGACYHTML5
  3. 编写主启动类

    @SpringBootApplication public class ExamBootApplication { public static void main(String[] args) { SpringApplication.run(ExamBootApplication.class, args); } }
  4. 将html模板文件放入src\main\resources\templates目录中

  5. 映射html请求,显示thymeleaf模板页面

    /exam/.html-->DispatcherServlet-->ExamController-->thymeleaf(.html界面)

    @Controller public class ExamController { @RequestMapping("/exam/home.html") public String toHome(){ return "home"; } }

用户服务模块

功能接口设计

  1. 注册

    /user/regist-->UserController.regist-->UserService.addUser-->UserMapper-->返回JSON结果

  2. 登录

    /user/login-->UserController.login-->UserService.checkUser-->UserMapper-->返回JSON结果

  3. 查看个人信息

    对USER表进行查询。

  4. 修改个人信息

    对USER表进行更新。

  5. 修改密码

    对USER表进行更新。

密码加密

密码使用MD5(密码+salt随机盐)算法处理。

Ajax跨域解决

有两种解决方案,一个是jsonp,另一个是CORS

JSONP只能实现GET请求,而CORS支持所有类型的HTTP请求。这里不考虑JSONP。 HTML5带来了一个新的跨域解决方案CORS,CORS是一个W3C标准,全称是”跨域资源共享”(Cross-Origin Resource Sharing)

定义一个Filter,对CORS参数设置

@WebFilter(servletNames={"dispatcherServlet"}) public class AjaxDomainFilter implements Filter{ public void init(FilterConfig filterConfig) throws ServletException { // TODO Auto-generated method stub } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletResponse httpResponse = (HttpServletResponse)response; httpResponse.setHeader("Access-Control-Allow-Origin", "*"); httpResponse.setHeader("Access-Control-Allow-Methods", "GET,POST,PUT,DELETE"); chain.doFilter(request, response); } public void destroy() { // TODO Auto-generated method stub } }

注意:在启动类前添加@ServletComponentScan注解标记。

热启动

每次修改代码后,可以自动启动boot。

org.springframework.boot spring-boot-devtools

MySQL添加乱码

在指定mysql连接字符串时指定编码

spring.datasource.url=jdbc:mysql://localhost:3306/studyonline?useUnicode=true&characterEncoding=utf8

登录

登录涉及技术

  1. 密码MD5+盐加密技术
  2. SSO单点登录技术
  3. 采用token令牌机制
  4. 采用服务器端redis存储和客户端h5本地存储
  5. 采用UUID算法

课程服务工程搭建

  1. 创建maven project,在pom.xml添加引入

    cn.xdl ovls_common_service 0.0.1-SNAPSHOT
  2. 添加application.properties文件

    server.port=8002 #datasource spring.datasource.username=root spring.datasource.password=1234 spring.datasource.url=jdbc:mysql://localhost:3306/studyonline?useUnicode=true&characterEncoding=utf8 spring.datasource.driverClassName=com.mysql.jdbc.Driver
  3. 添加主启动类定义

    @SpringBootApplication @MapperScan(basePackages={"cn.xdl.ovls.course.dao"}) @ServletComponentScan public class CourseBootApplication { public static void main(String[] args) { SpringApplication.run(CourseBootApplication.class, args); } }
  4. 添加entity和Mapper映射器

设计和实现免费好课推荐功能

/course/free-->DispatcherServlet-->CourseController-->CourseService-->CourseMapper-->返回JSON结果

{"status":1,"msg":"查询成功","data":课程集合}

查询免费好课,条件是免费、好课(评价)、前5个