1小时轻松上手springmvc,视频网站后台开发

原创 2017-12-21 zhuyuansj zhuyuansj

每日推荐

快速熟悉springmvc的方法

本文作者

作者:zhuyuansj

连接:http://www.jianshu.com/p/9eec63121cef

本文由作者授权发布

1

前言

由于最近半年一直在用springboot,但是也不能忘了本,于是把springmvc重新练了下,做了个前端传个表单,后台接收并显示的界面,该项目可以上传视频的URL,然后前端进行页面的播放,项目采用springmvc+spring+mybatis,前端是用jquery.功能很简单,前端一个form表单,提交后台,后台添加数据,并且将数据转发到前端进行显示。后台将entity,service,serviceimpl,controller,全部用marven进行关联,分模块开发。

2

项目中几个重要知识点

1.文件上传 2.2张表在不关联的情况下,用inner join连表查询 3.分页查询 4.log日志使用 5.模块之间的联系,思想概述

3

项目的结构

3.1文件上传

(一):首先在resources目录下新建springmvc.xml,在里面加入

<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>添加视频资源</title> </head> <body> <center> <h1>视频后台添加视频资源</h1> <form action="addVideo" style="font-size: 14px;" method="post" ENCTYPE="multipart/form-data"> <table> <tr> <td>视频名称:</td> <td><input type="text" name=videoName></td> </tr> <tr> <td>视频类型:</td> <td><select name="videoTypeId" style="width: 170px;"> <c:forEach items="${listVideoType}" var="p"> <option value="${p.id}">${p.typeName}</option> </c:forEach> </select></td> </tr> <tr> <td>优酷播放URL:</td> <td><textarea rows="10" cols="30" name="videoHtml"></textarea></td> </tr> <tr> <td>上传封面:</td> <td><input type="file" name="file"></td> </tr> <tr> <td colspan="2"><input type="submit" value="提交"></td></tr> </table> </form> </center> </body> </html>

后台上传文件接口

