肝了3个晚上,大佬把基于ssm框架实现的视频电影系统写出来了

好久不见. 提交于 2021-01-26 18:00:16

项目介绍

本系统使用Spring+SpringMVC+MyBatis架构,数据库使用MySQL,共分为以下四大模块:

1、登录注册及用户管理

提供登录注册以及个人基本资料的修改查询

2、资源管理

管理员从后端添加电影资源并赋予资源的信息如名称、图片、时长、电影上映时间、评分、导演、演员、类型、地区等信息,发布成功在后端以及用户页面军可查看播放。

3、评论管理

在增加互动性且维护良好环境的同时,对用户评论内置了敏感词汇过滤。

4、收藏管理

用户可以将喜欢的电影添加到收藏中心,便于随时观看影片。

项目适用人群

正在做毕设的学生,或者需要项目实战练习的Java学习者

需要(Java学习资料+面试文档+电子书籍+开发工具+项目视频)可以加Java群:1142951706

开发环境:

  1. jdk 8
  2. intellij idea
  3. tomcat 8.5.40
  4. mysql 5.7

所用技术:

  1. Spring+SpringMVC+MyBatis
  2. layui
  3. jsp

项目访问地址

前端访问地址

http://localhost:8090/index

后台访问地址

  1. http://localhost:8090/admin/index

  2. admin/admin

项目截图

  • 首页

  • 热门电影

  • 电影详情

  • 电影播放

  • 后端-敏感词

  • 后端-评价列表

  • 后端-收藏列表

  • 后端-用户列表

