技术标签: 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层就不贴了
文章浏览阅读3w次,点赞56次,收藏92次。IDEA翻译插件Translation的安装,百度翻译的应用ID和秘钥申请下载插件使用方法字体和接口切换开通百度翻译api注意事项大家平时肯定遇到过这种情况,不管从抖音还是快手或者其他地方获得的一碗毒鸡汤,下肚以后心潮澎湃,凌晨一点也要翻开电脑,奋发图强到势不可挡,立志要成为技术大神。可当打开了编程工具,点进代码底层,通篇的陌生单词还是给了自己一盆冷水。嗯,我其实可以看点搞笑的段子。IDEA实时翻译插件Translation,今天他来了,这款翻译插件支持谷歌、有道和百度api接口,使用的时候我们只需_idea百度翻译密钥
文章浏览阅读2.2k次,点赞6次,收藏16次。在一个目录下有多个cpp文件,和头文件main.cpphead.h。_cmakelists.txt
文章浏览阅读290次。将下列几行代码添加至public/.htaccess中。最后重启小皮就可以成功隐藏index.php。找到对应要隐藏的网址的文件。_thinkphp隐藏index.php
文章浏览阅读1.3k次。上世纪九十年代,“态势感知”带着它引以为傲的军方(美国空军)血统,空降到信息安全领域。经过几十年的演进,态势感知已经“身居高位”,在美国的国家安全和其他个别行业得到了极大的发展和应用。其目前的标准定义是“在一定的时间和空间范围内,企业的安全态势及其威胁环境的感知。理解这两者的含义以及意味的风险,并对他们未来的状态进行预测。”该定义决定了安全态势感知平台不应该是一个传统的安全攻防产品,而是一个兼具数据分析和异常检测的发现预警平台。在国内,最近几年,尤其是随着2018年国家《网络安全法》的出台,安全态势感知迅_企业安全态势感知
文章浏览阅读554次。近年来,随着全球范围内网络实战发生的频率越高,采用的技术难度越高,各国之间也加大对攻防演练的重视。不管是网络实战还是攻防演练的对抗过程中,防守方不仅要防止外部突破,也要。在网络安全形势日趋复杂的环境下,攻击手段层出不穷,攻击工具日益先进。比如,黑客在取得外网可访问的单台服务器权限后,下一步往往以所控制的服务器为跳板向未直接暴露在公网的内网服务器进行进一步渗透。此外,。为了防止企业或机构的内网被攻击者当做后花园畅游,乃至被拖库后还不自知等情况发生,。_内网横向威胁感知解决方案
文章浏览阅读108次。最长湍流子数组有关题目题解题目链接:最长湍流子数组有关题目当 A 的子数组 A[i], A[i+1], ..., A[j] 满足下列条件时,我们称其为湍流子数组:若 i <= k < j,当 k 为奇数时, A[k] > A[k+1],且当 k 为偶数时,A[k] < A[k+1];或 若 i <= k < j,当 k 为偶数时,A[k] > A[k+1] ,且当 k 为奇数时, A[k] < A[k+1]。也就是说,如果比较符号在子数组中的
文章浏览阅读4.8w次,点赞13次,收藏8次。使用VScode 调试的时候提示Unable to start debugging. Launch options string provided by the project system is invalid. Unable to determine path to debugger. Please specify the "MIDebuggerPath" option.提示这个错误。..._unable to start debugging. launch options string provided by the project sys
文章浏览阅读3.8k次,点赞9次,收藏22次。图像分类和目标检测中的正负样本划分以及架构理解_图像配准数据的正负样本
文章浏览阅读53次。原文地址:http://maoyidao.iteye.com/blog/1663193一个仅仅部署在4台服务器上的服务,每秒向Database写入数据超过100万行数据,每分钟产生超过1G的数据。而每台服务器(8核12G)上CPU占用不到100%,load不超过5。这是怎么做到呢?下面将给你描述这个架构,它的核心是一个高效缓冲区设计,我们对它的要求是:1,该缓存区要尽量简单2,尽量避免..._java高性能框架 dis
文章浏览阅读484次。一 读书分享微信读书/知乎严选/京东读书…方法论《如何高效学习》《番茄工作法图解》《刻意练习》《你一年的8760小时》…素质提升《逆商:我们该如何应对坏事件》《关键对话》《非暴力沟通》《逆商》…人物传记《特斯拉》《达芬奇》…IT技术书籍笔记后台《Java编程的逻辑》前端Android《Android进阶之光》《第一行代码》…小程序官方文档数据《python》二 资源分享好的学习资料 = 技术文档 + 源代码 + 视频三 个人博客导航M_博客导航
文章浏览阅读9.2k次。本文纯属一届小码农对java使用过程的体验感触 目录:初遇java编程语言与java的擦肩深入java跨平台性开源支持web的支撑初遇java编程语言刚上大学的时候,完全是个电脑盲。刚入学学的计算机普及知识就是visual basic语言,可视化的组件编程语言,这个语言跟我第一份工作Delphi语言的是一个性质的,都是拖放控件,实现可视化开发,跟现在用着的extjs 中architec
文章浏览阅读1.7k次。在物联网兴起之前,OPC这玩意就出来了,但是知道和用的人并不多。 OPC技术从某些角度来说,可以说还是掌握在比较少数的一部分人手中。这可能也是由于工控行业相对闭塞和保守的原因造成的。 就目前来说关于OPC开发的SDK或者开源项目还是比较多的,我就说几个基于C++的主流项目,LightOPC、OpcWorkshop、WtopcSvr,国内的也还有一些公司就是基于这几个主流项目然后发布..._wtopcsvr.dll 安装