springboot+thymeleaf+maven+html+css实现精美大方好看官网模板完整源码
·
很多时候,我们在网上搜索官网demo源码时,总是找不到适合自己的,要么不好看要么源码复杂要么跟自己擅长的开发语言不同。
前端+后台。
springboot真的好用
springboot+thymeleaf+maven+html+css
1.项目目录结构:

2.配置文件application.yml,启动完成,端口号8889访问(http://localhost:8889):
server:
port: 8889
spring:
jackson:
date-format: yyyy-MM-dd HH:mm:ss #可以对某个实体类属性做单独处理
time-zone: GMT+8
serialization:
indent-output: false #格式化输出
fail-on-empty-beans: true #忽略无法转换的对象
default-property-inclusion: NON_NULL #设置空如何序列化(NON_EMPTY: 为空null或""不序列化)
deserialization:
fail-on-unknown-properties: true #允许对象忽略json中不存在的属性
thymeleaf:
enabled: true
logging:
level:
com.yxsd.website: debug
package com.sys.website.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import com.sys.website.server.WebSocketServer;
@Controller
public class IndexController {
@Autowired
private WebSocketServer webSocketServer;
/**
*
* <p>Description: 首页</p>
* @return
*/
@RequestMapping(value="/")
public ModelAndView index() {
return getIndexInfo();
}
@RequestMapping(value="/index")
public ModelAndView indexIndex() {
return getIndexInfo();
}
@RequestMapping(value="/index.html")
public ModelAndView indexHtml() {
return getIndexInfo();
}
@RequestMapping(value="/index.htm")
public ModelAndView indexHtm() {
return getIndexInfo();
}
private ModelAndView getIndexInfo() {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("index");
return modelAndView;
}
// @RequestMapping(value="/app/{sid}")
// public void app(Session session,@PathVariable String sid) {
// webSocketServer.onOpen(session, sid);
// }
}
文件流形式读取视频播放:
package com.sys.website.controller;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.OutputStream;
import java.io.RandomAccessFile;
import java.nio.charset.StandardCharsets;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class NewsController {
/**
*
* <p>Description: 新闻中心</p>
* @return
*/
@RequestMapping(value="/news")
public ModelAndView getAppInfo() {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("news");
return modelAndView;
}
/**
*
* <p>Description: 新闻详情</p>
* @param id
* @return
*/
@RequestMapping(value="/news/detail/{id}")
public ModelAndView listNewsForPageWeb(@PathVariable String id) {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("new_detail");
return modelAndView;
}
@RequestMapping(value="/news/video/{id}")
public void video(@PathVariable String id,HttpServletRequest request,HttpServletResponse response) throws Exception {
response.reset();
//获取从那个字节开始读取文件
String rangeString = request.getHeader("Range");
try {
//获取响应的输出流
OutputStream outputStream = response.getOutputStream();
File file = new File("/gw/video/"+id);
if(file.exists()){
RandomAccessFile targetFile = new RandomAccessFile(file, "r");
long fileLength = targetFile.length();
//播放
if(rangeString != null){
long range = Long.valueOf(rangeString.substring(rangeString.indexOf("=") + 1, rangeString.indexOf("-")));
//设置内容类型
response.setHeader("Content-Type", "video/mp4");
//设置此次相应返回的数据长度
response.setHeader("Content-Length", String.valueOf(fileLength - range));
//设置此次相应返回的数据范围
response.setHeader("Content-Range", "bytes "+range+"-"+(fileLength-1)+"/"+fileLength);
//返回码需要为206,而不是200
response.setStatus(HttpServletResponse.SC_PARTIAL_CONTENT);
//设定文件读取开始位置(以字节为单位)
targetFile.seek(range);
}else {//下载
//设置响应头,把文件名字设置好
response.setHeader("Content-Disposition", "attachment; filename="+id );
//设置文件长度
response.setHeader("Content-Length", String.valueOf(fileLength));
//解决编码问题
response.setHeader("Content-Type","application/octet-stream");
}
byte[] cache = new byte[1024 * 300];
int flag;
while ((flag = targetFile.read(cache))!=-1){
outputStream.write(cache, 0, flag);
}
}else {
String message = "file:"+id+" not exists";
//解决编码问题
response.setHeader("Content-Type","application/json");
outputStream.write(message.getBytes(StandardCharsets.UTF_8));
}
outputStream.flush();
outputStream.close();
} catch (FileNotFoundException e) {
} catch (IOException e) {
}
}
}
3.首页轮播图:

含一、二级菜单

企业概况

新闻中心

新闻中心进去》新闻详情

产品实例等

产品特点

产品介绍

共享模块

联系我们,含地图:

完整源码 前往下载
更多推荐
所有评论(0)