数据库配置

  1. 数据库配置信息

  2. _#配置文件_

  3. jdbc.url=jdbc:mysql://localhost:3306/movies?characterEncoding=UTF-8

  4. jdbc.driverClass=com.mysql.jdbc.Driver

  5. jdbc.username=root

  6. jdbc.password=root123

  7. 数据库配置加载

  8. <?xml version="1.0" encoding="UTF-8"?>

  9. <beans xmlns="http://www.springframework.org/schema/beans"

  10. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  11. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

  12. _<!-- 引入配置文件 -->_

  13. <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">

  14. <property name="location" value="classpath:pro.properties" />

  15. </bean>

  16. _<!-- 定义数据源Bean -->_

  17. _<!-- Druid -->_

  18. <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">

  19. <property name="driverClassName" value="${jdbc.driverClass}" />

  20. <property name="url" value="${jdbc.url}" />

  21. <property name="username" value="${jdbc.username}" />

  22. <property name="password" value="${jdbc.password}" />

  23. </bean>

  24. _<!-- 注册SqlSessionFactoryBean -->_

  25. <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">

  26. <property name="dataSource" ref="dataSource" />

  27. _<!-- 自动扫描mappers.xml文件 -->_

  28. <property name="mapperLocations" value="classpath*:com/lrfalse/dao/**/*.xml" />

  29. <property name="configLocation" value="classpath:mybatis-config.xml"></property>

  30. </bean>

  31. _<!-- DAO接口所在包名,Spring会自动查找其下的类 -->_

  32. <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">

  33. <property name="basePackage" value="com.lrfalse.dao" />

  34. <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />

  35. </bean>

  36. _<!-- (事务管理)transaction manager, use JtaTransactionManager for global tx -->_

  37. <bean id="transactionManager"

  38. class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

  39. <property name="dataSource" ref="dataSource" />

  40. </bean>

  41. </beans>

  42. springMvc配置

  43. <?xml version="1.0" encoding="UTF-8"?>

  44. <beans xmlns="http://www.springframework.org/schema/beans"

  45. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  46. xmlns:context="http://www.springframework.org/schema/context"

  47. xmlns:mvc="http://www.springframework.org/schema/mvc"

  48. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd

  49. http://www.springframework.org/schema/context

  50. http://www.springframework.org/schema/context/spring-context.xsd

  51. http://www.springframework.org/schema/mvc

  52. http://www.springframework.org/schema/mvc/spring-mvc.xsd">

  53. _<!-- 启动自动扫描 -->_

  54. <context:component-scan base-package="com.lrfalse" />

  55. _<!-- 注册MVC注解驱动 -->_

  56. <mvc:annotation-driven />

  57. _<!-- 静态资源可访问的设置方式 -->_

  58. <mvc:default-servlet-handler />

  59. <mvc:resources location="/resource/" mapping="/resource/**" />

  60. <mvc:resources location="/" mapping="/**/*.js"/>

  61. <mvc:resources location="/" mapping="/**/*.css"/>

  62. <mvc:resources location="/" mapping="/**/*.mp4"/>

  63. <mvc:resources location="/assets/" mapping="/assets/**/*"/>

  64. <mvc:resources location="/3rd/" mapping="/assets/**/*"/>

  65. <mvc:resources location="/assets/pc" mapping="/assets/pc/**/*"/>

  66. _<!--装配Swagger配置-->_

  67. <bean class="com.lrfalse.common.SwaggerConfig"/>

  68. _<!--避免IE执行AJAX时,返回JSON出现下载文件 -->_

  69. <bean id="mappingJacksonHttpMessageConverter"

  70. class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">

  71. <property name="supportedMediaTypes">

  72. <list>

  73. <value>text/html;charset=UTF-8</value>

  74. </list>

  75. </property>

  76. </bean>

  77. _<!--增加tkmybatis注解依赖-->_

  78. <bean class="tk.mybatis.spring.mapper.MapperScannerConfigurer">

  79. <property name="basePackage" value="com.lrfalse.dao"/>

  80. <property name="beanName" value="normal"/>

  81. </bean>

  82. _<!-- 配置视图解析器,可以显式设置,也可以不设置,不设置会依据SpringMVC的默认设置 -->_

  83. <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">

  84. <property name="prefix" value="/WEB-INF/jsp/" />

  85. <property name="suffix" value=".jsp" />

  86. </bean>

  87. _<!-- 配置文件上传,如果没有使用文件上传可以不用配置,当然如果不配,那么配置文件中也不必引入上传组件包 -->_

  88. <bean id="multipartResolver"

  89. class="org.springframework.web.multipart.commons.CommonsMultipartResolver">

  90. _<!-- 默认编码 -->_

  91. <property name="defaultEncoding" value="utf-8" />

  92. _<!-- 文件大小最大值 -->_

  93. <property name="maxUploadSize" value="10485760000" />

  94. _<!-- 内存中的最大值 -->_

  95. <property name="maxInMemorySize" value="40960" />

  96. </bean>

  97. </beans>

  98. web.xml 配置

  99. <?xml version="1.0" encoding="UTF-8"?>

  100. <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"

  101. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  102. xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"

  103. version="3.1" metadata-complete="true">

  104. <display-name>Archetype Created Web Application</display-name>

  105. <welcome-file-list>

  106. <welcome-file>/index</welcome-file>

  107. </welcome-file-list>

  108. _<!-- Spring和mybatis的配置文件 -->_

  109. <context-param>

  110. <param-name>contextConfigLocation</param-name>

  111. <param-value>classpath:spring-mybatis.xml</param-value>

  112. </context-param>

  113. _<!-- 编码过滤器 -->_

  114. <filter>

  115. <filter-name>encodingFilter</filter-name>

  116. <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>

  117. <async-supported>true</async-supported>

  118. <init-param>

  119. <param-name>encoding</param-name>

  120. <param-value>UTF-8</param-value>

  121. </init-param>

  122. </filter>

  123. <filter-mapping>

  124. <filter-name>encodingFilter</filter-name>

  125. <url-pattern>/*</url-pattern>

  126. </filter-mapping>

  127. _<!-- Spring监听器 -->_

  128. <listener>

  129. <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

  130. </listener>

  131. _<!-- 防止Spring内存溢出监听器 -->_

  132. <listener>

  133. <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>

  134. </listener>

  135. <session-config>

  136. <session-timeout>600</session-timeout>

  137. </session-config>

  138. _<!-- Spring MVC servlet -->_

  139. <servlet>

  140. <servlet-name>SpringMVC</servlet-name>

  141. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

  142. <init-param>

  143. <param-name>contextConfigLocation</param-name>

  144. <param-value>classpath:spring-mvc.xml</param-value>

  145. </init-param>

  146. <load-on-startup>1</load-on-startup>

  147. <async-supported>true</async-supported>

  148. </servlet>

  149. <servlet-mapping>

  150. <servlet-name>SpringMVC</servlet-name>

  151. _<!-- 此处可以可以配置成*.do,对应struts的后缀习惯 -->_

  152. <url-pattern>/</url-pattern>

  153. </servlet-mapping>

  154. <welcome-file-list>

  155. <welcome-file>/index.jsp</welcome-file>

  156. </welcome-file-list>

  157. <servlet-mapping>

  158. <servlet-name>default</servlet-name>

  159. <url-pattern>*.js</url-pattern>

  160. <url-pattern>*.css</url-pattern>

  161. <url-pattern>*.png</url-pattern>

  162. <url-pattern>/assets/*"</url-pattern>

  163. <url-pattern>/3rd/*</url-pattern>

  164. </servlet-mapping>

  165. </web-app>

业务代码

  1. 电影首页

  2. @GetMapping(value = {"index",""})

  3. public ModelAndView index(ModelAndView mav, HttpSession session){

  4. List<Movies> randomList=moviesService.randomMovies(); //预告电影

  5. List<Movies> hotList=moviesService.findHotMovies(); //热门电影

  6. List<Movies> newestList=moviesService.findNewestList(); //最新电影

  7. List<Movies> indexNewestList=new ArrayList<>();

  8. for(Movies movies:newestList){

  9. List<MoviesType> moviesTypes=moviesTypeService.findListById(movies.getId());

  10. movies.setMoviesTypes(moviesTypes);

  11. indexNewestList.add(movies);

  12. }

  13. List<Movies> recommendList;

  14. Person person=(Person) session.getAttribute("loginUser");

  15. if(person!=null){ //如果登录,查看收藏类型的电影 ,

  16. recommendList=moviesService.findRecommendList(person.getId()); //电影推荐

  17. }else{//如果没登录,查询热门的10个电影

  18. recommendList=moviesService.findHotMovies();

  19. }

  20. mav.addObject("randomList",randomList);

  21. mav.addObject("hotList",hotList);

  22. mav.addObject("newestList",newestList);

  23. mav.addObject("recommendList",recommendList);

  24. mav.setViewName("pc/index");

  25. return mav;

  26. }

  27. //前端jsp

  28. <html lang="en">

  29. <head>

  30. <meta charset="UTF-8">

  31. <title>程序帮,爱电影</title>

  32. <meta name="keywords" content="">

  33. <meta name="description" content="">

  34. <script src="${pageContext.request.contextPath}/assets/pc/js/jquery-1.11.3.min.js"></script>

  35. <script src="${pageContext.request.contextPath}/assets/pc/js/index.js"></script>

  36. <link rel="stylesheet" href="${pageContext.request.contextPath}/assets/pc/css/index.css">

  37. </head>

  38. <body>

  39. <jsp:include page="head.jsp"/>

  40. <div class="gg">公告:如果你喜欢程序帮,爱电影,希望你能把程序帮,爱电影推广给更多的朋友,多谢!</div>

  41. <div class="out l">

  42. <div class="hot">

  43. ![](${pageContext.request.contextPath}/assets/pc/images/ribbon.png)

  44. </div>

  45. <ul class="img ">

  46. <li>

  47. <a href="# ">

  48. ![](${pageContext.request.contextPath}/assets/pc/images/1.jpg )

  49. </a>

  50. </li>

  51. <li>

  52. <a href="# ">

  53. ![](${pageContext.request.contextPath}/assets/pc/images/2.jpg )

  54. </a>

  55. </li>

  56. <li>

  57. <a href="# ">

  58. ![](${pageContext.request.contextPath}/assets/pc/images/3.jpg )

  59. </a>

  60. </li>

  61. <li>

  62. <a href="# ">

  63. ![](${pageContext.request.contextPath}/assets/pc/images/4.jpg )

  64. </a>

  65. </li>

  66. <li>

  67. <a href="# ">

  68. ![](${pageContext.request.contextPath}/assets/pc/images/5.jpg )

  69. </a>

  70. </li>

  71. </ul>

  72. <ul class="num " >

  73. </ul>

  74. <div class="left btn "><</div>

  75. <div class="right btn right-btn">></div>

  76. </div>

  77. <div class="box-line">

  78. <%-- <span>随机电影资源</span>--%>

  79. <span>电影预告</span>

  80. </div>

  81. <div class="menu">

  82. <div class="menu_item">

  83. <c:forEach items="${randomList}" var="randoms">

  84. <div class="menu_item_img">

  85. <a href="${pageContext.request.contextPath}/details/${randoms.id}">

  86. ![](${fn:substring(randoms.img, 0, fn:indexOf(randoms.img, )

  87. ![](${fn:substring(randoms.img, fn:indexOf(randoms.img, )

  88. </a>

  89. </div>

  90. </c:forEach>

  91. </div>

  92. </div>

  93. <main>

  94. <div class="main">

  95. <div class="main_title">

  96. <h3>最新电影</h3>

  97. <a href="">更多>></a>

  98. </div>

  99. <c:forEach items="${newestList}" var="newest">

  100. <div class="main_item">

  101. <a class="main_item_img" href="${pageContext.request.contextPath}/details/${newest.id}">

  102. ![](${fn:substring(newest.img, 0, fn:indexOf(newest.img, )

  103. ![](${pageContext.request.contextPath}/assets/pc/images/play-icon.png)

  104. <span class="cq">超清</span>

  105. </a>

  106. <div class="main_item_title">

  107. <h1>

  108. <a href="#" target="_blank" title="${newest.name}">${newest.name}</a>

  109. <em> - ${newest.score}分</em>

  110. </h1>

  111. <div class="main_item_title_lei">

  112. 类型:

  113. <c:forEach items="${newest.moviesTypes}" var="type" varStatus="index">

  114. <c:if test="${index.index<=3}">

  115. <a class="movietype" href="#">${type.typeName}</a>

  116. </c:if>

  117. </c:forEach>

  118. </div>

  119. </div>

  120. </div>

  121. </c:forEach>

  122. <div class="cl"></div>

  123. </div>

  124. <div class="right">

  125. <div class="right_title">

  126. <h3>热门电影</h3>

  127. </div>

  128. <c:forEach items="${hotList}" var="hot" varStatus="index" >

  129. <div class="list-group">

  130. <a class="list-group-item" target="_blank" href="${pageContext.request.contextPath}/details/${hot.id}">

  131. <span class="${index.index<3?'square-item-red':'square-item-blue'}">${index.index+1}</span>

  132. ${hot.name}

  133. </a>

  134. </div>

  135. </c:forEach>

  136. </div>

  137. </main>

  138. <div class="main3">

  139. <div class="main3_title">

  140. <h3>电影推荐</h3>

  141. <a href="">更多>></a>

  142. </div>

  143. <c:forEach items="${recommendList}" var="recommend" varStatus="index">

  144. <c:if test="${index.index<10}">

  145. <div class="main3_item">

  146. <div class="main3_item_img">

  147. <a href="#">

  148. ![](${fn:substring(recommend.img, 0, fn:indexOf(recommend.img, )

  149. </a>

  150. <span class="lg">蓝光</span>

  151. <div class="main3_item_title">

  152. <h1>

  153. <a href="#" target="_blank" title="${recommend.name}">${recommend.name}</a>

  154. <em> - ${recommend.score}分</em>

  155. </h1>

  156. <div class="main3_item_title_lei">

  157. 类型:

  158. <c:forEach items="${recommend.moviesTypes}" var="type" varStatus="index">

  159. <c:if test="${index.index<=3}">

  160. <a class="movietype" href="#">${type.typeName}</a>

  161. </c:if>

  162. </c:forEach>

  163. </div>

  164. </div>

  165. </div>

  166. </div>

  167. </c:if>

  168. </c:forEach>

  169. </div>

  170. </body>

  171. </html>

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!