@RequestMapping("/addVideo") public String addVideo(@RequestParam(value = "file", required = false) MultipartFile file, VideoInfo videoInfo, HttpServletRequest req, HttpServletResponse res) {//这里的required=false,意思是不传参也可以 try { // 获取当前上下文 String path = req.getSession().getServletContext().getRealPath("/static/imgs"); // 文件名称 String newName = System.currentTimeMillis() + ".png"; File targetFile = new File(path, newName); // 文件夹不存在,则创建文件夹 if (!targetFile.exists()) { targetFile.mkdirs(); } // 保存 try { file.transferTo(targetFile); } catch (Exception e) { log.error(e); } videoInfo.setVideoUrl(newName); videoInfoService.addVideoInfo(videoInfo); req.setAttribute("result", "封面上传成功!"); return "redirect:/videoManag"; } catch (Exception e) { log.error(e); req.setAttribute("result", "上传失败!"); return LOCAVIDEO; } }

3.2关联表的查询

select a.id as id,a.video_name as videoName, a.video_html as videoHtml ,a.video_url as videoUrl, a.video_del as videoDel , b.type_name as typeName from video_info as a inner join video_type as b on a.video_type_id=b.id;

3.3分页查询

在resource目录下新建mybatis-config.xml

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!-- 配置分页插件 --> <plugins> <plugin interceptor="com.github.pagehelper.PageHelper"> <!-- 设置数据库类型 Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL六种数据库--> <property name="dialect" value="mysql"/> </plugin> </plugins> </configuration>

applicationContext-dao.xml加载mybatis-config.xml

<!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <!-- 自动扫描mapping.xml文件 --> <property name="mapperLocations" value="classpath:mappings/*.xml"></property> <property name="configLocation" value="classpath:spring/mybatis-config.xml" /> </bean>

java代码使用

@RequestMapping("/indexVideo") public String indexVideo(HttpServletRequest request, int pageIndex) { Page page = PageHelper.startPage(pageIndex, 2); request.setAttribute("listVideo", videoInfoService.getVoideAll(null)); request.setAttribute("pageSize", page.getPages()); return INDEXVIDEO; }

前端代码

<a style="font-size: 20px;" href="indexVideo?pageIndex=1">首页</a> <c:forEach begin="1" end="${pageSize}" var="p"> <a style="font-size: 20px;" href="indexVideo?pageIndex=${p}">${p}</a> </c:forEach> <a style="font-size: 20px;" href="indexVideo?pageIndex=${pageSize}">尾页</a>

3.4Spring整合log4j

创建log4j.properties,在resources/properties下创建log4j.properties文件

### set log levels ### log4j.rootLogger =INFO,DEBUG, stdout , R log4j.appender.stdout = org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target = System.out log4j.appender.stdout.layout = org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n log4j.appender.D = org.apache.log4j.DailyRollingFileAppender log4j.appender.D.File = E://logs/log.log log4j.appender.D.Append = true log4j.appender.D.Threshold = DEBUG log4j.appender.D.layout = org.apache.log4j.PatternLayout log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n log4j.appender.E = org.apache.log4j.DailyRollingFileAppender log4j.appender.E.File =E://logs/error.log log4j.appender.E.Append = true log4j.appender.E.Threshold = ERROR log4j.appender.E.layout = org.apache.log4j.PatternLayout log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n

web.xml加载 log4j.properties

<!--设置log4j的配置文件位置 --> <context-param> <param-name>log4jConfigLocation</param-name> <param-value>/WEB-INF/classes/properties/log4j.properties</param-value> </context-param> <!--使用监听加载log4j的配置文件 --> <listener> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener>

使用API

private static Logger log = Logger.getLogger(TestController.class);

3.5模块之间的联系,思想概述

前后端一体的springmvc,我们以前都会搭建在一个项目,这次把entity,dao,service,serviceimpl,controller分成了模块进行开发,每个模块用marven进行关联。这样做的好处就是代码整洁清晰,每个层面都是个小的项目,适合分模块进行开发。

4

大功告成

演示效果(一)

演示效果(二)

演示效果(三)

原文发布于微信公众号 - 编程软文(zhuyuansj)

原文发表时间:2017-12-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏码神联盟

碎片化 | 第四阶段-30-Struts2入门示例流程梳理-视频

如清晰度低,可转PC网页观看高清版本: http://v.qq.com/x/page/h056559mlsg.html 入门示例 1.hello Stru...

3319
来自专栏码神联盟

碎片化 | 第四阶段-29-Struts2入门示例1-视频

如清晰度低,可转PC网页观看高清版本: http://v.qq.com/x/page/u0565acptbm.html 入门示例 1.hello Stru...

3338
来自专栏跟着阿笨一起玩NET

Quartz.Net使用总结

1、Quartz区分NET3.5和NET4.0版本,故新建项目的时候,引用的DLL一定要匹配net freamwork的正确版本。

771
来自专栏Java帮帮-微信公众号-技术文章全总结

ajax跨域问题-web开发必会

ajax跨域问题 跨域 同源策略限制 同源策略阻止从一个域上加载的脚本获取或操作另一个域上的文档属性。也就是说,受到请求的 URL 的域必须与当前 Web 页面...

3416
来自专栏java一日一条

深入分析Java ClassLoader原理

大家都知道,当我们写好一个Java程序之后,不是管是CS还是BS应用,都是由若干个.class文件组织而成的一个完整的Java应用程序,当程序在运行时,即会调用...

642
来自专栏葡萄城控件技术团队

七天学会ASP.NET MVC(七)——创建单页应用

系列文章 七天学会ASP.NET MVC (一)——深入理解ASP.NET MVC 七天学会ASP.NET MVC (二)——ASP.NET MVC 数据传递 ...

2926
来自专栏Java3y

纳税服务系统一(用户模块)【简单增删改查、日期组件、上传和修改头像】

前言 为了更好地掌握SSH的用法,使用一个纳税服务系统来练手…..搭建SSH框架环境在上一篇已经详细地说明了。http://blog.csdn.net/hon_...

4509
来自专栏软件开发

前端MVC学习总结(三)——AngularJS服务、路由、内置API、jQueryLite

AngularJS功能最基本的组件之一是服务(Service)。服务为你的应用提供基于任务的功能。服务可以被视为重复使用的执行一个或多个相关任务的代码块。

1123
来自专栏软件开发

前端MVC学习总结(三)——AngularJS服务、路由、内置API、jQueryLite

一、服务 AngularJS功能最基本的组件之一是服务(Service)。服务为你的应用提供基于任务的功能。服务可以被视为重复使用的执行一个或多个相关任务的代码...

1955
来自专栏分布式系统和大数据处理

HttpHandler介绍

在 Http请求处理流程 一文中,我们了解了Http请求的处理过程以及其它一些运作原理。我们知道Http管道中有两个可用接口,一个是IHttpHandler,一...

742

扫码关注云+社区