技术标签: java
jsp页面直接嵌入就行,src地址你也可以换成你自己服务器上的地址
通过访问
<embed src="https://vod.300hu.com/4c1f7a6atransbjngwcloud1oss/181bf18e201392241334865921/v.f30.mp4" width="300" height="300">
layui分页操作
引入css js文件
<link rel="stylesheet" href="${pageContext.request.contextPath}/layui/css/layui.css" media="all">
<script src="${pageContext.request.contextPath}/layui/layui.js" charset="utf-8"></script>
加载容器位置
<div id="demo5"></div>
laypage.render:点击跳转后执行 getListData(curr,compositor,conditon)函数,将当前页和产品的状态和排序给它,用ajax请求后台资源
<script>
function paged(data,status) {
layui.use(['laypage', 'layer'],function () {
var laypage = layui.laypage
, layer = layui.layer;
var nums = 6; //每页出现数量;
var count=data.count;
laypage.render({
elem: 'demo5'
,count: count
,limit:6
,curr: location.hash.replace('#!fenye=', '') //获取hash值为fenye的当前页
,hash: 'fenye' //自定义hash值
, jump: function (obj, first) {
//首次不执行
if (!first) {
// alert(currPage);
//do something
var curr = obj.curr;//获取当前点击页码
getListData(curr,compositor,conditon);
}
}
});
});
};
$(function () {
var compositor=1;
var conditon=1;
getListData(1,compositor,conditon);
});
function getListData(currPage,com,cod){
if(com!=null)
{
compositor=com;
}
if (cod!=null)
{
conditon=cod;
}
// alert(compositor);
// alert(conditon);
$.ajax({
url:'${pageContext.request.contextPath}/SortProductByAll.action',
type:'post',
data: {
page:currPage, //当前页数
limit:6,
compositor:compositor,
condition:conditon,
},
dataType:'json',
success: function(data){
$("#freeimages") .empty();
$("#productsum").empty();
if(data!=null){
var str = "";
var products=data.data;
var productsum="";
productsum='共<span class="c_yellow">'+data.count+'</span>个项目'
$("#productsum").append(productsum);
$(products).each(function (index) {
var project=products[index];
//达成率
var num=(project.supmoney*project.numsup)/project.needmoney*100;
num = num.toFixed(2);
if(num>100)
{
num=100;
}
//剩余天数
var day=getday(project.startdate,project.deadline);
var image="/file/"+project.image;
str='<li> <a href="ToProductDetail.action?id='+project.id+'">'+
'<p class="s-p-bg"><img src="'+image+'" alt=""></p>'+
' <p class="s-p-mt">'+project.name+'</p>'+
' <p class="s-p-hide dispno"></p>'+
' <p class="s-p-hide1 dispno">'+project.name+'</p> </a>'+
'<div class="count_down"><span class="count_d" style="width:'+num+'%;"></span></div>'+
'<p class="clearfix">'+
'<span class="s-p-mtxt fl">已筹金额<span class="s-p-t">'+project.supmoney+'</span></span>'+
'<span class="s-p-mtxt fr">剩余时间<span class="s-p-t">'+day+'天</span></span>';
$("#freeimages") .append(str);
// window.location.href = "${pageContext.request.contextPath}/ToMain.action";
})
}else {
alert("响应失败1");
}
// alert(data.count);
paged(data,status);
},
error:function (data) {
alert("响应失败2");
}
});
};
function getday(startTime,endTime)
{
var date1= startTime; //开始时间
var date2 =endTime; //结束时间
var date3 = new Date(date2).getTime() - new Date(date1).getTime(); //时间差的毫秒数
//计算出相差天数
var days=Math.floor(date3/(24*3600*1000))
//计算出小时数
var leave1=date3%(24*3600*1000) //计算天数后剩余的毫秒数
var hours=Math.floor(leave1/(3600*1000))
//计算相差分钟数
var leave2=leave1%(3600*1000) //计算小时数后剩余的毫秒数
var minutes=Math.floor(leave2/(60*1000))
//计算相差秒数
var leave3=leave2%(60*1000) //计算分钟数后剩余的毫秒数
var seconds=Math.round(leave3/1000)
//alert(" 相差 "+days+"天 "+hours+"小时 "+minutes+" 分钟"+seconds+" 秒")
return days;
}
</script>
完整的jsp文件
<%--
Created by IntelliJ IDEA.
User: 廖泽铭
Date: 2019/7/14
Time: 11:17
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>浏览项目</title>
<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/css/public.css" />
<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/css/xc-s-p.css" />
<script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery-1.8.0.min.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/js/scanproj.js"></script>
<link rel="stylesheet" href="${pageContext.request.contextPath}/layui/css/layui.css" media="all">
<script src="${pageContext.request.contextPath}/layui/layui.js" charset="utf-8"></script>
</head>
<body>
<!--头部start-->
<div class="header">
<!--top start-->
<div class="top">
<div class="topauto auto clearfix">
<span class="top_l fl">
<span class="mark_tl1"><a href="">无限道生态</a></span>
<span class="mark_tl2"><a href="">添加到桌面</a></span>
</span>
<span class="top_r fr">
<span><a href="#">${sessionScope.user.fname} </a>,欢迎您</span>
<span style="display:none" class="zhuxiao"><a href="${pageContext.request.contextPath}/LoginOut.action">注销</a></span>
<span class="pagelogin lr1"><a href="${pageContext.request.contextPath}/To_login.action">登陆</a></span>
<span><a class="pageregister lr1" href="${pageContext.request.contextPath}/ToRegister_login.action">注册</a></span>
</span>
</div>
</div>
<!--top end-->
<!--logo start-->
<div class="logo auto clearfix">
<span class="logoo fl mt20"><img src="${pageContext.request.contextPath}/images/logo_08.png" alt="logo"></span>
<div class="search fl mt30">
<form method="get">
<input type="text" placeholder="输入关键字" name="keywords">
<img src="${pageContext.request.contextPath}/images/mark_search_05.png" alt="搜索" type="submit"/>
</form>
</div>
<div class="mark_group fr clearfix">
<span class="mark_logo1 fl"><span class="mlogo_1">新品尝鲜</span><span class="mlogo_2">海量商品第一手尝鲜</span></span>
<span class="mark_logo2 fl"><span class="mlogo_1">全额退款</span><span class="mlogo_2">未达成目标全额退款</span></span>
<span class="mark_logo3 fl"><span class="mlogo_1">全国包邮</span><span class="mlogo_2">部分产品港澳台除外</span></span>
</div>
</div>
<!--logo end-->
<!--nav start-->
<nav class="auto clearfix">
<span class="nav_l fl">
<span class="nav_l1 nav_l4 active"><a href="${pageContext.request.contextPath}/ToMain.action">首页</a></span>
<span class="nav_l2 nav_l4"><a href="${pageContext.request.contextPath}/ToVieProducts.action">项目浏览</a></span>
<span class="nav_l3 nav_l4"><a href="${pageContext.request.contextPath}/ToUser.action">我的众筹</a></span>
</span>
<span class="nav_r fr">
<span class="nav_r1 fl"><a href="${pageContext.request.contextPath}/ToDeproj.action">发起项目</a></span>
<span class="nav_r2 fl"><a href="${pageContext.request.contextPath}/ToHelp.action">新手帮助</a></span>
</span>
</nav>
<!--nav end-->
</div>
<!--头部 结束--> <!--浏览项目主体start-->
<div class="s-p-content">
<div class="s-p-auto auto clearfix" >
<!--左侧目录start-->
<div class="s-p-side fl" style="height:727px">
<dl>
<dt class="sort-com">排序 | compositor</dt>
<dd><input type="radio" id="sort1" checked="checked" name="sort"><label name="sort" class="checked" for="sort1" onclick="getListData(1,1,null)"> 综合排序</label></dd>
<dd><input type="radio" id="sort2" name="sort"><label class="label-sort" name="sort" for="sort2" onclick="getListData(1,2,null)">最新上线</label></dd>
<dd><input type="radio" id="sort3" name="sort"><label class="label-sort" name="sort" for="sort3" onclick="getListData(1,3,null)">最高金额</label></dd>
<dd><input type="radio" id="sort4" name="sort"><label class="label-sort" name="sort" for="sort4" onclick="getListData(1,4,null)">最多支持</label></dd>
<dt class="sort-con">状态 | condition</dt>
<dd><input type="radio" id="state1" checked="checked" name="state"><label name="state" class="checked" for="state1" onclick="getListData(1,null,1)">全部</label></dd>
<dd><input type="radio" id="state2" name="state"><label name="state" for="state2" onclick="getListData(1,null,2)">众筹中</label></dd>
<dd><input type="radio" id="state3" name="state"><label name="state" for="state3" onclick="getListData(1,null,3)">即将开始</label></dd>
<dd><input type="radio" id="state4" name="state"><label name="state" for="state4" onclick="getListData(1,null,4)">众筹成功</label></dd>
</dl>
</div>
<!--左侧目录end-->
<!--主体start-->
<div class="s-p-main fl">
<h3 id="productsum">
</h3>
<ul class="main_proj" >
<div id="freeimages">
</div>
<div class="layui-progress">
<div class="layui-progress-bar" lay-percent="10%"></div>
</div>
</ul>
</div>
<!--主体end-->
</div>
<div style=" width:700px;margin-left:310px;">
<ul class="s-p-index clearfix" style="display:block;margin-left:500px;">
<div id="demo5"></div>
</ul>
</div>
</div>
<!--浏览项目主体end-->
<!--尾部start-->
<div class="footer">
<div class="footer_auto auto clearfix">
<div class="footer_a1 fl">
<div class="footer_p pt50">
<span class="footer_process1 w150br30">发起人创建项目</span>
<span class="footer_process">></span>
<span class="footer_process2 w150br30">项目获得支持</span>
<span class="footer_process">></span>
<span class="footer_process3 w150br30">发起人发放回报</span>
<span class="footer_process">></span>
<span class="footer_process4 w150br30">用户得到回报</span>
</div>
<ul>
<li><a href="">关于我们</a></li>
<li><a href="">服务条款</a></li>
<li><a href="">项目教程</a></li>
<li><a href="">新手帮助</a></li>
<li><a href="">常见问题</a></li>
<li class="border_none"><a href="">意见反馈</a></li>
</ul>
</div>
<div class="footer_a2 fl">
<p class="footer_ewm">微信公众号</p>
<img src="${pageContext.request.contextPath}/images/foot_ewm_05.png" alt="">
</div>
<div class="footer_a3 fr">
<p class="footer_inform0"><span>联系我们(9:00 - 18:00)</span></p>
<p class="footer_inform1">400-000-0000</p>
<p class="footer_inform2">[email protected]</p>
<p class="footer_inform0">qq群:123456789</p>
</div>
</div>
<div class="footer_bottom">版权所有</div>
</div>
<!--尾部end-->
</body>
</html>
<script>
function paged(data,status) {
layui.use(['laypage', 'layer'],function () {
var laypage = layui.laypage
, layer = layui.layer;
var nums = 6; //每页出现数量;
var count=data.count;
laypage.render({
elem: 'demo5'
,count: count
,limit:6
,curr: location.hash.replace('#!fenye=', '') //获取hash值为fenye的当前页
,hash: 'fenye' //自定义hash值
, jump: function (obj, first) {
//首次不执行
if (!first) {
// alert(currPage);
//do something
var curr = obj.curr;//获取当前点击页码
getListData(curr,compositor,conditon);
}
}
});
});
};
$(function () {
var compositor=1;
var conditon=1;
getListData(1,compositor,conditon);
});
function getListData(currPage,com,cod){
if(com!=null)
{
compositor=com;
}
if (cod!=null)
{
conditon=cod;
}
// alert(compositor);
// alert(conditon);
$.ajax({
url:'${pageContext.request.contextPath}/SortProductByAll.action',
type:'post',
data: {
page:currPage, //当前页数
limit:6,
compositor:compositor,
condition:conditon,
},
dataType:'json',
success: function(data){
$("#freeimages") .empty();
$("#productsum").empty();
if(data!=null){
var str = "";
var products=data.data;
var productsum="";
productsum='共<span class="c_yellow">'+data.count+'</span>个项目'
$("#productsum").append(productsum);
$(products).each(function (index) {
var project=products[index];
//达成率
var num=(project.supmoney*project.numsup)/project.needmoney*100;
num = num.toFixed(2);
if(num>100)
{
num=100;
}
//剩余天数
var day=getday(project.startdate,project.deadline);
var image="/file/"+project.image;
str='<li> <a href="ToProductDetail.action?id='+project.id+'">'+
'<p class="s-p-bg"><img src="'+image+'" alt=""></p>'+
' <p class="s-p-mt">'+project.name+'</p>'+
' <p class="s-p-hide dispno"></p>'+
' <p class="s-p-hide1 dispno">'+project.name+'</p> </a>'+
'<div class="count_down"><span class="count_d" style="width:'+num+'%;"></span></div>'+
'<p class="clearfix">'+
'<span class="s-p-mtxt fl">已筹金额<span class="s-p-t">'+project.supmoney+'</span></span>'+
'<span class="s-p-mtxt fr">剩余时间<span class="s-p-t">'+day+'天</span></span>';
$("#freeimages") .append(str);
// window.location.href = "${pageContext.request.contextPath}/ToMain.action";
})
}else {
alert("响应失败1");
}
// alert(data.count);
paged(data,status);
},
error:function (data) {
alert("响应失败2");
}
});
};
function getday(startTime,endTime)
{
var date1= startTime; //开始时间
var date2 =endTime; //结束时间
var date3 = new Date(date2).getTime() - new Date(date1).getTime(); //时间差的毫秒数
//计算出相差天数
var days=Math.floor(date3/(24*3600*1000))
//计算出小时数
var leave1=date3%(24*3600*1000) //计算天数后剩余的毫秒数
var hours=Math.floor(leave1/(3600*1000))
//计算相差分钟数
var leave2=leave1%(3600*1000) //计算小时数后剩余的毫秒数
var minutes=Math.floor(leave2/(60*1000))
//计算相差秒数
var leave3=leave2%(60*1000) //计算分钟数后剩余的毫秒数
var seconds=Math.round(leave3/1000)
//alert(" 相差 "+days+"天 "+hours+"小时 "+minutes+" 分钟"+seconds+" 秒")
return days;
}
var user="${sessionScope.user.fname}"
if(user!=null){
$(".lr1").hide()
$(".zhuxiao").show();
}
</script>
Controller层:switch嵌套switch感觉代码重复率过高,但也没有想到其他解决方法,就先这样
@Controller
public class SortProductController {
@Autowired
private ProjectService projectService;
//综合排序
@RequestMapping(value="/SortProductByAll.action",method = RequestMethod.POST)
@ResponseBody
public PageResult<List<Project>> SortProductByAll(int page , int limit,int compositor,int condition) {
List<Project> projectList = null;
int count = 0;
//会自动传入limit和page
System.out.println("11111111111111111111111111111111111111111111111111");
System.out.println(page);
System.out.println(limit);
// 根据status来判断排序的种类
switch (compositor)
{
case 1:
switch (condition)
{
case 1:
//综合排序
// 分页查询,需要参数code(要为0,不然数据表格数据显示不出),msg(返回的消息),data(表格显示的数据),totals(查询到数据的总记录数),
projectList = projectService.sortProductByAll(page, limit);
//返回的总记录数
count = projectService.findProjectPageCount();
break;
case 2:
//综合排序+众筹中
// 分页查询,需要参数code(要为0,不然数据表格数据显示不出),msg(返回的消息),data(表格显示的数据),totals(查询到数据的总记录数),
projectList = projectService.sortProductingByAll(page, limit);
//返回众筹中的总记录数
count = projectService.findProjectingPageCount();
break;
case 3:
//综合排序 即将开始
// 分页查询,需要参数code(要为0,不然数据表格数据显示不出),msg(返回的消息),data(表格显示的数据),totals(查询到数据的总记录数),
projectList = projectService.sortProductWaitByAll(page, limit);
//返回的即将开始总记录数
count = projectService.findProjectWaitPageCount();
break;
case 4:
//综合排序 众筹完成
// 分页查询,需要参数code(要为0,不然数据表格数据显示不出),msg(返回的消息),data(表格显示的数据),totals(查询到数据的总记录数),
projectList = projectService.sortProductENdByAll(page, limit);
//返回的众筹完成总记录数
count = projectService.findProjectEndPageCount();
break;
default:break;
}
break;
case 2:
switch (condition)
{
//最新上线
case 1:
//最新上线
projectList = projectService.sortProductByDay(page, limit);
//返回的总记录数
count = projectService.findProjectPageCount();
break;
//最新上线+众筹中
case 2:
projectList = projectService.sortProductingByDay(page, limit);
//返回众筹中的总记录数
count = projectService.findProjectingPageCount();
break;
//最新上线+即将开始
case 3:
projectList = projectService.sortProductWaitByDay(page, limit);
count = projectService.findProjectWaitPageCount();
break;
//最新上线+完成
case 4:
projectList = projectService.sortProductENdByDay(page, limit);
count = projectService.findProjectEndPageCount();
break;
default:break;
}
break;
case 3:
switch (condition)
{
//根据最高金额排序
case 1:
//根据最高金额排序
projectList = projectService.sortProductByMoney(page, limit);
//返回的总记录数
count = projectService.findProjectPageCount();
break;
//根据最高金额排序+众筹中
case 2:
projectList = projectService.sortProductingByMoney(page, limit);
count = projectService.findProjectingPageCount();
break;
//根据最高金额排序+即将开始
case 3:
projectList = projectService.sortProductWaitByMoney(page, limit);
count = projectService.findProjectWaitPageCount();
break;
//根据最高金额排序+完成
case 4:
projectList = projectService.sortProductENdByMoney(page, limit);
count = projectService.findProjectEndPageCount();
break;
default:break;
}
break;
case 4:
switch (condition)
{
//根据 //最多支持
case 1:
//最多支持
projectList = projectService.sortProductBySup(page, limit);
//返回的总记录数
count = projectService.findProjectPageCount();
break;
//最多支持+众筹中
case 2:
projectList = projectService.sortProductingBySup(page, limit);
count = projectService.findProjectingPageCount();
break;
//最多支持+即将开始
case 3:
projectList = projectService.sortProductWaitBySup(page, limit);
count = projectService.findProjectWaitPageCount();
break;
//最多支持+完成
case 4:
projectList = projectService.sortProductENdBySup(page, limit);
count = projectService.findProjectEndPageCount();
break;
default:break;
}
break;
default:break;
}
PageResult<List<Project>> listPageResult = new PageResult<List<Project>>("", projectList, 0, count);
return listPageResult;
}
}
返回的 PageResult
package com.lzm.utils;
public class PageResult<T> {
private String msg;
//返回的数据
private T data;
private int code;
//总记录数
private int count;
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
public PageResult(String msg, T data, int code, int count) {
this.msg = msg;
this.data = data;
this.code = code;
this.count = count;
}
}
Service层就不贴了
文章浏览阅读2.1k次。FX3 JLINK调试是一个有些麻烦的事情,经常有些莫名其妙的问题。 设置参见 c:\Program Files (x86)\Cypress\EZ-USB FX3 SDK\1.3\doc\firmware 下的 EzUsbSuite_UG.pdf 文档。 常见问题: 1.装了多个版本的jlink,使用了未注册或不适当的版本 选择一个正确的版本。JLinkARM_V408l,JLinkA_ezusbsuite_qsg.pdf
文章浏览阅读2.6k次。** 本文仅通过用openGL+QT简单实现二进制stl文件读取显示并通过鼠标旋转缩放, 是比较入门的级别,由于个人能力有限,新手级别,所以未能施加光影灯光等操作, 未能让显示的stl文件更加真实。****效果图:**1. main.cpp```cpp#include "widget.h"#include <QApplication>int main(int argc, char *argv[]){ QApplication a(argc, argv); _qopengl如何鼠标控制旋转
文章浏览阅读943次,点赞22次,收藏19次。以大规模预训练语言模型为基础的chatgpt成功出圈,在近几日已经给人工智能板块带来了多次涨停,这足够说明这一风口的到来。而作为曾经的风口“知识图谱”而言,如何找到其与chatgpt之间的区别,找好自身的定位显得尤为重要。形式化知识和参数化知识在表现形式上一直都是大家考虑的问题,两种技术都应该有自己的定位与价值所在。知识图谱构建往往是抽取式的,而且往往包含一系列知识冲突检测、消解过程,整个过程都能溯源。以这样的知识作为输入,能在相当程度上解决当前ChatGPT的事实谬误问题,并具有可解释性。
文章浏览阅读1.3k次。最重要的一点,一定是degbug的方式启动,不然热部署不会生效,注意,注意!_tomcat热部署
文章浏览阅读10w+次,点赞56次,收藏482次。html5 ,用css去修饰自己的个人主页代码如下:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xh..._个人主页源码
文章浏览阅读201次。开发者(KaiFaX)面向全栈工程师的开发者专注于前端、Java/Python/Go/PHP的技术社区来源:开源最前线链接:https://github.com/svenstaro/gen..._程序员怎么上班摸鱼
文章浏览阅读1.3k次。改变Block UI界面的尺寸_ug二次开发 调整 对话框大小
文章浏览阅读1.3w次,点赞18次,收藏291次。基于深度学习的股票预测数据获取数据转换LSTM模型搭建训练模型预测结果数据获取采用tushare的数据接口(不知道tushare的筒子们自行百度一下,简而言之其免费提供各类金融数据 , 助力智能投资与创新型投资。)python可以直接使用pip安装tushare!pip install tushareCollecting tushare Downloading https://files.pythonhosted.org/packages/17/76/dc6784a1c07ec040e74_基于深度学习的股票操纵识别研究python代码
文章浏览阅读2k次。【IT168 厂商动态】 近日,北京中科网威(NETPOWER)工业级防火墙通过了中国电力工业电力设备及仪表质量检验测试中心(厂站自动化及远动)测试,并成为中国首家通过电力协议访问控制专业测评的工业级防火墙生产厂商。 北京中科网威(NETPOWER)工业级防火墙专为工业及恶劣环境下的网络安全需求而设计,它采用了非X86的高可靠嵌入式处理器并采用无风扇设计,整机功耗不到22W,具备极_电力行业防火墙有哪些
文章浏览阅读206次。/*烟台大学计算机学院 作者:董玉祥 完成日期: 2017 12 3 问题描述:二叉树排序树中查找的路径 */#include #include #define MaxSize 100typedef int KeyType; //定义关键字类型typedef char InfoType;typedef struct node
文章浏览阅读775次。当时老师一定会告诉你,这个一个"warning"的报警,可以不用管它,也确实如此。不过,这条报警信息我们至少可以知道一点,就是scanf函数调用完之后是有一个返回值的,下面我们就要对scanf返回值进行详细的讨论。并给出在编程时利用scanf的返回值可以实现的一些功能。_c语言ignoring return value
文章浏览阅读9.6k次。十四五规划下,数据安全成为国家、社会发展面临的重要议题,《数据安全法》《个人信息保护法》《关键信息基础设施安全保护条例》已陆续施行。如何做好“数据安全建设”是数字时代的必答题。_数字医疗服务保障方案