基于Java(SSM框架)+MySQL开发的小型英语学习网站

一、需求分析

英语已经越来越凸显其重要性。大学生一般都需要考CET-4或者CET-6,对于程序员,如果没有扎实的英语基础,看有些API文档也比较费力。生活中处处存在英语,也越来越体现英语的重要性,如何高效学习英语成了关键的讨论问题。本站意在收集有关英语的经典视频和文档,包括TED、VOA和NEWS,使得用户可以方便快捷得获得学习英语的多个通道。

二、总体设计

技术栈

  • 前端:HTML、CSS、JavaScript、jQuery、BootStrap。
  • 后端:JSP、Spring、SpringMVC、MyBatis。

总体功能导图

三、数据库设计

结构说明:数据库设计了三个表,user表中存储用户相关信息,tlike中存储用户收藏的信息,ted中存储了有关ted视频的相关数据。Tlike表中的uid是user表中的外键,同理tid是ted表的外键,uid和ted共同构成了tlike表的主键。nlike与vlike设计模式与上类似,不在重复设计。

相关代码:

CREATE TABLE user(uid INT NOT NULL PRIMARY KEY AUTO_INCREMENT,username VARCHAR(50) NOT NULL UNIQUE,password VARCHAR(50) NOT NULL,email CHAR(30) NOT NULL,status CHAR(1),uuid VARCHAR(50) UNIQUE,CONSTRAINT user_ck_status CHECK (status = 'Y' or status = 'N')
)
CREATE TABLE tlike(uid INT NOT NULL,tid INT NOT NULL,date DATE NOT NULL,PRIMARY KEY (uid, tid)
);
CREATE TABLE ted(tid INT NOT NULL AUTO_INCREMENT PRIMARY KEY,title VARCHAR(300),discription VARCHAR(500),mp4ShdUrl VARCHAR(100)
);ALTER TABLE tlike ADD CONSTRAINT FK_user_tlike FOREIGN KEY ( uid ) REFERENCES USER ( uid ) ON DELETE RESTRICT ON UPDATE RESTRICT;
ALTER TABLE tlike ADD CONSTRAINT FK_ted_tlike FOREIGN KEY ( tid ) REFERENCES ted ( tid ) ON DELETE RESTRICT ON UPDATE RESTRICT;INSERT INTO ted (title, discription, mp4ShdUrl) VALUES 
('【TED】下一场全球农业革命', '传统肉类生产对我们的环境造成了危害,也给全人类的健康带来风险。但是人们并不会减少食用肉类,除非我们能够提供一些价格相当(或更便宜)、且口味一致(或更好)的替代品。在这场令人眼界大开的演讲中,食物改革家和TED成员布鲁斯·弗里德里克展示了植物肉和细胞肉产品,它们会很快促进全球肉类产业转型——也会改变你的晚餐。', 'http://mov.bn.netease.com/open-movie/nos/mp4/2019/12/02/SEUF3S7GU_shd.mp4'),
('【TED】恶意伪造技术是如何破坏真相的?', 'Deepfake,是一种为了恶意的目的,像是引发暴力或诽谤政客和记者,来伪造视频或音频的技术。它的使用在逐渐变成一种真实的威胁。随着这方面的工具变的更加便捷,做出来的产品更加真实,它们将如何塑造我们对世界的看法?在这个演讲中,法律教授 Danielle Citron展示了Deepfakes技术如何放大了我们的不信任感,并且提出了一些保护真相的方法。', 'http://mov.bn.netease.com/open-movie/nos/mp4/2019/12/03/SEUI6M74B_shd.mp4'),
('【TED】垂直农场:节约资金、资源的新型农业模式','到 2050 年,全球人口预计将达到 98 亿。我们怎么养活所有人?由投资银行从业者转行农业工作者的 Stuart Oda 提到了室内垂直农场:在一个可控的、不受气候影响的环境中,在分层的架子上种植食物。在一次前沿性的演讲中,他解释了这种方法如何能保持更好的安全标准,节约资金,节约用水,为我们的子孙后代造福。', 'http://mov.bn.netease.com/open-movie/nos/mp4/2020/03/29/SF807Q11K_shd.mp4'),
('【TED】当还在童年的我们受到了创伤,很有可能会影响我们一生的健康', '儿童时期的创伤并不是你在成长过程中得到的。儿科医生Nadine Burke Harris解释说,虐待,忽视和父母在心理健康或药物滥用问题上挣扎的反复压力对大脑的发育产生了真实而切实的影响。这种情况在一生中展开,直到那些经历过高水平创伤的患者患心脏病和肺癌的风险增加了三倍。恳求儿科医学对抗创伤的预防和治疗,正面。', 'http://mov.bn.netease.com/open-movie/nos/mp4/2015/01/19/SAFDAP8DJ_shd.mp4'),
('【TED】所谓断舍离', '我们原以为买来会带来快乐的东西,却给我们的心挖了更深的洞。', 'http://mov.bn.netease.com/open-movie/nos/mp4/2016/03/28/SBIAEU9P4_shd.mp4')

