├── .gitignore ├── .idea ├── .gitignore ├── artifacts │ └── dabaitv.xml ├── compiler.xml ├── libraries │ └── lib.xml ├── misc.xml ├── modules.xml └── runConfigurations.xml ├── README.md ├── dabaitv.iml ├── dbtv.sql ├── src ├── com │ └── itz │ │ ├── dao │ │ ├── CollectionDao.java │ │ ├── UserDao.java │ │ ├── VideoDao.java │ │ └── impl │ │ │ ├── CollectionDaoImpl.java │ │ │ ├── UserDaoImpl.java │ │ │ └── VideoDaoImpl.java │ │ ├── entity │ │ ├── CollectList.java │ │ ├── PageBean.java │ │ ├── User.java │ │ ├── UserCollections.java │ │ └── Video.java │ │ ├── filter │ │ ├── AdminFilter.java │ │ └── CharacterFilter.java │ │ ├── service │ │ ├── CollectionService.java │ │ ├── UserService.java │ │ └── VideoService.java │ │ ├── servlet │ │ ├── CollectionManageServlet.java │ │ ├── UserManageServlet.java │ │ └── VideoManageServlet.java │ │ └── utils │ │ └── C3P0Util.java └── test │ └── D.java └── web ├── WEB-INF ├── classes │ └── c3p0-config.xml ├── lib │ ├── c3p0-0.9.5.5.jar │ ├── commons-beanutils-1.8.3.jar │ ├── commons-dbcp2-2.7.0.jar │ ├── commons-dbutils-1.7.jar │ ├── commons-logging-1.1.1.jar │ ├── commons-logging-1.2.jar │ ├── commons-pool2-2.8.0.jar │ ├── fastjson-1.2.76.jar │ ├── jstl.jar │ ├── lombok-1.18.18.jar │ ├── mchange-commons-java-0.2.19.jar │ ├── mysql-connector-java-8.0.11.jar │ └── standard.jar └── web.xml ├── admin ├── addVideo.jsp ├── index.jsp ├── updateUser.jsp ├── updateVideo.jsp ├── userManage.jsp ├── videoManage.jsp └── welcome.jsp ├── collection.jsp ├── css ├── bootstrap-theme.css ├── bootstrap-theme.css.map ├── bootstrap-theme.min.css ├── bootstrap-theme.min.css.map ├── bootstrap.css ├── bootstrap.css.map ├── bootstrap.min.css ├── bootstrap.min.css.map ├── bootstrasp.min.css ├── index.css └── pannel.css ├── footer.jsp ├── header.jsp ├── images ├── QR_Code.png ├── bg.jpg ├── code1.png ├── ipad.png ├── lb1.jpg ├── lb2.jpg ├── lb3.jpg ├── lb4.jpg ├── logo.png ├── mac.png ├── phone.png ├── play.png ├── search.png ├── tv.png ├── v1.jpg ├── v10.jpg ├── v2.jpg ├── v3.jpg ├── v4.jpg ├── v5.jpg ├── v6.jpg ├── v7.jpg ├── v8.jpg ├── v9.jpg └── win.png ├── index.jsp ├── js ├── alteruser.js ├── bootstrap.js ├── bootstrap.min.js ├── bootstrap │ └── bootstrap.js ├── collection.js ├── index.js ├── jquery-1.11.3.min.js ├── jquery-3.3.1.js ├── jquery │ ├── jquery.js │ └── popper.js ├── login.js ├── npm.js └── register.js ├── login.jsp ├── play.jsp ├── register.jsp ├── searchList.jsp └── userInfo.jsp /.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled class file 2 | *.class 3 | 4 | # Log file 5 | *.log 6 | 7 | # BlueJ files 8 | *.ctxt 9 | 10 | # Mobile Tools for Java (J2ME) 11 | .mtj.tmp/ 12 | 13 | # Package Files # 14 | *.jar 15 | *.war 16 | *.nar 17 | *.ear 18 | *.zip 19 | *.tar.gz 20 | *.rar 21 | 22 | # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml 23 | hs_err_pid* 24 | -------------------------------------------------------------------------------- /.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /shelf/ 3 | /workspace.xml 4 | # Datasource local storage ignored files 5 | /dataSources/ 6 | /dataSources.local.xml 7 | # Editor-based HTTP Client requests 8 | /httpRequests/ 9 | -------------------------------------------------------------------------------- /.idea/artifacts/dabaitv.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | $PROJECT_DIR$/out/artifacts/dabaitv 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.idea/libraries/lib.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.idea/runConfigurations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # dabaitv 2 | 3 | Java Web课程设计,基于servlet+jsp+ajax+mysql做的影视管理系统 4 | 5 | # 运行环境: 6 | 7 | Tomcat 9.0 JDK 1.8 MySQL 8.0 8 | 9 | 10 | 11 | 后台管理账号密码均为:root,项目依赖:lib 目录 12 | 13 | 14 | # 界面截图 15 |  16 |  17 | 18 |  19 | 20 | 21 | 22 | 23 | # E-R图 24 |  25 | -------------------------------------------------------------------------------- /dabaitv.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /dbtv.sql: -------------------------------------------------------------------------------- 1 | /* 2 | SQLyog Ultimate v12.09 (64 bit) 3 | MySQL - 8.0.26 : Database - dabaitv 4 | ********************************************************************* 5 | */ 6 | 7 | /*!40101 SET NAMES utf8 */; 8 | 9 | /*!40101 SET SQL_MODE=''*/; 10 | 11 | /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; 12 | /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; 13 | /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; 14 | /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; 15 | CREATE DATABASE /*!32312 IF NOT EXISTS*/`dabaitv` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */; 16 | 17 | USE `dabaitv`; 18 | 19 | /*Table structure for table `collections` */ 20 | 21 | DROP TABLE IF EXISTS `collections`; 22 | 23 | CREATE TABLE `collections` ( 24 | `cid` int NOT NULL AUTO_INCREMENT, 25 | `uid` int NOT NULL, 26 | `vid` int NOT NULL, 27 | `collectTime` datetime DEFAULT NULL, 28 | PRIMARY KEY (`cid`), 29 | UNIQUE KEY `uid_2` (`uid`,`vid`), 30 | KEY `uid` (`uid`), 31 | KEY `vid` (`vid`), 32 | CONSTRAINT `collections_ibfk_1` FOREIGN KEY (`uid`) REFERENCES `user` (`uid`) ON DELETE CASCADE ON UPDATE CASCADE, 33 | CONSTRAINT `collections_ibfk_2` FOREIGN KEY (`vid`) REFERENCES `video` (`vid`) ON DELETE CASCADE ON UPDATE CASCADE 34 | ) ENGINE=InnoDB AUTO_INCREMENT=31 DEFAULT CHARSET=utf8mb3 COLLATE=utf8_bin; 35 | 36 | /*Data for the table `collections` */ 37 | 38 | insert into `collections`(`cid`,`uid`,`vid`,`collectTime`) values (21,1,28,'2022-06-05 15:30:16'); 39 | 40 | /*Table structure for table `user` */ 41 | 42 | DROP TABLE IF EXISTS `user`; 43 | 44 | CREATE TABLE `user` ( 45 | `uid` int NOT NULL AUTO_INCREMENT, 46 | `uimg` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, 47 | `username` varchar(10) CHARACTER SET utf8 NOT NULL, 48 | `password` varchar(10) CHARACTER SET utf8 NOT NULL, 49 | `nickname` varchar(6) COLLATE utf8_bin DEFAULT NULL, 50 | `phone` char(11) CHARACTER SET utf8 NOT NULL, 51 | `isAdmin` tinyint(1) DEFAULT '0', 52 | PRIMARY KEY (`uid`), 53 | UNIQUE KEY `uni` (`username`) 54 | ) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8mb3 COLLATE=utf8_bin; 55 | 56 | /*Data for the table `user` */ 57 | 58 | insert into `user`(`uid`,`uimg`,`username`,`password`,`nickname`,`phone`,`isAdmin`) values (1,'/userImg/6dfba5d5-6467-46d4-92ef-814c156daddc-QQ图片20220419110305.jpg','admin','admin','管理员','13255565555',1); 59 | 60 | /*Table structure for table `video` */ 61 | 62 | DROP TABLE IF EXISTS `video`; 63 | 64 | CREATE TABLE `video` ( 65 | `vid` int NOT NULL AUTO_INCREMENT, 66 | `v_title` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, 67 | `v_img` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, 68 | `score` double DEFAULT '0', 69 | `classify` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL, 70 | `protagonist` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL, 71 | `description` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL, 72 | `v_url` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL, 73 | PRIMARY KEY (`vid`) 74 | ) ENGINE=InnoDB AUTO_INCREMENT=45 DEFAULT CHARSET=utf8mb3 COLLATE=utf8_bin; 75 | 76 | /*Data for the table `video` */ 77 | 78 | insert into `video`(`vid`,`v_title`,`v_img`,`score`,`classify`,`protagonist`,`description`,`v_url`) values (1,'特战荣耀','https://puui.qpic.cn/vcover_vt_pic/0/dt9oaxh094144711649149461225/260',7.8,'电视剧','杨洋 李一桐 孟阿赛 蒋龙 ','出生于军人家庭的燕破岳为了向父亲证明自己,在高考来临之际参军到了武警某支队。在新兵集训时,燕破岳训练成绩惊人,却不被中队长李祥看好,被分配到特战中队炊事班。炊事班中卧虎藏龙,燕破岳收敛心性投入工作。由于表现突出,燕破岳参加了武警特战队的选拔。为实现英雄梦,燕破岳一度注重自我、忽略集体。严酷的环境、艰巨的任务,让他认识到不足。在战友们的帮助下,他终于认识到团队的重要性和集体主义精神的真谛,理解了老中队长李祥的良苦用心,曾经的兵王继续磨砺自己。魂呼万里外,战死当如归!','https://v.qq.com/x/cover/dt9oaxh09414471.html'),(2,'雪中悍刀行','https://m.360buyimg.com/babel/jfs/t1/10038/12/16980/41734/628f7e76Ee902fcae/a12f81786f1b4692.jpg',8.5,'电视剧',' 张若昀 李庚希 胡军 高伟光 张天爱','为逃避做隋珠公主的驸马,“天下第一纨绔”的北椋世子徐凤年在父亲徐骁的安排下褪去锦衣华服,初进江湖,和马夫老黄苦中作乐,结识了众多江湖人士。三年游历归来,韬光养晦的徐凤年洗去浮尘,始终不想按照老爹铺好的人生轨道走,更不愿接手北椋,因为成为北椋王,就意味着要成为一个没有感情的孤家寡人。但当徐凤年雪中冠礼,得知一个个至亲离他而去,为他牺牲,经历人生的至暗时刻后,终于下定决心,要当一个和父亲完全不一样的北椋王,再难也不能妥协,遂苦学武艺,凭借赤子之心和勤学苦练,成为武者,而后率丫鬟姜泥、剑仙李淳罡等护卫,二进江湖,','https://m.360buyimg.com/babel/jfs/t1/10038/12/16980/41734/628f7e76Ee902fcae/a12f81786f1b4692.jpg'),(3,'穿越火线','https://puui.qpic.cn/vcover_vt_pic/0/mzc002009a3e8xj1598937871996/260',8.9,'电视剧','鹿晗 吴磊 宋妍霏 代露娃','2008年,落魄的电竞老将肖枫勉强维持着自己的战队。此时电竞还远没有迎来它最好的时代,肖枫的战队被误解、被嘲笑,却坚持着心中的梦想。2019年,游戏中的战斗天才,现实中的轮椅少年——路小北。他继承哥哥的遗志,发誓要成为电竞职业选手,在游戏中所向披靡,却因为一场意外失去了进入职业队的资格。在一次偶然中,路小北与肖枫在一张游戏地图中跨时空相遇。身处不同时空的两人从互相怀疑到彼此信任。他们各自组建战队,共同研究战术,帮助对方成长。梦想从未曾容易过,职业电竞选手之路更是不易,无数次重复枯燥的训练,一次次被命运打落谷','https://v.qq.com/x/cover/mzc002009a3e8xj.html'),(4,'青蛇情缘再起','https://puui.qpic.cn/vcover_vt_pic/0/mzc00200vef4lda1652267348963/260',7.6,'电视剧','牟子 陈添祥','水漫金山后,小青被法海封印,交由镇魂司看管。500年后,参与镇魂司选拨的李修宁误入小青封印之地,意外之下破坏封印,小青因此醒来。但却因为封印被强行破坏,导致小青损毁记忆。为了找回记忆,了解世界,小青跟随李修宁进入青云谷,重新开启一断新的人生旅程,却随着逐渐相识,发现了李修宁的另外一个身份,500年前的镇封往事也逐渐浮出水面,一场前世今生的虐恋就此开启………','https://v.qq.com/x/cover/mzc00200vef4lda.html'),(5,'梦华录','https://puui.qpic.cn/vcover_vt_pic/0/mzc00200p51jpn71653838845722/260',8.2,'电视剧','刘亦菲 陈晓 柳岩 林允','在钱塘开茶铺的赵盼儿惊闻未婚夫、新科探花欧阳旭要另娶当朝高官之女,不甘命运的她誓要上京讨个公道。在途中她遇到了出自权门但生性正直的皇城司指挥顾千帆,并卷入江南一场大案,两人不打不相识从而结缘。赵盼儿凭借智慧解救了被骗婚而惨遭虐待的“江南第一琵琶高手”宋引章与被苛刻家人逼得离家出走的豪爽厨娘孙三娘,三位姐妹从此结伴同行,终抵东京见识世间繁华。为了不被另攀高枝的欧阳旭从京城赶走,赵盼儿与宋引章、孙三娘一起历经艰辛,将小小茶坊一步步发展最大的酒楼,揭露了负心人的真面目,收获了各自的真挚感情和人生感悟,也为无数平凡','https://v.qq.com/x/cover/mzc00200p51jpn7.html'),(6,'七月的舞步','https://puui.qpic.cn/vcover_vt_pic/0/mzc00200qluxyw11638352511522/350',7.2,'电视剧','张予曦 黄小蕾 黄景行 姜超','七月毕业季,人生中最美好、最热烈的夏天,每个年轻人都抱着对未来的茫然尽情狂欢。热爱自由、特立独行的顾悠悠热爱街舞,在老妈的期许下学习着芭蕾舞,在每个人的青春时代,有彷徨也有热血,但都面临最终的选择,在男朋友毛雪山的鼓励下,顾悠悠决定跨出追寻梦想的那一步,拒绝了中央芭蕾舞团的邀请……亲情、爱情、梦想的激烈冲突,让毕业季的夏天热闹非凡。','https://v.qq.com/x/cover/mzc00200qluxyw1.html'),(7,'漫撕男·短剧','https://puui.qpic.cn/vcover_vt_pic/0/mzc002002wuoh5b1637563033340/350',8.2,'电视剧','陈泇文 黄恩昱 王嘉萌','漫画作者毛豆子反复删改漫画,导致画中大反派苏望崩溃来到现实世界“逼迫”作者给自己一个了结的故事,但两人却在相处中产生了感情,一起应对已经来到现实世界十年之久的漫画男主角江霖给两人造成的危机。','https://v.qq.com/x/cover/mzc002002wuoh5b.html'),(8,'撩动心弦·短剧','https://puui.qpic.cn/vcover_vt_pic/0/mzc00200rzjtws61637057949697/350',7.3,'电视剧','查祎琛 金浩鹏 高凯 林永炬 杜嘉娴','程云汐本是程国公府的嫡小姐,却因父母遭人陷害,家破人亡。机缘巧合之下,她成为了不生不死的“鬽”,蛰伏十年,踏雪归来。殊不知,在这步步惊心的路上,她的命运再一次与青梅竹马的程衍扬缠绕在了一起……','https://v.qq.com/x/cover/mzc00200rzjtws6.html'),(9,'北洋残案','https://puui.qpic.cn/vcover_vt_pic/0/mzc00200bu5eopx1636528493985/350',7.3,'电视剧','汪汐潮 邓郁立 赵浩闳 于夏茉 邵帅','主要讲述了民国那个时局动荡的时期遗留的数件民间残案,由一起“百尸占山”引发百年历史的秘密即将被揭开,破案过程更是突破以往常规。本片由不同故事组成,以单元性破案为主环环相扣,玄幻、冒险、悬疑,整体营造神秘而又紧张的故事气氛,剧情烧脑吸引人去一探究竟。','https://v.qq.com/x/cover/mzc00200bu5eopx.html'),(10,'庆余年','https://puui.qpic.cn/vcover_vt_pic/0/rjae621myqca41h1574838571/260',8.9,'电视剧','张若昀 李沁 陈道明 吴刚 李小冉','某大学文学史专业的学生张庆熟读古典名著,但他用现代观念剖析古代文学史的论文命题不被叶教授所认可。为了让叶教授成为自己的研究生导师,张庆决定通过写小说的方式,进一步阐述自己想要表达的观点。\r\n在他的小说中,身世神秘的少年——范闲,自小跟随奶奶生活在海边小城澹州,随着一位老师的突然造访,他看似平静的生活开始直面重重的危机与考验。在神秘老师和一位蒙眼守护者的指点下,范闲熟识药性药理,修炼霸道真气并精进武艺,而后接连化解了诸多危局。因对身世之谜的好奇,范闲离开澹州,前赴京都。\r\n在京都,范闲饱尝人间冷暖并坚守对正义','张若昀 李沁 陈道明 吴刚 李小冉 于荣光'),(11,'剑侠情缘之刀剑决','https://puui.qpic.cn/vcover_vt_pic/0/mzc00200919jzl91653617926571/260',7.5,'电影','刘尹昊 叶舒予 吴恒','故事围绕两个社会底层小人物展开,马天一为了向爱人石一枝证明自己能给她幸福,带着好兄弟小胖想要创业挣大钱,开始了一场环游世界之旅,不料从此踏上一段奇葩冒险的爆笑之旅。在大草原让牧民疯抢烂尾楼,闯荡非洲给索马里海盗培训致富经,误入美利坚拯救空心城市底特律……','https://v.qq.com/x/cover/mzc00200919jzl9.html'),(12,'熊出没·重返地球','https://puui.qpic.cn/vcover_vt_pic/0/mzc00200w20inn51642739095880/260',7.7,'电影','熊大 熊二 阿布','神秘的“外星人”阿布造访狗熊岭,结识熊二后得知阿布一族起源于地球,他们离开地球时在南极封存了大量遗迹宝藏,这引来了反派牛夫妇的觊觎,大伙掉入圈套。绝境中,熊二和大家一起打败反派,守卫阿布最后的家园。','https://v.qq.com/x/cover/mzc00200w20inn5.html'),(13,'哈利·波特与魔法石','https://puui.qpic.cn/vcover_vt_pic/0/pb69zpzabgg1t7n1566977168/260',9.3,'电影',' 丹尼尔·雷德克里夫 艾玛·沃特森','民国初年,燕南大学考古系教授的秦羽偶得藏龙墓线索,立即着手准备组建考古队伍,墨班机关术传人韩阳身手不凡,遂邀请其参加考古挖掘。为筹钱二叔治病,韩阳不顾二叔的劝阻,答应同行。与秦羽相熟的地方军阀李大勋得知此事,主动资助考古。秦羽带韩阳、女儿秦卿、学生杨沫、罗子钦和李大勋之女李冰瑶组队出发。不料,江湖传言葬龙墓有一至宝龙珠,韩羽一行被另外两个盗墓团伙跟踪。经过跋涉,秦羽凭借蛛丝马迹已经接近目的地,却发现了大量的蛇蜕……','https://v.qq.com/x/cover/pb69zpzabgg1t7n.html'),(14,'悟空之小圣传','//puui.qpic.cn/vcover_vt_pic/0/mzc00200m3kty971651541611880/350',7.9,'电影',' 王宁 王良 刘子晴 李世宏','千年前,齐天大圣在护送玄奘西天取经的路上,大败金翅大鹏。千年后,孙小圣继孙悟空之志惩恶扬善,和兄弟无名踏上杀妖除魔之路。然而千年恩怨羁绊,命运纠葛缠绕,好兄弟无名竟是天煞金小鹏,二人从生死搭档到刀剑相向,迎来因果循环的一战。','https://v.qq.com/x/cover/mzc00200m3kty97.html'),(15,'夜舍','//puui.qpic.cn/vcover_vt_pic/0/mzc002009x1f7dl1651288643640/350',7.9,'电影','丽贝卡·豪尔 萨拉·古德伯格','贝丝在先生欧文过世后,独自住在先生生前为她所建造的湖边小屋中,虽然她努力维持正常的生活,但噩梦仍朝她袭来,她感受到屋内似乎有一些不寻常的动静,而在朋友的建议下试图从先生的遗物中找寻答案,于是她决心解开这令人不安的秘密……','https://v.qq.com/x/cover/mzc002009x1f7dl.html'),(16,'大蛇王','//puui.qpic.cn/vcover_vt_pic/0/mzc00200ets769l1651224405366/350',7.7,'电影','罗立群 赵文琪 淳于珊珊','民国初年,村民刘风带领众人上山挖矿,不料惊醒了沉睡百年的大蛇,在逃亡的过程中,只有刘风活了下来;几天后,村里开始举办祭祀活动,并且邀请了江湖道士成州一同参与,意图剿杀蛇王,成州误打误撞杀了大蛇。可接下来村民依然遭受大蛇的袭击,不停的有人失踪,一场惊心动魄的人蛇大战拉开序幕……','https://v.qq.com/x/cover/mzc00200ets769l.html'),(17,'只要你过得比我好','https://puui.qpic.cn/vcover_vt_pic/0/mzc0020032j884x1638152572052/350',7.9,'电影','温峥嵘 张国强 陈创 李琳','周自横钟情于剧团演员杨白,慑于母亲威严,只好放弃,而杨白则通过荒唐的方式嫁给了夏博文,一年后生下女儿小白。遵从母意的周自横婚姻并不幸福,妻子爱慕虚荣,抛夫弃子远走海外,而周自横也因旧情难忘主动到五七干校当医生,因为能离杨白近一点。杨白与夏博文并无感情,婚后夫妻生活如同嚼蜡,时间长了,夏博文产生了严重的生理障碍,当女儿小白无意间发现妈妈与周叔叔偷情的场面,心中留下了严重阴影。时光荏冉,小白与周自横的儿子长大成人,青梅竹马的两人彼此有意,但小白时不时回忆起妈妈当年的不忠,在爸爸离世后,她终于爆发了,她要报复..','https://v.qq.com/x/cover/3io5obmn7vwpfeu.html'),(18,'东北传说之猎狐','https://puui.qpic.cn/vcover_vt_pic/0/mzc002009hd72mw1636105597670/350',7.4,'电影','何索 方品淇 赵亮 李大强 ','中国东北一直流传着很邪乎的“出马仙”。传说中,有“狐、黄、白、柳、灰”五大仙家。\r\n五仙有恩必赏,有仇必报,东北话说就是“护犊子”。所以五仙又被称为“保家仙”。出马仙是和仙家结缘的人,世代供奉,仙家和出马仙同生共死。\r\n五大保家仙中,又以狐家的胡三太奶为大,法力最强,最重情重义。一个山里漆黑的夜晚,出马仙在做法请仙,所有村民跪满一地瑟瑟发抖。原来,因为村长带人上山掘了狐家一直守护的祖坟,触怒了胡三太奶,狐仙展开了疯狂报复,全村人都得跟着陪葬!村里怪事频发,不断有人恐怖惨死。出去读书的进步青年马栋梁,刚回村就听说','https://v.qq.com/x/cover/mzc002009hd72mw.html'),(19,'二捕出山','https://puui.qpic.cn/vcover_vt_pic/0/mzc00200tz3zq5m1637551921833/350',7.3,'电影','陈冰 王宇 杜晓宇 王成思','丐帮出身的神青和王兔妞意外加入了六扇门,并卷入了生辰纲丢失一案,二个门外汉不费吹灰之力就破获了这一大案,却渐渐发现这背后隐藏着一个惊天阴谋……','https://v.qq.com/x/cover/mzc00200tz3zq5m.html'),(20,'名侦探柯南','https://puui.qpic.cn/vcover_vt_pic/0/mzc002001m5wxlo1617767537512/350',7.5,'电影','江户川柯南 毛利兰 毛利小五郎','著名的高中生侦探工藤新一收到了来自世界知名建筑家——森谷教授的请帖,森谷教授打算在自己的宅邸中举办一场晚会,他邀请工藤新一前来赴宴。江户川柯南、毛利兰和毛利小五郎代替新一应邀出席。与此同时,城市内发生了塑胶炸弹大量失窃的案件。那个自称犯人的男子打来预告电话,与江户川柯南展开了博弈。犯人再次打来电话,并说到:“工藤为什么没来!”随后,凶手连续发来炸弹预告。炸弹究竟被安装在了什么地方?城市内的人们陷入了恐慌。\r\n就在江户川柯南绞尽脑汁查找炸弹所在之处时,毛利兰前去百货商店购买要送给工藤新一的礼物。万万没想到,那','https://v.qq.com/x/cover/mzc00200og406y2.html'),(21,'天赐的声音 第3季','//puui.qpic.cn/vcover_vt_pic/0/mzc00200m7sxqzv1652956261462/220',8.5,'综艺','胡彦斌 张韶涵 胡海泉','《天赐的声音》第三季是浙江卫视推出的音乐励志节目,由浙江卫视节目中心制作。由陈欢担任声音推荐人,由胡彦斌、张韶涵、胡海泉、周深、GAI周延担任音乐合伙人,由梁龙、康姆士乐队、硬糖少女303-希林娜依高担任飞行合伙人,以声音凝聚力量,用音乐滋养心灵,共同寻找“天赐的声音”。','https://v.qq.com/x/cover/mzc00200e00yyhw/u0043w6eztv.html?n_version=2021'),(22,'闪光的乐队','https://puui.qpic.cn/vcover_vt_pic/0/mzc00200az0p6vv1647220614/220',8,'综艺','阿朵 符龙飞 胡宇桐 焦迈奇','《闪光的乐队》是浙江卫视推出的音乐社交乐队节目,节目中音乐人们组成音乐拍档,以乐队的表现形式来挑战改编经典歌曲,用音乐发声,用实力说话。','https://v.qq.com/x/cover/mzc00200az0p6vv/v0042xhtew7.html?n_version=2021'),(23,'导演请指教','//puui.qpic.cn/vcover_vt_pic/0/mzc00200c2ekotu1641639733541/220',7,'综艺',' 王晶 方励 陈祉希 郝蕾','由四位行业顶尖制片人,集结16位蓄势待发的导演,号召数十位演技精湛的实力演员,共同创作影视作品,直面真实行业生态。','https://v.qq.com/x/cover/mzc00200c2ekotu/s00410js61t.html?n_version=2021'),(24,'接招吧!前辈','//puui.qpic.cn/vcover_vt_pic/0/mzc00200px9rhvz1619167279868/220',8,'综艺','马嘉祺 丁程鑫 ','《接招吧!前辈》是东方卫视与联手打造的代际互动挑战综艺节目。由王祖蓝同辣目洋子分别担任教导主任和课外辅导员,时代少年团的马嘉祺、丁程鑫、宋亚轩、刘耀文、张真源、严浩翔、贺峻霖作为出招人。','https://v.qq.com/x/cover/mzc00200px9rhvz/l00363tuqh5.html?n_version=2021'),(25,'王牌对王牌 第3季','https://puui.qpic.cn/vcover_vt_pic/0/8uc2yffueif7n391525169035/220',9.2,'综艺','王源 沈腾 贾玲 欧阳娜娜 沈涛','《王牌对王牌》是浙江卫视推出的大型原创室内竞技真人秀节目,每期围绕一个主题,邀请两支王牌团队,由两队固定队长各带领多名热门IP嘉宾进行PK对战,通过才艺比拼、游戏竞技,决出王牌中的王牌。','https://v.qq.com/x/cover/8uc2yffueif7n39/x0026h40kvd.html?n_version=2021'),(26,'一往无前的蓝','//puui.qpic.cn/vcover_vt_pic/0/mzc00200s4m2kh01651753190271/220',9,'综艺','张翰 魏大勋 张彬彬','《一往无前的蓝》是一档热血向上的全景沉浸式消防体验真人秀。节目邀请6位充满正能量艺人嘉宾,作为“消防新生”前往当地的特色消防站点,与消防员们同吃同住同训练,解锁消防救援技能,真实出警,共同经历一段难忘的消防生活。通过嘉宾视角,带领观众走进一线消防实况与生活日常。在彰显使命感和责任感的同时,记录英雄光环下最可爱的平凡人,讲述温暖、有趣、动人的消防故事。','https://v.qq.com/x/cover/mzc00200s4m2kh0/q0042btrzqy.html?n_version=2021'),(27,'新游记','//puui.qpic.cn/vcover_vt_pic/0/mzc002007mpi58y1652961518140/220',8.2,'综艺','王彦霖 黄子韬 林更新 岳云鹏','《新游记》讲述了6个男青年一路西行,历经特定人群的生活痛点,经历各种“难”和“难”,最终在最真实的人世间,获取了在平凡生活“真经”的故事。','https://v.qq.com/x/cover/mzc00200kx0d4eh/w0043aeubvk.html?n_version=2021'),(28,'灿烂的前行','//puui.qpic.cn/vcover_vt_pic/0/mzc00200ckw8ok01653033455008/220',7.5,'综艺','郑恺 杨丞琳 乔欣 陈铭 钱庄','身处失恋困境的几人,在温暖的旅程中,治愈失恋情绪,蜕变成更好的自己。收拾心情,重新出发一起灿烂的前行吧!','https://v.qq.com/x/cover/mzc00200ipcvefx/b004256dvr1.html?n_version=2021'),(29,'毛雪汪','//puui.qpic.cn/vcover_vt_pic/0/mzc00200edex2ml1652429114705/220',8,'综艺',' 毛不易 李雪琴','《毛雪汪》是一档以原生朋友关系为切入点的场景化真人秀综艺节目。节目以友情为纽带,以“毛雪汪之家”为主要拍摄场景,讲述每周在这里相聚的毛不易、李雪琴和他们朋友之间真实有趣的故事,在嬉笑中撕开生活日常的现状,展现当下年轻人丰富的青春生活和精神世界,记录真实的成长。节目常年周更播出,为城市中努力打拼的年轻人带来陪伴和情绪上的健康疗愈。','https://v.qq.com/x/cover/mzc00200csiqkxs/q0042hz0eqt.html?n_version=2021'),(30,'脱口秀大会 第4季','https://puui.qpic.cn/vcover_vt_pic/0/mzc00200wh0dnn01634469658626/220',8.5,'综艺','李诞 大张伟','《脱口秀大会》第四季定位为一档原创棚内喜剧脱口秀竞演节目。来自各行各业的脱口秀选手根据每期节目话题,以不同的视角切入、用专业的喜剧创作能力进行高质量的内容输出,诠释“从行业走向生活”的价值主张;新老演员同台较量,争夺年度“脱口秀大王”桂冠。','https://v.qq.com/x/cover/mzc00200wh0dnn0/n004061vj9s.html?n_version=2021'),(31,'武神主宰','https://puui.qpic.cn/vcover_vt_pic/0/7q544xyrava3vxf1610952810187/350',8.4,'动漫','许子尧 唐泽宗 陈帅','主角秦尘本是武域中最顶尖的天才强者,却遭歹人暗算,陨落大陆禁地死亡峡谷。必死无疑的秦尘,却意外触发神秘古剑的力量……\r\n三百年后,天武大陆偏僻之地,一位同名少年意外继承了秦尘的意志。作为大齐国军神定武王的爱孙,却因生父来历成迷,母子二人在定武王府中受尽冷遇,相依为命。\r\n为了重写往日的强者神话,也为了守护自己所爱的一切,秦尘毅然决然扛起维护天下五国的大任,再度踏上武道之路。','https://v.qq.com/x/cover/7q544xyrava3vxf.html'),(32,'灵剑尊','https://puui.qpic.cn/vcover_vt_pic/0/2w2legt0g8z26al1617696629673/350',7.5,'动漫','楚行云 水流香','万众期待的武府选拔终于开始!比赛风波四起,天才云集,无数强者激烈鏖战,事故频发,而赛事后那场人为控制的兽潮,接踵而至的强者暗杀,都显示出了神秘而庞大的暗杀宗派——天演门。且看楚行云如何在这场波云诡谲的暗杀中,披荆斩棘,所向睥睨!','https://v.qq.com/x/cover/2w2legt0g8z26al.html'),(33,'神医九小姐','https://puui.qpic.cn/vcover_vt_pic/0/mzc00200scmerwj1636527499052/350',8.5,'动漫','赵爽 刘三木 音匣老鬼','改编自豆喵喵小说《邪帝缠宠:神医九小姐》,动画讲述了现代美艳神医圣手君九在一次丹药拍卖中意外坠亡,穿越到了一个古代废材九小姐的身上。这个九小姐本是皇城两大世家之一的君家嫡女,因为父母双亡而被本家下放到风罗城的君家分家,且生前在风罗君家受尽屈辱,被逼而亡。君九继承了九小姐全部的记忆,发誓要一血前耻。无奈这位九小姐是个无法灵气入体的废柴,在这个崇尚武力的修仙世界里,穿越后的她先是通过自己惊世骇俗的医术为自己洗筋伐髓、提升修炼天赋,后又广结善缘、小心铺路。且看君九如何手刃仇人、血洗风罗分家,开始她一代天之娇女的传','https://v.qq.com/x/cover/mzc00200scmerwj.html'),(34,'我的微信连三界','https://puui.qpic.cn/vcover_vt_pic/0/mzc00200qzqjg491624347732487/350',9.3,'动漫','林海','普通大学生林海更新微信后,被拉入天庭交易群,这是什么奇怪的微信群?里面有孙悟空猪八戒,还有嫦娥和玉皇大帝?不会都是骗子吧?但是林海想不到的是,他们居然可以交易各种神丹妙药,让原本平凡低调的林海,摇身一变成为了实力高强的救世主!从此他的人生变得多姿多彩,正义善良的他,也为城市的安宁献出自己的力量!','https://v.qq.com/x/cover/mzc00200ct2r0hp.html'),(35,'武庚纪','https://puui.qpic.cn/vcover_vt_pic/0/ipmc5u3dwb48mv21625718491066/350',8.5,'动漫','武庚 白菜','《武庚纪》系列动画由玄机科技与企鹅影视联合出品。第四季剧情延续了前三季的故事主线,同盟大军攻入神域结晶山,直面苏醒的神族之主“天”,各族善战的勇士轮番与天交手。在“天”强大的压迫感下,逆天而行回忆起先辈无数次失败的反抗战争,以及永恒之夜曾预言,他这次与神族交战的结果不再是必败,而是难料,因为这一次,同盟军中有一位特别的“命运之子”,他就是武庚。','https://v.qq.com/x/cover/ipmc5u3dwb48mv2.html'),(36,'独步逍遥','https://puui.qpic.cn/vcover_vt_pic/0/mzc00200qqsk3cv1590046238923/350',7.9,'动漫','叶宇 雪言','宇宙浩瀚,产生无数的类型的生命体,这些生命体,形成万族万灵。万族万灵尽管种族不同,信仰不同,但一样的就是奢望得道。\r\n任何一个生灵都是道心蒙尘,他们不甘如此,以修行来悟道而变得强大,甚至永生。天地大道如同气运,有能者居之。大道之路,就是争道之路,这就造成了万族万灵的相争。\r\n一个时代,只能支撑少数一些人得道。得道者,以为站在了世间之巅,以后可以恣意逍遥。但却发现,即使得道。同样难逃厄运,在他们之上有着主宰,收割着一个又一个的时代,收割者天下修行者为了维持他们野心。万族万灵,不过是被这些主宰豢养而已。\r\n这些主宰,','https://v.qq.com/x/cover/mzc00200qqsk3cv.html'),(37,'斗罗大陆','https://puui.qpic.cn/vcover_vt_pic/0/m441e3rjq9kwpsc1635739384893/260',7.5,'动漫','戴沐白 宁荣荣 马红俊','唐门外门弟子唐三,因偷学内门绝学为唐门所不容,跳崖明志时却发现没有死,反而以另外一个身份来到了另一个世界,一个属于武魂的世界,名叫斗罗大陆。这里没有魔法,没有斗气,没有武术,却有神奇的武魂。这里的每个人,在自己六岁的时候,都会在武魂殿中令武魂觉醒。武魂有动物,有植物,有器物,武魂可以辅助人们的日常生活。而其中一些特别出色的武魂却可以用来修炼并进行战斗,这个职业,是斗罗大陆上最为强大也是最荣耀的职业“魂师”。\r\n小小的唐三在圣魂村开始了他的魂师修炼之路,并萌生了振兴唐门的梦想。当唐门暗器来到斗罗大陆,当唐三武魂','https://v.qq.com/x/cover/m441e3rjq9kwpsc.html'),(38,'完美世界','//puui.qpic.cn/vcover_vt_pic/0/mcv8hkc8zk8lnov1649240921988/350',7.8,'动漫','石昊','《完美世界》动画改编自同名小说。他为修道而生,为应劫而至,他身化亿万血雨,洒落万古岁月,经历无数时空的熬炼,岁月长河的洗礼,他化万古,他化自在。看男主石昊如何一生极致辉煌,造就无尽传说。','https://v.qq.com/x/cover/mcv8hkc8zk8lnov.html'),(39,'七界第一仙','//puui.qpic.cn/vcover_vt_pic/0/mzc00200qxw3l4s1624434321362/350',8,'动漫','梁夕','算命为生的梁夕因一时善心救下仙人宇文青阳,被仙人传授万年真力和翻天印,从此踏上了修真之路。在宇文青阳的指示下,梁夕前往天灵门拜师学艺。而路途中,梁夕遇到了莫名亲切而一起同行的小白狐。\r\n以天灵门作为修行起点的梁夕结识了朋友与师尊,又阴差阳错从妖兽身上获得了神秘兵器坎水刃。坎水刃乃是云麓仙居开山祖师的法宝武器,他们要求梁夕归还,但如果梁夕能让龙息淬炼坎水刃的话他们就不予追究,否则就要天灵门付出代价。看出云麓仙居是借故找茬的梁夕决心前往东海寻找龙族,却因为意外吸入龙族血液,成为了天地间第一位龙族外戚。在向龙神说明','https://v.qq.com/x/cover/mzc00200qxw3l4s.html'),(40,'无上神帝','//puui.qpic.cn/vcover_vt_pic/0/mzc00200ilydv1a1620815950817/350',8.5,'动漫','牧云 秦梦瑶','万年之前,仙王牧云因持有诛仙图而遭人暗算,残魂沉睡万年之后,在天运大陆南云帝国有名的“废物牧云”身上觉醒。牧云初醒,就受到了学生妙仙语的刻意刁难,牧云轻松的就化解了妙仙语的陷阱,并举一反三的说出了更多的炼丹技巧,让门外的炼丹大师莫问赏识不已。回到家中,牧云得知了要与秦家小姐秦梦瑶结亲的消息。秦梦瑶寒毒在身,活不过二十岁,结亲不过是为了牧家和秦家的利益。但牧林辰的劝说下,牧云以炼丹为条件,答应了这门亲事。炼出了淬骨丹,牧云的修为有了第一次提升。莫问时常来找牧云请教,而秦时雨一直想请莫问来治疗孙女秦梦瑶。莫问暗','https://v.qq.com/x/cover/mzc00200ilydv1a.html'); 79 | 80 | /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; 81 | /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; 82 | /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; 83 | /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; 84 | -------------------------------------------------------------------------------- /src/com/itz/dao/CollectionDao.java: -------------------------------------------------------------------------------- 1 | package com.itz.dao; 2 | 3 | import java.sql.SQLException; 4 | import java.util.List; 5 | import java.util.Map; 6 | 7 | public interface CollectionDao { 8 | List> queryAll(String uid) throws SQLException; 9 | 10 | boolean addeCollection(String uid,String vid) throws SQLException; 11 | 12 | boolean deleteCollection(String vid) throws SQLException; 13 | 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/com/itz/dao/UserDao.java: -------------------------------------------------------------------------------- 1 | package com.itz.dao; 2 | 3 | import com.itz.entity.User; 4 | 5 | import java.sql.SQLException; 6 | import java.util.List; 7 | 8 | public interface UserDao { 9 | User findUser(String username) throws SQLException; 10 | boolean queryPhone(String username) throws SQLException; //验证手机号是否被绑定 11 | boolean addUser(User user) throws SQLException; 12 | boolean delUser(String username) throws SQLException; 13 | boolean resetPassowrd(String username) throws SQLException; 14 | User loginCheck(User user) throws SQLException; 15 | boolean alterUser(User user) throws SQLException; 16 | boolean deleteUser(String uid) throws SQLException; 17 | 18 | List queryByPage(int currentPage,int pageSize) throws SQLException; 19 | long getTotalCount() throws SQLException; 20 | 21 | boolean updateUser(Object[] params) throws SQLException; 22 | } 23 | -------------------------------------------------------------------------------- /src/com/itz/dao/VideoDao.java: -------------------------------------------------------------------------------- 1 | package com.itz.dao; 2 | 3 | import com.itz.entity.Video; 4 | 5 | import java.sql.SQLException; 6 | import java.util.List; 7 | 8 | public interface VideoDao { 9 | List searchVideo(String v_title) throws SQLException; 10 | List findAllVideo() throws SQLException; 11 | Video findByID(String vid) throws SQLException; 12 | boolean addVideo(Video video) throws SQLException; 13 | boolean delVideo(String v_tittle) throws SQLException; 14 | boolean updateVideo(Video video) throws SQLException; 15 | public List queryByPage(int currentPage,int pageSize,Video v) throws SQLException; 16 | } 17 | -------------------------------------------------------------------------------- /src/com/itz/dao/impl/CollectionDaoImpl.java: -------------------------------------------------------------------------------- 1 | package com.itz.dao.impl; 2 | 3 | import com.itz.dao.CollectionDao; 4 | import com.itz.entity.CollectList; 5 | import com.itz.utils.C3P0Util; 6 | import org.apache.commons.dbutils.QueryRunner; 7 | import org.apache.commons.dbutils.handlers.BeanHandler; 8 | import org.apache.commons.dbutils.handlers.MapListHandler; 9 | 10 | import java.sql.SQLException; 11 | import java.text.SimpleDateFormat; 12 | import java.util.ArrayList; 13 | import java.util.Date; 14 | import java.util.List; 15 | import java.util.Map; 16 | 17 | public class CollectionDaoImpl implements CollectionDao { 18 | private QueryRunner qr = C3P0Util.getQueryRunner(); 19 | 20 | @Override 21 | public List> queryAll(String uid) throws SQLException { 22 | List> collectionList = new ArrayList<>(); 23 | 24 | String sql="select v.vid,v_title,classify,score,collectTime from collections as c,user as u,video as v where c.vid=v.vid and c.uid=u.uid and u.uid=?"; 25 | collectionList = qr.query(sql, new MapListHandler(), uid); 26 | return collectionList; 27 | } 28 | 29 | @Override 30 | public boolean addeCollection(String uid, String vid) throws SQLException { 31 | String collect="select * from collections where uid=? and vid=?"; 32 | Object[] info={uid,vid}; 33 | CollectList queryed = qr.query(collect, new BeanHandler(CollectList.class), info); 34 | if(queryed==null){ 35 | String sql ="insert into collections values(?,?,?,?)"; 36 | Date date = new Date(); 37 | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 38 | String collectTime = sdf.format(date); 39 | Object[] params={null,Integer.parseInt(uid),Integer.parseInt(vid),collectTime}; 40 | int n = qr.update(sql, params); 41 | if(n>0) 42 | return true; 43 | else 44 | return false; 45 | }else 46 | return false; 47 | } 48 | 49 | @Override 50 | public boolean deleteCollection(String vid) throws SQLException { 51 | boolean b=false; 52 | String sql ="delete from collections where vid=?"; 53 | int n = qr.update(sql,vid); 54 | if(n>0) 55 | return true; 56 | else 57 | return false; 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /src/com/itz/dao/impl/UserDaoImpl.java: -------------------------------------------------------------------------------- 1 | package com.itz.dao.impl; 2 | 3 | import com.itz.dao.UserDao; 4 | import com.itz.entity.User; 5 | import com.itz.utils.C3P0Util; 6 | import org.apache.commons.dbutils.QueryRunner; 7 | import org.apache.commons.dbutils.handlers.BeanHandler; 8 | import org.apache.commons.dbutils.handlers.BeanListHandler; 9 | import org.apache.commons.dbutils.handlers.ScalarHandler; 10 | 11 | import java.sql.SQLException; 12 | import java.util.List; 13 | 14 | public class UserDaoImpl implements UserDao { 15 | QueryRunner qr = C3P0Util.getQueryRunner(); 16 | @Override 17 | public User findUser(String username) throws SQLException { 18 | boolean b; 19 | User user = new User(); 20 | String sql="select * from user where username=?"; 21 | user=qr.query(sql,new BeanHandler(User.class),username); 22 | return user; 23 | } 24 | 25 | @Override 26 | public boolean queryPhone(String phone) throws SQLException { 27 | String sql="select * from user where phone=?"; 28 | User user = qr.query(sql, new BeanHandler(User.class), phone); 29 | if(user!=null) 30 | return false; 31 | else 32 | return true; 33 | } 34 | 35 | @Override 36 | public boolean addUser(User user) throws SQLException { 37 | boolean b; 38 | String sql="insert into user values(?,?,?,?,?,?,?)"; 39 | Object[] params = {user.getUid(),user.getUimg(),user.getUsername(),user.getPassword(),user.getNickname(),user.getPhone(),user.isAdmin()}; 40 | int num= qr.update(sql, params); 41 | if(num>0) 42 | return true; 43 | else 44 | return false; 45 | } 46 | 47 | @Override 48 | public boolean delUser(String username) throws SQLException { 49 | boolean b; 50 | String sql="delete from user where username=?"; 51 | int num=qr.update(sql,username); 52 | if(num>0) 53 | return true; 54 | else 55 | return false; 56 | } 57 | 58 | @Override 59 | public boolean resetPassowrd(String username) throws SQLException { 60 | String sql= "update user set password=123456 where username=?"; 61 | int n = qr.update(sql, username); 62 | if(n>0) 63 | return true; 64 | return false; 65 | } 66 | 67 | 68 | @Override 69 | public User loginCheck(User user) throws SQLException { 70 | String username=user.getUsername(); 71 | String password=user.getPassword(); 72 | Object[] params={username,password}; 73 | String sql="select * from user where username=? and password=?"; 74 | User u= new User(); 75 | u=qr.query(sql,new BeanHandler(User.class),params); 76 | return u; 77 | } 78 | 79 | @Override 80 | public boolean alterUser(User user) throws SQLException { 81 | String sql="update user set uimg=?,password=?,nickname=?,phone=? where uid=?"; 82 | Object[] params={user.getUimg(),user.getPassword(),user.getNickname(),user.getPhone(),user.getUid()}; 83 | int n = qr.update(sql, params); 84 | if(n>0) 85 | return true; 86 | else 87 | return false; 88 | } 89 | 90 | @Override 91 | public boolean deleteUser(String uid) throws SQLException{ 92 | String sql ="delete from user where uid=?"; 93 | int n= qr.update(sql,uid); 94 | if(n>0) 95 | return true; 96 | else 97 | return false; 98 | } 99 | 100 | @Override 101 | public List queryByPage(int currentPage,int pageSize) throws SQLException { 102 | //拼写分页的查询语句 103 | String sql = "select * from user limit ?,?"; 104 | //执行查询 105 | List list = qr.query(sql,new BeanListHandler(User.class),currentPage,pageSize); 106 | return list; 107 | } 108 | 109 | // 查询获取权限表的所有数据,聚合函数count 110 | @Override 111 | public long getTotalCount() throws SQLException { 112 | String sql = "select count(uid) from user"; 113 | //执行查询,结果是单值,使用scalarHandler 114 | return qr.query(sql,new ScalarHandler()); 115 | } 116 | 117 | @Override 118 | public boolean updateUser(Object[] params) throws SQLException { 119 | String sql="update user set nickname=?, username=?, phone=?, uimg=? where uid=?"; 120 | int n = qr.update(sql, params); 121 | if(n>0) 122 | return true; 123 | else 124 | return false; 125 | } 126 | } 127 | -------------------------------------------------------------------------------- /src/com/itz/dao/impl/VideoDaoImpl.java: -------------------------------------------------------------------------------- 1 | package com.itz.dao.impl; 2 | 3 | import com.itz.dao.VideoDao; 4 | import com.itz.entity.Video; 5 | import com.itz.utils.C3P0Util; 6 | import org.apache.commons.dbutils.QueryRunner; 7 | import org.apache.commons.dbutils.handlers.BeanHandler; 8 | import org.apache.commons.dbutils.handlers.BeanListHandler; 9 | 10 | import java.sql.SQLException; 11 | import java.util.ArrayList; 12 | import java.util.List; 13 | 14 | public class VideoDaoImpl implements VideoDao { 15 | QueryRunner qr = C3P0Util.getQueryRunner(); 16 | public static List countList = new ArrayList<>(); 17 | @Override 18 | public List searchVideo(String v_title) throws SQLException { 19 | String sql="select * from video where v_title like '"+ "%"+v_title+"%'"; 20 | List searchList = qr.query(sql, new BeanListHandler(Video.class)); 21 | return searchList; 22 | } 23 | 24 | @Override 25 | public List findAllVideo() throws SQLException { 26 | List videoList = new ArrayList<>(); 27 | String sql ="select * from video"; 28 | videoList = qr.query(sql,new BeanListHandler(Video.class)); 29 | return videoList; 30 | } 31 | 32 | @Override 33 | public Video findByID(String vid) throws SQLException { 34 | String sql="select * from video where vid=?"; 35 | Video video = qr.query(sql, new BeanHandler(Video.class), vid); 36 | return video; 37 | } 38 | 39 | @Override 40 | public boolean addVideo(Video video) throws SQLException { 41 | String sql = "insert into video values(?,?,?,?,?,?,?,?)"; 42 | Object[] params={null,video.getV_title(),video.getV_img(),video.getScore(),video.getClassify(),video.getProtagonist(),video.getDescription(),video.getV_url()}; 43 | int num = qr.update(sql,params); 44 | if(num>0) 45 | return true; 46 | else 47 | return false; 48 | } 49 | 50 | @Override 51 | public boolean delVideo(String vid) throws SQLException { 52 | String sql="delete from video where vid=?"; 53 | int num = qr.update(sql, vid); 54 | if(num>0) 55 | return true; 56 | else 57 | return false; 58 | } 59 | 60 | @Override 61 | public boolean updateVideo(Video video) throws SQLException { 62 | String sql="update video set v_title=?, v_img=?, score=?, classify=?, protagonist=?, description=?, v_url=? where vid=? "; 63 | Object[] params={video.getV_title(),video.getV_img(),video.getScore(),video.getClassify(),video.getProtagonist(),video.getDescription(),video.getV_url(),video.getVid()}; 64 | int num = qr.update(sql, params); 65 | if(num>0) 66 | return true; 67 | else 68 | return false; 69 | } 70 | 71 | public List queryByPage(int currentPage,int pageSize,Video v) throws SQLException { 72 | List paramslist = new ArrayList<>(); 73 | List s2 = null; 74 | int vid = v.getVid(); 75 | String v_title = v.getV_title(); 76 | String classify = v.getClassify(); 77 | String sql = "select * from video where 1=1"; 78 | 79 | if(vid != 0) { 80 | sql += " and vid=?"; 81 | paramslist.add(vid); 82 | } 83 | if(v_title != null && v_title.trim().length()>0){ 84 | sql += " and v_title like '"+ "%"+v_title+"%'"; 85 | 86 | } 87 | if(classify != null && classify.trim().length()>0){ 88 | sql += " and classify= ?"; 89 | paramslist.add(classify); 90 | } 91 | Object[] params1 = paramslist.toArray(); 92 | countList = qr.query(sql,new BeanListHandler(Video.class),params1); 93 | 94 | sql+=" limit ?,?"; 95 | 96 | paramslist.add(currentPage); 97 | paramslist.add(pageSize); 98 | Object[] params = paramslist.toArray(); 99 | 100 | List list = qr.query(sql,new BeanListHandler(Video.class),params); 101 | return list; 102 | } 103 | 104 | } 105 | -------------------------------------------------------------------------------- /src/com/itz/entity/CollectList.java: -------------------------------------------------------------------------------- 1 | package com.itz.entity; 2 | 3 | public class CollectList { 4 | private UserCollections userCollections; 5 | private User user; 6 | private Video video; 7 | 8 | public CollectList() { 9 | } 10 | 11 | public CollectList(UserCollections userCollections, User user, Video video) { 12 | this.userCollections = userCollections; 13 | this.user = user; 14 | this.video = video; 15 | } 16 | 17 | public UserCollections getUserCollections() { 18 | return userCollections; 19 | } 20 | 21 | public void setUserCollections(UserCollections userCollections) { 22 | this.userCollections = userCollections; 23 | } 24 | 25 | public User getUser() { 26 | return user; 27 | } 28 | 29 | public void setUser(User user) { 30 | this.user = user; 31 | } 32 | 33 | public Video getVideo() { 34 | return video; 35 | } 36 | 37 | public void setVideo(Video video) { 38 | this.video = video; 39 | } 40 | 41 | @Override 42 | public String toString() { 43 | return "CollectList{" + 44 | "userCollections=" + userCollections + 45 | ", user=" + user + 46 | ", video=" + video + 47 | '}'; 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /src/com/itz/entity/PageBean.java: -------------------------------------------------------------------------------- 1 | package com.itz.entity; 2 | 3 | import java.util.List; 4 | 5 | /** 6 | * 自定义的存储分页数据的对象 定义出5个数据 7 | * private List list; 只能对权限数据进行分页 8 | * 需要你可以对任何数据都能分页, 用户,商品.. 9 | * 使用泛型技术 10 | * 11 | * new PageBean 12 | */ 13 | public class PageBean { 14 | //定义当前的页数 15 | private int currentPage; 16 | 17 | //定义共有多少页 18 | private int totalPage; 19 | 20 | //定义共有多少条数据 21 | private long totalCount; 22 | 23 | //定义每页显示多少条数据 24 | private int pageSize; 25 | 26 | //定义List集合,存储要展示数据 27 | private List list; 28 | 29 | public int getCurrentPage() { 30 | return currentPage; 31 | } 32 | 33 | public void setCurrentPage(int currentPage) { 34 | this.currentPage = currentPage; 35 | } 36 | 37 | public int getTotalPage() { 38 | return totalPage; 39 | } 40 | 41 | public void setTotalPage(int totalPage) { 42 | this.totalPage = totalPage; 43 | } 44 | 45 | public long getTotalCount() { 46 | return totalCount; 47 | } 48 | 49 | public void setTotalCount(long totalCount) { 50 | this.totalCount = totalCount; 51 | } 52 | 53 | public int getPageSize() { 54 | return pageSize; 55 | } 56 | 57 | public void setPageSize(int pageSize) { 58 | this.pageSize = pageSize; 59 | } 60 | 61 | public List getList() { 62 | return list; 63 | } 64 | 65 | public void setList(List list) { 66 | this.list = list; 67 | } 68 | 69 | @Override 70 | public String toString() { 71 | return "PageBean{" + 72 | "currentPage=" + currentPage + 73 | ", totalPage=" + totalPage + 74 | ", totalCount=" + totalCount + 75 | ", pageSize=" + pageSize + 76 | ", list=" + list + 77 | '}'; 78 | } 79 | } 80 | -------------------------------------------------------------------------------- /src/com/itz/entity/User.java: -------------------------------------------------------------------------------- 1 | package com.itz.entity; 2 | 3 | import lombok.Data; 4 | import java.util.ArrayList; 5 | 6 | @Data 7 | public class User{ 8 | private int uid; 9 | private String uimg; 10 | private String username; 11 | private String password; 12 | private String nickname; 13 | private String phone; 14 | private boolean isAdmin; 15 | private ArrayList collectionList; 16 | 17 | public User() { 18 | } 19 | 20 | public User(String username, String password) { 21 | this.username = username; 22 | this.password = password; 23 | } 24 | 25 | @Override 26 | public String toString() { 27 | return "User{" + 28 | "uid='" + uid + '\'' + 29 | ", uimg='" + uimg + '\'' + 30 | ", username='" + username + '\'' + 31 | ", password='" + password + '\'' + 32 | ", nickname='" + nickname + '\'' + 33 | ", phone='" + phone + '\'' + 34 | '}'; 35 | } 36 | 37 | public User(String uimg, String username, String password, String nickname, String phone) { 38 | this.uimg = uimg; 39 | this.username = username; 40 | this.password = password; 41 | this.nickname = nickname; 42 | this.phone = phone; 43 | } 44 | 45 | public int getUid() { 46 | return uid; 47 | } 48 | 49 | public void setUid(int uid) { 50 | this.uid = uid; 51 | } 52 | 53 | public String getUimg() { 54 | return uimg; 55 | } 56 | 57 | public void setUimg(String uimg) { 58 | this.uimg = uimg; 59 | } 60 | 61 | public String getUsername() { 62 | return username; 63 | } 64 | 65 | public void setUsername(String username) { 66 | this.username = username; 67 | } 68 | 69 | public String getPassword() { 70 | return password; 71 | } 72 | 73 | public void setPassword(String password) { 74 | this.password = password; 75 | } 76 | 77 | public String getNickname() { 78 | return nickname; 79 | } 80 | 81 | public void setNickname(String nickname) { 82 | this.nickname = nickname; 83 | } 84 | 85 | public String getPhone() { 86 | return phone; 87 | } 88 | 89 | public void setPhone(String phone) { 90 | this.phone = phone; 91 | } 92 | 93 | public boolean isAdmin() { 94 | return isAdmin; 95 | } 96 | 97 | public void setAdmin(boolean admin) { 98 | isAdmin = admin; 99 | } 100 | 101 | } 102 | -------------------------------------------------------------------------------- /src/com/itz/entity/UserCollections.java: -------------------------------------------------------------------------------- 1 | package com.itz.entity; 2 | 3 | import java.util.Date; 4 | 5 | public class UserCollections { 6 | private int cid; 7 | private int uid; 8 | private int vid; 9 | private Date collectTime; 10 | 11 | public UserCollections() { 12 | } 13 | 14 | public UserCollections(int cid, int uid, int vid, Date collectTime) { 15 | this.cid = cid; 16 | this.uid = uid; 17 | this.vid = vid; 18 | this.collectTime = collectTime; 19 | } 20 | 21 | @Override 22 | public String toString() { 23 | return "UserCollections{" + 24 | "cid=" + cid + 25 | ", uid=" + uid + 26 | ", vid=" + vid + 27 | ", collectTime=" + collectTime + 28 | '}'; 29 | } 30 | 31 | public int getCid() { 32 | return cid; 33 | } 34 | 35 | public void setCid(int cid) { 36 | this.cid = cid; 37 | } 38 | 39 | public int getUid() { 40 | return uid; 41 | } 42 | 43 | public void setUid(int uid) { 44 | this.uid = uid; 45 | } 46 | 47 | public int getVid() { 48 | return vid; 49 | } 50 | 51 | public void setVid(int vid) { 52 | this.vid = vid; 53 | } 54 | 55 | public Date getCollectTime() { 56 | return collectTime; 57 | } 58 | 59 | public void setCollectTime(Date collectTime) { 60 | this.collectTime = collectTime; 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /src/com/itz/entity/Video.java: -------------------------------------------------------------------------------- 1 | package com.itz.entity; 2 | 3 | public class Video { 4 | private int vid; 5 | private String v_title; //标题 6 | private String v_img; //封面 7 | private Double score; //评分 8 | private String classify; //类别 9 | private String protagonist;//主演 10 | private String description;//视频简介 11 | private String v_url; //播放链接 12 | 13 | 14 | public Video() { 15 | } 16 | 17 | public Video(int vid, String v_title, String v_img, Double score, String classify, String protagonist, String description, String v_url) { 18 | this.vid = vid; 19 | this.v_title = v_title; 20 | this.v_img = v_img; 21 | this.score = score; 22 | this.classify = classify; 23 | this.protagonist = protagonist; 24 | this.description = description; 25 | this.v_url = v_url; 26 | } 27 | 28 | public Video(String v_title, String v_img, Double score, String classify, String protagonist, String description, String v_url) { 29 | this.v_title = v_title; 30 | this.v_img = v_img; 31 | this.score = score; 32 | this.classify = classify; 33 | this.protagonist = protagonist; 34 | this.description = description; 35 | this.v_url = v_url; 36 | } 37 | 38 | public int getVid() { 39 | return vid; 40 | } 41 | 42 | public void setVid(int vid) { 43 | this.vid = vid; 44 | } 45 | 46 | public String getV_title() { 47 | return v_title; 48 | } 49 | 50 | public void setV_title(String v_title) { 51 | this.v_title = v_title; 52 | } 53 | 54 | public String getV_img() { 55 | return v_img; 56 | } 57 | 58 | public void setV_img(String v_img) { 59 | this.v_img = v_img; 60 | } 61 | 62 | public Double getScore() { 63 | return score; 64 | } 65 | 66 | public void setScore(Double score) { 67 | this.score = score; 68 | } 69 | 70 | public String getClassify() { 71 | return classify; 72 | } 73 | 74 | public void setClassify(String classify) { 75 | this.classify = classify; 76 | } 77 | 78 | public String getProtagonist() { 79 | return protagonist; 80 | } 81 | 82 | public void setProtagonist(String protagonist) { 83 | this.protagonist = protagonist; 84 | } 85 | 86 | public String getDescription() { 87 | return description; 88 | } 89 | 90 | public void setDescription(String description) { 91 | this.description = description; 92 | } 93 | 94 | public String getV_url() { 95 | return v_url; 96 | } 97 | 98 | public void setV_url(String v_url) { 99 | this.v_url = v_url; 100 | } 101 | 102 | @Override 103 | public String toString() { 104 | return "Video{" + 105 | "vid='" + vid + '\'' + 106 | ", v_title='" + v_title + '\'' + 107 | ", v_img='" + v_img + '\'' + 108 | ", score=" + score + 109 | ", classify='" + classify + '\'' + 110 | ", protagonist='" + protagonist + '\'' + 111 | ", description='" + description + '\'' + 112 | ", v_url='" + v_url + '\'' + 113 | '}'; 114 | } 115 | } 116 | -------------------------------------------------------------------------------- /src/com/itz/filter/AdminFilter.java: -------------------------------------------------------------------------------- 1 | package com.itz.filter; 2 | 3 | import com.itz.entity.User; 4 | import com.itz.service.UserService; 5 | 6 | import javax.servlet.*; 7 | import javax.servlet.annotation.WebFilter; 8 | import javax.servlet.http.Cookie; 9 | import javax.servlet.http.HttpServletRequest; 10 | import javax.servlet.http.HttpServletResponse; 11 | import javax.servlet.http.HttpSession; 12 | import java.io.IOException; 13 | 14 | @WebFilter(filterName = "AdminFilter",urlPatterns = "/admin") 15 | public class AdminFilter implements Filter { 16 | UserService service = new UserService(); 17 | public void init(FilterConfig config) throws ServletException { 18 | } 19 | 20 | public void destroy() { 21 | } 22 | 23 | @Override 24 | public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException { 25 | HttpServletRequest req = (HttpServletRequest) request; 26 | HttpServletResponse resp = (HttpServletResponse) response; 27 | HttpSession session = req.getSession(); 28 | 29 | // 1. 获取浏览器携带的cookie 30 | Cookie[] cookies = req.getCookies(); 31 | String value = null; 32 | if(cookies != null) { 33 | for (Cookie cookie : cookies) { 34 | String name = cookie.getName(); 35 | if ("loginInfo".equals(name)) { 36 | value = cookie.getValue(); // username:password 37 | break; 38 | } 39 | } 40 | //自动登录ck 41 | if (value != null) {// 获取用户名和密码:username-password 42 | String[] parts = value.split(":"); // username,password 43 | String username = parts[0]; 44 | String password = parts[1]; 45 | // 验证 46 | if (username.equals("admin")) { 47 | User user = new User(username, password); 48 | User loginUser = new User(); 49 | loginUser = service.loginCheck(user); // 业务层返回给web层 50 | if (loginUser != null) 51 | chain.doFilter(request, response); 52 | return; 53 | } 54 | } 55 | resp.sendRedirect("login.jsp"); 56 | } 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /src/com/itz/filter/CharacterFilter.java: -------------------------------------------------------------------------------- 1 | package com.itz.filter; 2 | 3 | import javax.servlet.*; 4 | import javax.servlet.annotation.WebFilter; 5 | import javax.servlet.http.HttpServletRequest; 6 | import javax.servlet.http.HttpServletResponse; 7 | import java.io.IOException; 8 | 9 | @WebFilter(filterName = "CharacterFilter", value="/*") 10 | public class CharacterFilter implements Filter { 11 | public void init(FilterConfig config) throws ServletException { 12 | } 13 | 14 | public void destroy() { 15 | } 16 | 17 | @Override 18 | public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException { 19 | // 1.将参数中请求和响应转换成遵循http协议的请求和响应 20 | HttpServletRequest req = (HttpServletRequest) request; 21 | HttpServletResponse resp = (HttpServletResponse) response; 22 | // 2.处理中文乱码问题 23 | req.setCharacterEncoding("utf-8"); 24 | resp.setContentType("text/html;charset=utf-8"); 25 | // 3.拦截的执行 26 | chain.doFilter(req, resp); 27 | 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/com/itz/service/CollectionService.java: -------------------------------------------------------------------------------- 1 | package com.itz.service; 2 | 3 | import com.itz.dao.CollectionDao; 4 | import com.itz.dao.impl.CollectionDaoImpl; 5 | 6 | import java.sql.SQLException; 7 | import java.util.ArrayList; 8 | import java.util.List; 9 | import java.util.Map; 10 | 11 | public class CollectionService { 12 | CollectionDao dao = new CollectionDaoImpl(); 13 | 14 | public List> queryAll(String uid) { 15 | List> collectionList = new ArrayList<>(); 16 | try { 17 | collectionList=dao.queryAll(uid); 18 | } catch (SQLException e) { 19 | e.printStackTrace(); 20 | } 21 | return collectionList; 22 | } 23 | 24 | 25 | public boolean addeCollection(String uid,String vid) { 26 | boolean b=false; 27 | try { 28 | b= dao.addeCollection(uid,vid); 29 | } catch (SQLException e) { 30 | e.printStackTrace(); 31 | } 32 | return b; 33 | } 34 | 35 | public boolean deleteCollection(String vid){ 36 | boolean b=false; 37 | try { 38 | b= dao.deleteCollection(vid); 39 | } catch (SQLException e) { 40 | e.printStackTrace(); 41 | } 42 | return b; 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /src/com/itz/service/UserService.java: -------------------------------------------------------------------------------- 1 | package com.itz.service; 2 | 3 | import com.itz.dao.UserDao; 4 | import com.itz.dao.impl.UserDaoImpl; 5 | import com.itz.entity.PageBean; 6 | import com.itz.entity.User; 7 | 8 | import java.sql.SQLException; 9 | import java.util.List; 10 | 11 | public class UserService { 12 | UserDao dao = new UserDaoImpl(); 13 | 14 | public User findUser(String username) { 15 | User user = new User(); 16 | try { 17 | user=dao.findUser(username); 18 | } catch (SQLException e) { 19 | e.printStackTrace(); 20 | } 21 | return user; 22 | } 23 | 24 | public boolean queryPhone(String phone){ 25 | boolean b = false; 26 | try { 27 | b= dao.queryPhone(phone); 28 | } catch (SQLException e) { 29 | e.printStackTrace(); 30 | } 31 | return b; 32 | } 33 | 34 | public boolean addUser(User user) { 35 | boolean b = false; 36 | try { 37 | b= dao.addUser(user); 38 | } catch (SQLException e) { 39 | e.printStackTrace(); 40 | } 41 | return b; 42 | } 43 | 44 | public boolean deleteUser(String uid){ 45 | boolean b = false; 46 | try { 47 | b=dao.deleteUser(uid); 48 | } catch (SQLException e) { 49 | e.printStackTrace(); 50 | } 51 | return b; 52 | } 53 | 54 | public User loginCheck(User user){ 55 | User u = new User(); 56 | try { 57 | u=dao.loginCheck(user); 58 | } catch (SQLException e) { 59 | e.printStackTrace(); 60 | } 61 | return u; 62 | } 63 | 64 | public boolean alterUser(User user){ 65 | try { 66 | return dao.alterUser(user); 67 | } catch (SQLException e) { 68 | e.printStackTrace(); 69 | } 70 | return false; 71 | } 72 | 73 | public PageBean queryByPage(int currentPage,int pageSize){ 74 | PageBean pb = new PageBean<>(); 75 | try { 76 | //存储当前页数 77 | pb.setCurrentPage(currentPage); 78 | //存储每页显示的条数 79 | pb.setPageSize(pageSize); 80 | //存储要显示的权限数据 List集合,找dao层获取 81 | //调用dao层方法queryByPage,传递计算好的参数,获取查询结果集 82 | List list = 83 | dao.queryByPage((currentPage - 1) * pageSize, pageSize); 84 | //集合List,存在到pageBean中 85 | pb.setList(list); 86 | 87 | //存储共有多少条数据,找dao层获取 88 | long totalCount = dao.getTotalCount(); 89 | pb.setTotalCount(totalCount); 90 | 91 | //存储一共有多少页 92 | //计算 (总条数/每页显示的条数) 向上去整 14.0 / 5 = 2.22 93 | int totalPage = (int) Math.ceil(totalCount * 1.0 / pageSize); 94 | pb.setTotalPage(totalPage); 95 | }catch (SQLException ex){ 96 | ex.printStackTrace(); 97 | } 98 | return pb; 99 | } 100 | 101 | public boolean updateUser(Object[] params) { 102 | boolean b=false; 103 | try { 104 | b =dao.updateUser(params); 105 | } catch (SQLException e) { 106 | e.printStackTrace(); 107 | } 108 | return b; 109 | } 110 | 111 | public boolean resetPassowrd(String username) { 112 | boolean b = false; 113 | try { 114 | b = dao.resetPassowrd(username); 115 | } catch (SQLException e) { 116 | e.printStackTrace(); 117 | } 118 | return b; 119 | } 120 | } 121 | -------------------------------------------------------------------------------- /src/com/itz/service/VideoService.java: -------------------------------------------------------------------------------- 1 | package com.itz.service; 2 | 3 | import com.itz.dao.VideoDao; 4 | import com.itz.dao.impl.VideoDaoImpl; 5 | import com.itz.entity.PageBean; 6 | import com.itz.entity.Video; 7 | 8 | import java.sql.SQLException; 9 | import java.util.ArrayList; 10 | import java.util.List; 11 | 12 | public class VideoService { 13 | VideoDao dao = new VideoDaoImpl(); 14 | 15 | public List searchVideo(String v_title){ 16 | List searchList = new ArrayList<>(); 17 | try { 18 | searchList= dao.searchVideo(v_title); 19 | } catch (SQLException e) { 20 | e.printStackTrace(); 21 | } 22 | return searchList; 23 | } 24 | 25 | public List findAllVideo() { 26 | List list = new ArrayList<>(); 27 | try { 28 | list=dao.findAllVideo(); 29 | } catch (SQLException e) { 30 | e.printStackTrace(); 31 | } 32 | return list; 33 | } 34 | 35 | public boolean addVideo(Video video) { 36 | boolean b = false; 37 | try { 38 | b= dao.addVideo(video); 39 | } catch (SQLException e) { 40 | e.printStackTrace(); 41 | } 42 | return b; 43 | } 44 | 45 | public boolean delVideo(String vid) { 46 | boolean b = false; 47 | try { 48 | b= dao.delVideo(vid); 49 | } catch (SQLException e) { 50 | e.printStackTrace(); 51 | } 52 | return b; 53 | } 54 | 55 | public Video findByID(String vid) { 56 | Video video = new Video(); 57 | try { 58 | video = dao.findByID(vid); 59 | } catch (SQLException e) { 60 | e.printStackTrace(); 61 | } 62 | return video; 63 | } 64 | 65 | public boolean updateVideo(Video video){ 66 | boolean b=false; 67 | try { 68 | dao.updateVideo(video); 69 | } catch (SQLException e) { 70 | e.printStackTrace(); 71 | } 72 | return b; 73 | } 74 | 75 | 76 | public PageBean queryByPage(int currentPage, int pageSize, Video v){ 77 | PageBean pb = new PageBean(); 78 | try { 79 | //存储当前页数 80 | pb.setCurrentPage(currentPage); 81 | //存储每页显示的条数 82 | pb.setPageSize(pageSize); 83 | //存储要显示的权限数据 List集合,找dao层获取 84 | //调用dao层方法queryByPage,传递计算好的参数,获取查询结果集 85 | List list = 86 | dao.queryByPage((currentPage - 1) * pageSize, pageSize,v); 87 | //集合List,存在到pageBean中 88 | pb.setList(list); 89 | 90 | //存储共有多少条数据,找dao层获取 91 | long totalCount = VideoDaoImpl.countList.size(); 92 | pb.setTotalCount(totalCount); 93 | 94 | //存储一共有多少页 95 | //计算 (总条数/每页显示的条数) 向上去整 14.0 / 5 = 2.22 96 | int totalPage = (int) Math.ceil(totalCount * 1.0 / pageSize); 97 | pb.setTotalPage(totalPage); 98 | }catch (SQLException ex){ 99 | ex.printStackTrace(); 100 | } 101 | return pb; 102 | } 103 | 104 | 105 | } 106 | -------------------------------------------------------------------------------- /src/com/itz/servlet/CollectionManageServlet.java: -------------------------------------------------------------------------------- 1 | package com.itz.servlet; 2 | 3 | import com.alibaba.fastjson.JSON; 4 | import com.itz.entity.User; 5 | import com.itz.service.CollectionService; 6 | 7 | import javax.servlet.ServletException; 8 | import javax.servlet.annotation.WebServlet; 9 | import javax.servlet.http.*; 10 | import java.io.IOException; 11 | import java.lang.reflect.Method; 12 | import java.util.ArrayList; 13 | import java.util.List; 14 | import java.util.Map; 15 | 16 | @WebServlet(name = "CollectionManageServlet", value = "/collectionManage") 17 | public class CollectionManageServlet extends HttpServlet { 18 | private CollectionService service = new CollectionService(); 19 | @Override 20 | protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 21 | //获取客户端指定参数operator 22 | String operator =request.getParameter("operator"); 23 | Class clazz =this.getClass(); 24 | //获取执行的放法 25 | try { 26 | Method method = clazz.getMethod(operator, HttpServletRequest.class, HttpServletResponse.class); 27 | method.invoke(this,request,response); 28 | } catch (Exception e) { 29 | e.printStackTrace(); 30 | } 31 | } 32 | //登录状态校验 33 | public void loginCheck(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{ 34 | HttpSession session = request.getSession(); 35 | if(session.getAttribute("user")!=null) { 36 | response.sendRedirect("collection.jsp"); 37 | return; 38 | } 39 | 40 | // 获取浏览器携带的全部Cookie 41 | Cookie[] cookies = request.getCookies(); 42 | // 2. 查看是否有用户名username-->admin,password-->123456的cookie 43 | String value = null; //username对应的cookie值 44 | if(cookies!=null) { 45 | // 2.1 遍历所有的cookie对象,来找特定cookie的值 46 | for(int i=0; i> list = new ArrayList<>(); 72 | list= service.queryAll(uid); 73 | String collectionList = JSON.toJSONString(list); 74 | response.getWriter().println(collectionList); 75 | } 76 | 77 | //删除收藏的视频 78 | public void deleteCollection(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 79 | String vid=request.getParameter("vid"); 80 | service.deleteCollection(vid); 81 | response.sendRedirect("collection.jsp"); 82 | } 83 | 84 | //添加收藏的视频 85 | public void addCollection(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{ 86 | String uid=request.getParameter("uid"); 87 | String vid=request.getParameter("vid"); 88 | boolean b=service.addeCollection(uid,vid); 89 | if(b) 90 | response.getWriter().write("1"); 91 | else 92 | response.getWriter().write("0"); 93 | } 94 | 95 | @Override 96 | protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 97 | doGet(request, response); 98 | } 99 | } 100 | -------------------------------------------------------------------------------- /src/com/itz/servlet/UserManageServlet.java: -------------------------------------------------------------------------------- 1 | package com.itz.servlet; 2 | 3 | import com.itz.dao.UserDao; 4 | import com.itz.dao.impl.UserDaoImpl; 5 | import com.itz.entity.PageBean; 6 | import com.itz.entity.User; 7 | import com.itz.service.UserService; 8 | 9 | import javax.imageio.ImageIO; 10 | import javax.servlet.ServletException; 11 | import javax.servlet.annotation.MultipartConfig; 12 | import javax.servlet.annotation.WebServlet; 13 | import javax.servlet.http.*; 14 | import java.awt.*; 15 | import java.awt.image.BufferedImage; 16 | import java.io.File; 17 | import java.io.IOException; 18 | import java.lang.reflect.Method; 19 | import java.util.Random; 20 | import java.util.UUID; 21 | 22 | @MultipartConfig(location="D:\\",fileSizeThreshold=1024) 23 | @WebServlet(name = "UserManageServlet", value = "/userManage") 24 | public class UserManageServlet extends HttpServlet { 25 | UserService service = new UserService(); 26 | @Override 27 | protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 28 | //获取客户端指定参数operator 29 | String operator =request.getParameter("operator"); 30 | Class clazz =this.getClass(); 31 | //获取执行的放法 32 | try { 33 | Method method = clazz.getMethod(operator, HttpServletRequest.class, HttpServletResponse.class); 34 | method.invoke(this,request,response); 35 | } catch (Exception e) { 36 | e.printStackTrace(); 37 | } 38 | } 39 | 40 | //检测用户名是否存在 41 | public void findName(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 42 | // 获取参数名称 43 | String username = request.getParameter("username"); 44 | UserDao dao = new UserDaoImpl(); 45 | User user = new User(); 46 | user = service.findUser(username); 47 | if(user == null){ 48 | response.getWriter().write("1"); 49 | } else{ 50 | response.getWriter().write("2"); 51 | } 52 | } 53 | 54 | //检测手机号是否被绑定 55 | public void queryPhone(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 56 | String phone = request.getParameter("phone"); 57 | boolean b=service.queryPhone(phone); 58 | if(b){ 59 | response.getWriter().write("1"); 60 | } else{ 61 | response.getWriter().write("2"); 62 | } 63 | } 64 | 65 | //登录 66 | public void login(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 67 | // 获取表单提交的参数 68 | String username = request.getParameter("username"); 69 | String password = request.getParameter("password"); 70 | HttpSession session = request.getSession(); 71 | 72 | // 1.1 获取用户填写的验证码 73 | String code_form = request.getParameter("code_form"); 74 | // 1.2 获取session中保存的验证码 75 | String code_session = (String) request.getSession().getAttribute("code_session"); 76 | // 1.3 判断 77 | // 如果session中验证码为空 或 session中验证码和用户填写的验证码不一致, 就不合法,提示错误 78 | if (code_session == null || !code_session.equalsIgnoreCase(code_form)) { 79 | request.setAttribute("errorMsg", "验证码错误!"); 80 | request.getRequestDispatcher("/login.jsp").forward(request,response); 81 | return; 82 | } 83 | User user1 = service.findUser(username); 84 | if(user1==null){ 85 | request.setAttribute("loginError", "用户名不存在!"); 86 | request.getRequestDispatcher("/login.jsp").forward(request, response); 87 | return; 88 | } 89 | 90 | // 2 获取参数 封装到entity类中 91 | User user = new User(username,password); 92 | // 3 调用业务层 处理登录业务 93 | User loginUser = new User(); 94 | loginUser = service.loginCheck(user); // 业务层返回给web层 95 | // 4 判断是否登录成功 96 | if (loginUser != null) { 97 | // 用户名和密码正确,若勾选了记住密码,则创建session对象,并返回 98 | String pwdRem = request.getParameter("pwdremember"); 99 | 100 | // 用户名和密码正确,若勾选了自动登录,则创建Cookie对象,并返回 101 | String autologin = request.getParameter("autologin"); 102 | 103 | if(pwdRem!=null) { 104 | // 创建Cookie对象 105 | Cookie pwdInfo = new Cookie("pwdRem", username+":"+password); 106 | // 设置Cookie的生存时间 107 | pwdInfo.setMaxAge(60 * 60 * 24); 108 | // 添加Cookie 109 | response.addCookie(pwdInfo); 110 | }else{ 111 | Cookie pwdInfo = new Cookie("pwdRem", ""); 112 | pwdInfo.setMaxAge(0); 113 | response.addCookie(pwdInfo); 114 | } 115 | 116 | if(autologin!=null) { 117 | // 创建Cookie对象 118 | Cookie loginInfo = new Cookie("loginInfo", username+":"+password); 119 | // 设置Cookie的生存时间 120 | loginInfo.setMaxAge(60 * 60 * 24); 121 | // 添加Cookie 122 | response.addCookie(loginInfo); 123 | } 124 | //转跳管理页 125 | if(username.equals("admin")) { 126 | response.sendRedirect(request.getContextPath() +"/admin/index.jsp"); 127 | return; 128 | } 129 | session.setAttribute("user",loginUser); 130 | request.getRequestDispatcher("index.jsp").forward(request,response); 131 | } else { 132 | // 登录失败,将错误信息保存到request中 133 | request.setAttribute("loginError", "用户名或密码错误"); 134 | request.getRequestDispatcher("/login.jsp").forward(request, response); 135 | } 136 | } 137 | 138 | //注销 139 | public void logout(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{ 140 | // 在session中移除保存的用户信息 141 | request.getSession().removeAttribute("user"); 142 | // 在cookie中将自动登录的用户删除 -- 重新创建名为loginInfo的cookie 143 | Cookie cookie = new Cookie("loginInfo", ""); 144 | cookie.setMaxAge(0); 145 | cookie.setPath(request.getContextPath()); 146 | response.addCookie(cookie); 147 | // 跳转页面 148 | response.sendRedirect(request.getContextPath() + "/index.jsp"); 149 | } 150 | 151 | //注册 152 | public void register(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{ 153 | // 1 获取参数 封装到entity类中 154 | String uid = UUID.randomUUID().toString(); 155 | String nickname=request.getParameter("nickname"); 156 | String username =request.getParameter("username"); 157 | String password=request.getParameter("password"); 158 | String pwd=request.getParameter("pwd"); 159 | String phone = request.getParameter("phone"); 160 | 161 | if( nickname.trim().equals("")||username.trim().equals("")||password.trim().equals("")|| (!password.equals(pwd))|| (phone.trim().equals("")) ) { 162 | response.sendRedirect("/dabaitv/register.jsp"); 163 | return; 164 | } 165 | 166 | // 获取商品图片 167 | Part part = request.getPart("uimg"); 168 | // 得到web中存储图片的目录 productImg 169 | String path = request.getServletContext().getRealPath("/userImg"); 170 | 171 | File file = new File(path); 172 | if(! file.exists()){ 173 | file.mkdirs(); 174 | } 175 | // 获取图片的具体内容 176 | String header = part.getHeader("content-disposition"); 177 | // 得到上传图片文件名 178 | String fname = header.substring(header.lastIndexOf("=")+2,header.length()-1); 179 | String uimg = "/userImg/"+ uid + "-" + fname; // 生成保存到数据表的路径 180 | // 上传文件 181 | part.write(path+"/"+uid+"-"+fname); 182 | User user = new User(uimg,username,password,nickname,phone); 183 | 184 | // 2 调用业务层 添加用户 185 | boolean b= service.addUser(user); 186 | if(b) { 187 | System.out.println("注册成功!"); 188 | response.sendRedirect(request.getContextPath()+"/login.jsp"); 189 | }else { 190 | System.out.println("注册失败!"); 191 | response.sendRedirect(request.getContextPath()+"/register.jsp"); 192 | } 193 | } 194 | 195 | //刷新验证码 196 | public void getCode(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{ 197 | // 需求: 生成验证码 198 | // 1 生成一个画布对象 199 | int width = 120; 200 | int height = 40; 201 | BufferedImage bufi = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); 202 | 203 | // 3 从画布上获取画笔 204 | Graphics g = bufi.getGraphics(); 205 | 206 | // 4 填充背景色: 白色 207 | g.setColor(Color.white); 208 | g.fillRect(0, 0, width, height); 209 | 210 | // 5 绘制红色边框 211 | g.setColor(Color.red); 212 | g.drawRect(0, 0, width -1 , height - 1); 213 | 214 | // 6 在画布上 随机产生4个字符 215 | // 6.1 准备数据 216 | String data = "abcdefghjkmnpqrstuvwxyzABCDEFGHJKMNPQRSTUVWXYZ23456789"; 217 | // 6.2 随机对象 218 | Random r = new Random(); 219 | // 7.1 准备一个变量保存 验证码的值 220 | String code = ""; 221 | 222 | // 6.3 循环产生4个 223 | for (int i = 0; i < 4; i++) { 224 | // 6.3.3 设置随机颜色 225 | g.setColor(new Color(r.nextInt(255), r.nextInt(255), r.nextInt(255))); 226 | 227 | // 6.3.2 设置字体 228 | g.setFont(new Font("楷体", Font.BOLD, 30)); 229 | 230 | // 6.3.1 绘制字符 231 | // 产生随机索引 232 | int index = r.nextInt(data.length()); 233 | char c = data.charAt(index); 234 | 235 | // 7.2 将生成的验证码字符 追加到 验证码变量中 236 | code += c + ""; 237 | 238 | // 绘制字符串 239 | g.drawString(c + "", 10 + i * 30, 30); 240 | } 241 | 242 | // 7 将生成的验证码 打印到控制台 243 | System.out.println(code); 244 | 245 | // 8 绘制干扰线 246 | for (int i = 0; i < 10; i++) { 247 | // 设置随机颜色 248 | g.setColor(new Color(r.nextInt(255), r.nextInt(255), r.nextInt(255))); 249 | 250 | g.drawLine(r.nextInt(width), r.nextInt(height), r.nextInt(width), r.nextInt(height)); 251 | } 252 | 253 | // 9 将生成的验证码保存到session中 254 | request.getSession().setAttribute("code_session", code); 255 | // 2 向画布内容输出给浏览器 256 | ImageIO.write(bufi, "jpg", response.getOutputStream()); 257 | } 258 | 259 | //验证码检查 260 | public void checkCode(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{ 261 | // 1.1 获取用户填写的验证码 262 | String code_form = request.getParameter("code_form"); 263 | // 1.2 获取session中保存的验证码 264 | String code_session = (String) request.getSession().getAttribute("code_session"); 265 | // 1.3 判断 266 | // 如果session中验证码为空 或 session中验证码和用户填写的验证码不一致, 就不合法,提示错误 267 | if (code_session == null || !code_session.equalsIgnoreCase(code_form)) { 268 | request.setAttribute("errorMsg", "验证码错误!"); 269 | response.getWriter().write("2"); 270 | }else { 271 | response.getWriter().write("1"); 272 | } 273 | } 274 | 275 | //登录检查 276 | public void loginCheck(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{ 277 | HttpSession session = request.getSession(); 278 | // 1. 获取浏览器携带的cookie 279 | Cookie[] cookies = request.getCookies(); 280 | String value1 = null; // 记住密码 281 | String value2 = null; // 自动登录 282 | if(cookies != null) { 283 | for (Cookie cookie : cookies) { 284 | String name = cookie.getName(); 285 | if ("pwdRem".equals(name)) { 286 | value1 = cookie.getValue(); // username:password 287 | } 288 | if ("loginInfo".equals(name)) { 289 | value2 = cookie.getValue(); // username:password 290 | break; 291 | } 292 | } 293 | //记住密码ck 294 | if (value1 != null &&value1 != "") {// 获取用户名和密码:username-password 295 | String[] parts = value1.split(":"); // username,password 296 | String username = parts[0]; 297 | String password = parts[1]; 298 | // 验证 299 | User pwdInfo = new User(username, password); 300 | session.setAttribute("pwdInfo", pwdInfo); 301 | }else{ 302 | session.removeAttribute("pwdInfo"); 303 | } 304 | //自动登录ck 305 | if (value2 != null) {// 获取用户名和密码:username-password 306 | String[] parts = value2.split(":"); // username,password 307 | String username = parts[0]; 308 | String password = parts[1]; 309 | // 验证 310 | User user = new User(username, password); 311 | User loginUser = new User(); 312 | 313 | loginUser = service.loginCheck(user); // 业务层返回给web层 314 | session.setAttribute("user", loginUser); 315 | } 316 | request.getRequestDispatcher("login.jsp").forward(request,response); 317 | } 318 | 319 | } 320 | 321 | //修改用户信息 322 | public void alterUser(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 323 | User user = (User) request.getSession().getAttribute("user"); 324 | int uid=user.getUid(); 325 | String username = request.getParameter("username"); 326 | String nickname = request.getParameter("nickname"); 327 | String phone = request.getParameter("phone"); 328 | String password = request.getParameter("password"); 329 | String newPassword = request.getParameter("newPassword"); 330 | String newPassword2 = request.getParameter("newPassword2"); 331 | 332 | if( phone.trim().equals("")){ 333 | request.setAttribute("phoneCheck","请输入手机号!"); 334 | request.getRequestDispatcher("userInfo.jsp").forward(request,response); 335 | }else if( !user.getPassword().equals(password) ){ 336 | request.setAttribute("passwordCheck","密码错误!"); 337 | request.getRequestDispatcher("userInfo.jsp").forward(request,response); 338 | }else if( newPassword.trim().equals("")) { 339 | request.setAttribute("pwd1Check","请输入密码!"); 340 | request.getRequestDispatcher("userInfo.jsp").forward(request,response); 341 | }else if( !newPassword.equals(newPassword2)){ 342 | request.setAttribute("pwd2Check","两次密码不同!"); 343 | request.getRequestDispatcher("userInfo.jsp").forward(request,response); 344 | } 345 | 346 | // 获取用户头像 347 | Part part = request.getPart("uimg"); 348 | // 得到web中存储图片的目录 productImg 349 | String path = this.getServletContext().getRealPath("/userImg"); 350 | File file = new File(path); 351 | if(! file.exists()){ 352 | file.mkdirs(); 353 | } 354 | // 获取图片的具体内容 355 | String header = part.getHeader("content-disposition"); 356 | // 得到上传图片文件名 357 | String fname = header.substring(header.lastIndexOf("=")+2,header.length()-1); 358 | String uimg = "/userImg/"+ uid + "-" + fname; // 生成保存到数据表的路径 359 | // 上传文件 360 | part.write(path+"/"+uid+"-"+fname); 361 | User newUser = new User(uimg,username,newPassword,nickname,phone); 362 | 363 | newUser.setUid(uid); 364 | boolean b=service.alterUser(newUser); 365 | newUser = service.findUser(newUser.getUsername()); 366 | request.getSession().setAttribute("user",newUser); 367 | if(b){ 368 | logout(request,response); 369 | } else 370 | response.sendRedirect("userInfo.jsp"); 371 | } 372 | 373 | //删除用户 374 | public void deleteUser(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 375 | String uid=request.getParameter("uid"); 376 | boolean b = service.deleteUser(uid); 377 | queryByPage(request,response); 378 | } 379 | 380 | //通过id查找用户信息,回显数据 381 | public void findByUsername(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 382 | String username=request.getParameter("username"); 383 | User user = service.findUser(username); 384 | request.getSession().setAttribute("user",user); 385 | request.getRequestDispatcher("/admin/updateUser.jsp").forward(request,response); 386 | } 387 | 388 | //分页查询 389 | public void queryByPage(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 390 | //获取客户端提交上来的当前页数 391 | String currentPage = request.getParameter("currentPage"); 392 | //判空 393 | if (currentPage == null){ 394 | currentPage = "1"; 395 | } 396 | //定义每页显示的条数 397 | int pageSize = 10; 398 | //调用业务层的方法,传递 当前页数和每页显示条数 399 | PageBean userPageBean = service.queryByPage(Integer.parseInt(currentPage), pageSize); 400 | //对象存储在域中 401 | request.setAttribute("userPageBean",userPageBean); 402 | //转发 403 | request.getRequestDispatcher("/admin/userManage.jsp").forward(request,response); 404 | } 405 | 406 | //修改用户信息(后台) 407 | public void updateUser(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 408 | User user = (User) request.getSession().getAttribute("user"); 409 | int uid=user.getUid(); 410 | String nickname = request.getParameter("nickname"); 411 | String username = request.getParameter("username"); 412 | String phone = request.getParameter("phone"); 413 | 414 | // 获取用户头像 415 | Part part = request.getPart("uimg"); 416 | // 得到web中存储图片的目录 productImg 417 | String path = this.getServletContext().getRealPath("/userImg"); 418 | File file = new File(path); 419 | if(! file.exists()){ 420 | file.mkdirs(); 421 | } 422 | // 获取图片的具体内容 423 | String header = part.getHeader("content-disposition"); 424 | // 得到上传图片文件名 425 | String fname = header.substring(header.lastIndexOf("=")+2,header.length()-1); 426 | String uimg = "/userImg/"+ uid + "-" + fname; // 生成保存到数据表的路径 427 | // 上传文件 428 | part.write(path+"/"+uid+"-"+fname); 429 | 430 | 431 | Object[] params={nickname,username,phone,uimg,uid}; 432 | boolean b=service.updateUser(params); 433 | response.sendRedirect(request.getContextPath()+"/userManage?operator=queryByPage"); 434 | } 435 | 436 | //重置密码(后台) 437 | public void resetPassword(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{ 438 | String username=request.getParameter("username"); 439 | boolean b = service.resetPassowrd(username); 440 | response.sendRedirect("userManage?operator=queryByPage"); 441 | 442 | } 443 | 444 | @Override 445 | protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 446 | doGet(request, response); 447 | } 448 | 449 | } 450 | -------------------------------------------------------------------------------- /src/com/itz/servlet/VideoManageServlet.java: -------------------------------------------------------------------------------- 1 | package com.itz.servlet; 2 | 3 | import com.alibaba.fastjson.JSON; 4 | import com.itz.entity.PageBean; 5 | import com.itz.entity.Video; 6 | import com.itz.service.VideoService; 7 | 8 | import javax.servlet.*; 9 | import javax.servlet.http.*; 10 | import javax.servlet.annotation.*; 11 | import java.io.IOException; 12 | import java.lang.reflect.Method; 13 | import java.util.ArrayList; 14 | import java.util.List; 15 | 16 | @MultipartConfig(location="D:\\",fileSizeThreshold=1024) 17 | @WebServlet(name = "VideoManageServlet", value = "/videoManage") 18 | public class VideoManageServlet extends HttpServlet { 19 | private VideoService service = new VideoService(); 20 | 21 | @Override 22 | protected void doGet(HttpServletRequest request, HttpServletResponse response) { 23 | //获取客户端指定参数operator 24 | String operator =request.getParameter("operator"); 25 | Class clazz =this.getClass(); 26 | //获取执行的放法 27 | try { 28 | Method method = clazz.getMethod(operator, HttpServletRequest.class, HttpServletResponse.class); 29 | method.invoke(this,request,response); 30 | } catch (Exception e) { 31 | e.printStackTrace(); 32 | } 33 | } 34 | 35 | //查询所有视频信息 36 | public void showall(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{ 37 | VideoService service = new VideoService(); 38 | List list = new ArrayList<>(); 39 | list=service.findAllVideo(); 40 | String videoList = JSON.toJSONString(list); // "{key:value}" 41 | response.getWriter().println(videoList); 42 | } 43 | 44 | //添加视频 45 | public void addVideo(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 46 | String v_title= request.getParameter("v_title"); 47 | String score= request.getParameter("score"); 48 | String classify= request.getParameter("classify"); 49 | String protagonist= request.getParameter("protagonist"); 50 | String description= request.getParameter("description"); 51 | String v_url= request.getParameter("v_url"); 52 | String v_img=request.getParameter("v_img"); 53 | Video video = new Video(v_title,v_img,Double.parseDouble(score),classify,protagonist,description,v_url); 54 | service.addVideo(video); 55 | queryByPage(request,response); 56 | } 57 | 58 | //删除视频 59 | public void delVideo(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 60 | String vid=request.getParameter("vid"); 61 | boolean b = service.delVideo(vid); 62 | queryByPage(request,response); 63 | } 64 | 65 | //通过id查找视频信息,回显数据 66 | public void findByID(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 67 | String vid=request.getParameter("vid"); 68 | Video video = service.findByID(vid); 69 | request.getSession().setAttribute("video",video); 70 | request.getRequestDispatcher("/admin/updateVideo.jsp").forward(request,response); 71 | } 72 | 73 | //修改视频信息 74 | public void searchVideo(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{ 75 | String v_title=request.getParameter("v_title"); 76 | List videoList = service.searchVideo(v_title); 77 | request.getSession().setAttribute("searchList",videoList); 78 | request.getRequestDispatcher("searchList.jsp").forward(request,response); 79 | } 80 | 81 | //修改视频信息 82 | public void updateVideo(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 83 | String vid=request.getParameter("vid"); 84 | String v_title= request.getParameter("v_title"); 85 | String score= request.getParameter("score"); 86 | String classify= request.getParameter("classify"); 87 | String protagonist= request.getParameter("protagonist"); 88 | String description= request.getParameter("description"); 89 | String v_url= request.getParameter("v_url"); 90 | String v_img=request.getParameter("v_img"); 91 | Video video = new Video(Integer.parseInt(vid),v_title,v_img,Double.parseDouble(score),classify,protagonist,description,v_url); 92 | service.updateVideo(video); 93 | queryByPage(request,response); 94 | } 95 | 96 | //分页查询 97 | public void queryByPage(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 98 | Video v = new Video(); 99 | String vid=request.getParameter("vid"); 100 | String v_title=request.getParameter("v_title"); 101 | String classify=request.getParameter("classify"); 102 | 103 | if(vid!=null&&vid.trim()!="") 104 | v.setVid(Integer.parseInt(vid)); 105 | v.setV_title(v_title); 106 | v.setClassify(classify); 107 | request.getSession().setAttribute("v",v); 108 | String currentPage = request.getParameter("currentPage"); 109 | if (currentPage == null){ 110 | currentPage = "1"; 111 | } 112 | int pageSize = 10; 113 | PageBean pageBean = service.queryByPage(Integer.parseInt(currentPage), pageSize,v); 114 | //对象存储在域中 115 | request.setAttribute("pageBean",pageBean); 116 | //转发 117 | request.getRequestDispatcher("/admin/videoManage.jsp").forward(request,response); 118 | } 119 | 120 | //视频详情 121 | public void videoDetails(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{ 122 | String vid=request.getParameter("vid"); 123 | 124 | Video video = service.findByID(vid); 125 | request.getSession().setAttribute("video",video); 126 | request.getRequestDispatcher("play.jsp").forward(request,response); 127 | } 128 | 129 | @Override 130 | protected void doPost(HttpServletRequest request, HttpServletResponse response) { 131 | doGet(request, response); 132 | } 133 | } 134 | -------------------------------------------------------------------------------- /src/com/itz/utils/C3P0Util.java: -------------------------------------------------------------------------------- 1 | package com.itz.utils; 2 | 3 | import com.mchange.v2.c3p0.ComboPooledDataSource; 4 | import org.apache.commons.dbutils.QueryRunner; 5 | 6 | import javax.sql.DataSource; 7 | import java.sql.Connection; 8 | import java.sql.PreparedStatement; 9 | import java.sql.ResultSet; 10 | import java.sql.SQLException; 11 | 12 | public class C3P0Util { 13 | 14 | // 创建一个数据源对象 15 | private static DataSource ds = null; 16 | // 初始化C3P0数据库连接池 17 | static { 18 | // 使用c3p0-config.xml配置文件中的named-config节点中name属性的值 19 | ComboPooledDataSource cpds = new ComboPooledDataSource(); 20 | ds = cpds; 21 | } 22 | // 获取数据库的连接对象 23 | public static Connection getConnection() { 24 | Connection conn = null; 25 | try { 26 | conn = ds.getConnection(); 27 | } catch (SQLException e) { 28 | // TODO Auto-generated catch block 29 | e.printStackTrace(); 30 | } 31 | return conn; 32 | } 33 | // 关闭连接对象 -- 释放资源 34 | public static void release(Connection conn, PreparedStatement pstmt) { 35 | if(pstmt != null) { 36 | try { 37 | pstmt.close(); 38 | } catch (SQLException e) { 39 | // TODO Auto-generated catch block 40 | e.printStackTrace(); 41 | } 42 | pstmt = null; 43 | } 44 | if(conn != null) { 45 | try { 46 | conn.close(); 47 | } catch (SQLException e) { 48 | // TODO Auto-generated catch block 49 | e.printStackTrace(); 50 | } 51 | conn = null; 52 | } 53 | } 54 | public static void release(Connection conn, PreparedStatement pstmt, ResultSet rs) { 55 | if(rs != null) { 56 | try { 57 | rs.close(); 58 | } catch (SQLException e) { 59 | // TODO Auto-generated catch block 60 | e.printStackTrace(); 61 | } 62 | rs = null; 63 | } 64 | release(conn,pstmt); 65 | } 66 | 67 | 68 | // 获取数据源 69 | public static DataSource getDataSource(){ 70 | return ds; 71 | } 72 | // 创建QueryRunner对象 73 | public static QueryRunner getQueryRunner(){ 74 | return new QueryRunner(ds); 75 | } 76 | } 77 | -------------------------------------------------------------------------------- /src/test/D.java: -------------------------------------------------------------------------------- 1 | package test; 2 | 3 | import java.text.SimpleDateFormat; 4 | import java.util.Date; 5 | 6 | public class D { 7 | public static void main(String[] args) { 8 | Date date = new Date(); 9 | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 10 | String register = sdf.format(date); 11 | System.out.println(register); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /web/WEB-INF/classes/c3p0-config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | com.mysql.cj.jdbc.Driver 5 | 6 | jdbc:mysql://localhost:3306/dabaitv?useSSL=false&serverTimezone=GMT%2B8 7 | 8 | root 9 | root 10 | 30000 11 | 10 12 | 30 13 | 100 14 | 10 15 | 200 16 | 17 | 18 | -------------------------------------------------------------------------------- /web/WEB-INF/lib/c3p0-0.9.5.5.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Clover-9527/dabaitv/dd32fcb021ee36eca95a77650c71d0498cc24a14/web/WEB-INF/lib/c3p0-0.9.5.5.jar -------------------------------------------------------------------------------- /web/WEB-INF/lib/commons-beanutils-1.8.3.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Clover-9527/dabaitv/dd32fcb021ee36eca95a77650c71d0498cc24a14/web/WEB-INF/lib/commons-beanutils-1.8.3.jar -------------------------------------------------------------------------------- /web/WEB-INF/lib/commons-dbcp2-2.7.0.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Clover-9527/dabaitv/dd32fcb021ee36eca95a77650c71d0498cc24a14/web/WEB-INF/lib/commons-dbcp2-2.7.0.jar -------------------------------------------------------------------------------- /web/WEB-INF/lib/commons-dbutils-1.7.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Clover-9527/dabaitv/dd32fcb021ee36eca95a77650c71d0498cc24a14/web/WEB-INF/lib/commons-dbutils-1.7.jar -------------------------------------------------------------------------------- /web/WEB-INF/lib/commons-logging-1.1.1.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Clover-9527/dabaitv/dd32fcb021ee36eca95a77650c71d0498cc24a14/web/WEB-INF/lib/commons-logging-1.1.1.jar -------------------------------------------------------------------------------- /web/WEB-INF/lib/commons-logging-1.2.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Clover-9527/dabaitv/dd32fcb021ee36eca95a77650c71d0498cc24a14/web/WEB-INF/lib/commons-logging-1.2.jar -------------------------------------------------------------------------------- /web/WEB-INF/lib/commons-pool2-2.8.0.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Clover-9527/dabaitv/dd32fcb021ee36eca95a77650c71d0498cc24a14/web/WEB-INF/lib/commons-pool2-2.8.0.jar -------------------------------------------------------------------------------- /web/WEB-INF/lib/fastjson-1.2.76.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Clover-9527/dabaitv/dd32fcb021ee36eca95a77650c71d0498cc24a14/web/WEB-INF/lib/fastjson-1.2.76.jar -------------------------------------------------------------------------------- /web/WEB-INF/lib/jstl.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Clover-9527/dabaitv/dd32fcb021ee36eca95a77650c71d0498cc24a14/web/WEB-INF/lib/jstl.jar -------------------------------------------------------------------------------- /web/WEB-INF/lib/lombok-1.18.18.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Clover-9527/dabaitv/dd32fcb021ee36eca95a77650c71d0498cc24a14/web/WEB-INF/lib/lombok-1.18.18.jar -------------------------------------------------------------------------------- /web/WEB-INF/lib/mchange-commons-java-0.2.19.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Clover-9527/dabaitv/dd32fcb021ee36eca95a77650c71d0498cc24a14/web/WEB-INF/lib/mchange-commons-java-0.2.19.jar -------------------------------------------------------------------------------- /web/WEB-INF/lib/mysql-connector-java-8.0.11.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Clover-9527/dabaitv/dd32fcb021ee36eca95a77650c71d0498cc24a14/web/WEB-INF/lib/mysql-connector-java-8.0.11.jar -------------------------------------------------------------------------------- /web/WEB-INF/lib/standard.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Clover-9527/dabaitv/dd32fcb021ee36eca95a77650c71d0498cc24a14/web/WEB-INF/lib/standard.jar -------------------------------------------------------------------------------- /web/WEB-INF/web.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | -------------------------------------------------------------------------------- /web/admin/addVideo.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=UTF-8" 2 | pageEncoding="UTF-8"%> 3 | <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 21 | 22 | 23 | 24 | 25 | 新增权限 26 | 27 | 28 | 29 | 视频标题 30 | 31 | 32 | 33 | 视频封面 34 | 35 | 36 | 37 | 评分 38 | 39 | 40 | 41 | 42 | 类别 43 | 44 | 电视剧 45 | 电影 46 | 综艺 47 | 动漫 48 | 49 | 50 | 51 | 52 | 主演 53 | 54 | 55 | 56 | 描述 57 | 58 | 59 | 60 | 播放链接 61 | 62 | 63 | 64 | 提交 65 | 重置 66 | 返回 67 | 68 | 69 | 70 | 71 | 72 | 73 | -------------------------------------------------------------------------------- /web/admin/index.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=UTF-8" 2 | pageEncoding="UTF-8"%> 3 | <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 21 | Insert title here 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 大 白 影 视 管 理 系 统 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 视频管理 39 | 用户管理 40 | 41 | <%-- --%> 42 | <%-- null--%> 43 | <%-- --%> 44 | 45 | 退出登录 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 62 | 63 | -------------------------------------------------------------------------------- /web/admin/updateUser.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=UTF-8" 2 | pageEncoding="UTF-8"%> 3 | <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 21 | 22 | 23 | 24 | 25 | 26 | 用户修改 27 | 28 | 29 | 30 | 31 | 昵称 32 | 33 | 34 | 35 | 用户名 36 | 37 | 38 | 39 | 头像 40 | 41 | 42 | 43 | 手机号 44 | 45 | 46 | 47 | 48 | 提交 49 | 重置 50 | 返回 51 | 52 | 53 | 54 | 55 | 56 | 57 | -------------------------------------------------------------------------------- /web/admin/updateVideo.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=UTF-8" 2 | pageEncoding="UTF-8"%> 3 | <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 21 | 22 | 23 | 24 | 25 | 26 | 视频修改 27 | 28 | 29 | 30 | 31 | 视频标题 32 | 33 | 34 | 35 | 封面 36 | 37 | 38 | 39 | 评分 40 | 41 | 42 | 43 | 44 | 类别 45 | 46 | 电视剧 47 | 电影 48 | 综艺 49 | 动漫 50 | 51 | 52 | 53 | 54 | 主演 55 | 56 | 57 | 58 | 描述 59 | ${video.description} 60 | <%-- --%> 61 | 62 | 63 | 播放链接 64 | 65 | 66 | 67 | 68 | 提交 69 | 重置 70 | 返回 71 | 72 | 73 | 74 | 75 | 76 | 82 | 83 | -------------------------------------------------------------------------------- /web/admin/userManage.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=UTF-8" 2 | pageEncoding="UTF-8"%> 3 | <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 29 | 30 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | ID 54 | 头像 55 | 用户名 56 | 昵称 57 | 手机号 58 | 操作 59 | 60 | 61 | 62 | 63 | ${user.uid} 64 | 65 | ${user.username} 66 | ${user.nickname} 67 | ${user.phone} 68 | 69 | 编辑 70 | 删除 71 | 重置密码 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | <%--上一页按钮, 计算方式: 上一页=当前页-1, 超链接发送请求,提交【当前页-1】 按钮当到到第一页的时候,不能再点了--%> 82 | 83 | 84 | 85 | « 86 | 87 | 88 | 89 | 90 | <%--不是第一页,按钮可以点击--%> 91 | 92 | 93 | 94 | « 95 | 96 | 97 | 98 | <%-- 99 | 页码处理 100 | 页码是从1开始,到总页数结束 101 | 总页数在PageBean对象中的变量 totalPage 102 | 循环出现来的 103 | 页码显示的是循环中变量 104 | --%> 105 | 106 | <%-- 107 | 点击页码,向服务器发送请求,提交当前页数 108 | 超链接请求,传递参数 109 | 如果页码正好是当前页,不能点击 110 | 循环中的变量,就是页码 111 | 判断: 页码是不是=当前页数 (PageBean对象的属性currentPage) 112 | --%> 113 | 114 | ${i} 115 | 116 | 117 | 118 | ${i} 119 | 120 | 121 | 122 | 123 | 124 | 125 | <%-- 126 | 下一页 = 当前页+1 127 | 判断: 如果已经是最后一页,不能点击 128 | 当前页=总页数,就是最后一页 129 | --%>` 130 | 131 | 132 | 133 | 134 | » 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | » 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 |