天天看點

1小時輕松上手springmvc,視訊網站背景開發3.1檔案上傳3.2關聯表的查詢3.3分頁查詢3.4Spring整合log4j3.5子產品之間的聯系,思想概述示範效果(一)示範效果(二)示範效果(三)

原創 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

項目的結構

1小時輕松上手springmvc,視訊網站背景開發3.1檔案上傳3.2關聯表的查詢3.3分頁查詢3.4Spring整合log4j3.5子產品之間的聯系,思想概述示範效果(一)示範效果(二)示範效果(三)

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

大功告成

示範效果(一)

1小時輕松上手springmvc,視訊網站背景開發3.1檔案上傳3.2關聯表的查詢3.3分頁查詢3.4Spring整合log4j3.5子產品之間的聯系,思想概述示範效果(一)示範效果(二)示範效果(三)

示範效果(二)

1小時輕松上手springmvc,視訊網站背景開發3.1檔案上傳3.2關聯表的查詢3.3分頁查詢3.4Spring整合log4j3.5子產品之間的聯系,思想概述示範效果(一)示範效果(二)示範效果(三)

示範效果(三)

1小時輕松上手springmvc,視訊網站背景開發3.1檔案上傳3.2關聯表的查詢3.3分頁查詢3.4Spring整合log4j3.5子產品之間的聯系,思想概述示範效果(一)示範效果(二)示範效果(三)