四、详细设计

目录结构

结构详细说明

Web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0"><display-name>Archetype Created Web Application</display-name><!--log4j配置文件地址 --><context-param><param-name>log4jConfiguration</param-name><param-value>classpath:log4j2.xml</param-value></context-param><!-- Log4j的监听器要放在spring监听器前面 --><listener><listener-class>org.apache.logging.log4j.web.Log4jServletContextListener</listener-class></listener><filter><filter-name>log4jServletFilter</filter-name><filter-class>org.apache.logging.log4j.web.Log4jServletFilter</filter-class></filter><filter-mapping><filter-name>log4jServletFilter</filter-name><url-pattern>/*</url-pattern><dispatcher>REQUEST</dispatcher><dispatcher>FORWARD</dispatcher><dispatcher>INCLUDE</dispatcher><dispatcher>ERROR</dispatcher></filter-mapping><!--配置Spring的监听器,默认只加载WEB-INF目录下的applicationContext.xml--><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><!--所以为了统一管理配置文件,这里需要设置配置文件的路径,这样不在WEB-INF目录下的applicationContext.xml也可以访问到--><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext.xml</param-value></context-param><!--配置前端控制器--><servlet><servlet-name>springMVC</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!--加载springMVC.xml配置文件--><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:springMVC.xml</param-value></init-param><!--设置启动级别,启动服务器就创建该servlet--><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>springMVC</servlet-name><!--过滤所有文件--><url-pattern>/</url-pattern></servlet-mapping><!--解决中文乱码问题,过滤--><filter><filter-name>encoding</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>utf-8</param-value></init-param></filter><filter-mapping><filter-name>encoding</filter-name><url-pattern>/*</url-pattern></filter-mapping></web-app>

所需要的依赖

单元测试:junit

Mysql驱动:mysql-connector-java

数据库连接池:c3p0

Servlet处理:servlet-api

Jsp处理:jsp-api

标签库:jstl

数据库框架:mybatis、整合:mybatis-spring

Spring相关:springMVC,springJDBC、

偷懒插件:lombok

邮件api:javax.mail-api、javax.mail

日志:log4j

Bean封装工具:beanutils

使用的JSON格式化类库:jackson

前端设计部分设计详细

整体设计:基于BootStrap的组件设计,各部分右上角有汉堡导航条方便去各个页面。

Index.html:响应式布局,懒加载。

Login.html: 淡入淡出效果

Register.html: 淡入淡出,控制BOM以实现背景图片左右移动的效果,监听鼠标,浮动在logo上即可播放音乐,单击logo暂停播放,并且浮现注册页面。

Control.jsp、updateInfo.jsp: 用户管理和更新页,BootStrap组件设计页面。

五、测试运行

主页

登录页

注册页

个人中心

修改信息

其他

六、其他细节

激活相关

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

数据爬取

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/456132.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Openlayers高级交互(7/20):点击某点弹出窗口,自动播放视频

在使用 OpenLayers 构建 WebGIS 应用程序时,如果你想在地图上嵌入视频,通常的做法是将视频作为覆盖层(Overlay)添加到地图上。这里是一个示例,点击某点弹出窗口,自动播放视频。 效果图 专栏名称内容介绍Openlayers基础实战 (72篇)专栏提供73篇文章,为小白群体提供基础…

Vxe UI vue vxe-table 虚拟树表格的使用,流畅的渲染万级数据树结构表格

Vxe UI vue vxe-table 虚拟树表格的使用&#xff0c;流畅的渲染万级数据树结构表格 代码 普通树表格&#xff0c;一般存数据库里都是平级数据&#xff0c;vxe-table 的树渲染这就非常友好了&#xff0c;只有带有父子id关联的数组&#xff0c;就可以自动渲染树表格。 <te…

用 Vue 打造高效 Gherkin 自动化测试脚本编写工具

之前曾撰写过一篇有关运用 Pytest - BDD 框架开展自动化测试的文章。行为驱动开发&#xff08;BDD&#xff09;因着重于以业务需求和用户行为作为导向来编写测试脚本&#xff0c;故而广受关注。Gherkin 作为 BDD 中常用的语言&#xff0c;用于描述测试场景与步骤&#xff0c;具…

C#学习笔记(五)

C#学习笔记&#xff08;五&#xff09; 第 三 章 基本语句以及语法一、控制台的基本语句使用1. 方法重载2. 输入输出3.字符串格式化 二、赋值运算符、算数运算符、比较运算符三、数据类型转换常用方法使用、比较和选择1. 自动类型转换(隐式转换)2. 强制类型转换2.1 数值类型之间…

k8s-service详解

Service介绍 在kubernetes中&#xff0c;pod是应用程序的载体&#xff0c;我们可以通过pod的ip来访问应用程序&#xff0c;但是pod的ip地址不是固定的&#xff0c;这也就意味着不方便直接采用pod的ip对服务进行访问。 为了解决这个问题&#xff0c;kubernetes提供了Service资源…

COVON全意卫生巾,轻薄透气,绵柔速干,马来西亚热销中

随着女性健康意识的提高&#xff0c;卫生巾作为女性日常生活中的必需品&#xff0c;其品质和舒适度越来越受到关注。今天&#xff0c;我们要为大家介绍一款来自马来西亚热销的卫生巾——COVON全意卫生巾&#xff0c;以其轻薄透气、绵柔速干的特点&#xff0c;赢得了广大女性的喜…

故障诊断 | CNN-GRU卷积神经网络-门控循环单元组合模型的故障诊断(Matlab)

效果一览 文章概述 故障诊断 | CNN-GRU卷积神经网络-门控循环单元组合模型的故障诊断(Matlab) 源码设计 %% CNN-GRU多特征分类预测

ORA-12170: TNS:Connect timeout occurred

tnsping xxx通 telnet xxx 端口通 sqlplus xxx/xxx提示ORA-12170: TNS:Connect timeout occurred 沟通了解到&#xff0c;目标端为oracle rac两节点&#xff0c;目前只开通了scan ip的端口策略。 处理办法&#xff1a; 开通两个vip的端口策略。 由于本次连接只是测试用的…

CSS综合案例——新闻详情

一、知识点 1、文字颜色 属性名&#xff1a;color 属性值&#xff1a; 颜色表示方式属性值说明使用场景颜色关键字颜色英文单词red,green,blue学习测试rgb表示法rg(r,g,b)r,g,b表示红绿蓝三原色&#xff0c;取值0-255了解rgba表示法rgba(r,g,b,a)a表示透明度&#xff0c;取…

Android 自定义 Dialog 实现列表 单选,多选,搜索

前言 在Android开发中&#xff0c;通过对话框让用户选择&#xff0c;筛选信息是很方便也很常见的操作。本文详细介绍了如何使用自定义 Dialog、RecyclerView 以及自定义搜索框 来实现选中状态和用户交互&#xff0c;文中大本分代码都有明确注释&#xff0c;主打一个简单明了&a…

JS | 如何使用 JavaScript 实现图片懒加载的淡入效果?

在现代的网页设计中&#xff0c;为了提高用户体验和网站性能&#xff0c;图片懒加载已经成为一个常见的技术。图片懒加载可以减少初始加载时间&#xff0c;延迟加载图片直到用户滚动到它们所在的位置。另外&#xff0c;为了进一步提升用户体验&#xff0c;添加淡入效果可以使页…

【忍无可忍,无需再忍】永久解决xshell or xftp 更新问题

1 背景介绍 提示“要继续使用此程序,您必须应用最新的更新或使用新版本”&#xff0c;笔者版本是xshell 6 距离一段时间不使用&#xff0c;或者遇到更新场景&#xff0c;总是会弹出这个框&#xff0c;实在是忍无可忍&#xff0c;无需再忍。 2 思路介绍 笔者上一篇关于如何解…

学习的内核,如何更好的学习呢?

文章目录 三步学习法起因&#xff1a;三步学习法是什么&#xff1f;三步学习法为什么&#xff1f;我自己的实例 三步学习法应该怎么办&#xff1f;总结&#xff1a; 三步学习法 起因&#xff1a; 今天在学习黑马的java设计模式&#xff0c;我会觉得我的学习进度很慢&#xff0…

MAVlink协议 部分通用消息集解析

文章目录 MAVLink是一种非常轻量级的消息传输协议, 用于地面控制终端&#xff08;地面站&#xff09;与无人机之间 (以及机载无人机组件之间) 进行通信&#xff0c; 为一种设计用于资源受限系统及带宽受限链路的二进制遥测协议。 HEARTBEAT 检测信号消息显示系统或组件存在并正…

【32】C++流

C流 IO: 向设备输入数据和输出数据 C的IO流 设备: 文件控制台特定的数据类型(stringstream) c中,必须通过特定的已经定义好的类, 来处理IO(输入输出) 读写文件&#xff1a;文件流 文件流: 对文件进行读写操作 头文件: <fstream> 类库: ifstream 对文件输入&am…

C#基础知识-枚举

目录 枚举 1.分类 1.1普通枚举 1&#xff09;默认情况 2&#xff09;指定起始值 1.2标志枚举&#xff08;Flag Enum&#xff09; 位运算符与标志枚举 1&#xff09;组合标志 2&#xff09;检查标志 2.枚举与不同类型之间的转换 1&#xff09;枚举->整型 2&#…

深度学习调参大法

目录 trick 1&#xff1a;深度学习调参核心点trick 2&#xff1a;关于 深度学习Model选型问题trick 3&#xff1a;关于数据trick 4&#xff1a;关于调参 4.1 关于 Loss function 调参策略4.2 关于 Learning rate 和 batch size 调参策略4.3 关于 Epoch number 和 early stoppi…

数据结构模板代码合集(不完整)

P3368 【模板】树状数组 2 #include <bits/stdc.h> using namespace std; const int maxn 5e5 7;int n, m, s, t; int ans; int a[maxn]; struct node{int l, r;int num; }tr[maxn * 4];void build(int p, int l, int r){tr[p] {l, r, 0};if(l r){tr[p].num a[l];r…

TCP全连接队列与 tcpdump 抓包

&#x1f351;个人主页&#xff1a;Jupiter. &#x1f680; 所属专栏&#xff1a;计算机网络高效通关之路 欢迎大家点赞收藏评论&#x1f60a; 目录 listen第二个参数详解 全连接队列与半连接队列半开放连接队列&#xff08;SYN队列&#xff09;全连接队列&#xff08;接受队列…

【MySQL】C语言连接MySQL数据库3——事务操作和错误处理API

目录 1.MySQL事务处理机制 1.1.autocommit 1.2.autocommit的设置与查看 1.3.使用示例 2.事务操作API 2.1.设置事务提交模式——mysql_autocommit() 2.2.提交事务——mysql_commit() 2.3.事务回滚——mysql_rollback() 3.错误处理的API 3.1.返回错误的描述——mysql_er…