这个是 ActiveX 的库吧,包装成一个组件了,所以你得找个 jacob 这样的操作 ActiveX 对象的库 API.
创新互联IDC提供业务:服务器托管,成都服务器租用,服务器托管,重庆服务器租用等四川省内主机托管与主机租用业务;数据中心含:双线机房,BGP机房,电信机房,移动机房,联通机房。
本文将用简洁的代码构建一个springboot的拦截器。拦截器的使用很简单,定义一个自己的拦截器,向配置中添加一下就可以使用。为了方便,之后又引入了注解。
目录和概述
概述
假设需求:访问项目的controller是都要进行"token验证",除了某些像登录之类的方法。
项目结构:
TokenInterceptor.java 自定义拦截器
InterceptorConfig.java 添加拦截器进入项目
NoNeedToken.java 自定义注解
TestController.java 测试接口
1、自定义拦截器
在 TokenInterceptor.java 中输入以下代码,以下的代码将生成一个在请求到达controller前进行拦截的拦截器
import com.alibaba.fastjson.JSONObject;
import org.springframework.lang.Nullable;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.PrintWriter;
import java.util.Arrays;
import java.util.List;
@Component
public class TokenInterceptor implements HandlerInterceptor {undefined
// 假设现在的token有如下数据
List tokenList = Arrays.asList("111", "222", "333");
// 这个方法是在访问接口之前执行的,我们只需要在这里写验证登陆状态的业务逻辑,就可以在用户调用指定接口之前验证登陆状态了
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {undefined
// 设置返回为json格式,使用UTF-8
response.setCharacterEncoding("UTF-8");
response.setContentType("application/json; charset=utf-8");
String token = request.getHeader("token");
PrintWriter out;
// 之后写你的判断逻辑:return true是通过拦截器,可以继续访问controller,return false是不通过
if (token == null || !tokenList.contains(token)) {undefined
// 如果失败了返回{state:"false", msg:"token is null or wrong"}
JSONObject res = new JSONObject();
res.put("state","false");
res.put("msg","token is null or wrong");
out = response.getWriter();
out.append(res.toString());
return false;
}
// 否则返回true 进入controller
return true;
}
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable ModelAndView modelAndView) throws Exception {undefined
}
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable Exception ex) throws Exception {undefined
}
}
————————————————
版权声明:本文为CSDN博主「魔王别嚣张」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:
银行一般有区域主机和前置机
银行不会让你直接连接重要数据库 所以需要有个前置机专门供外面通讯查询
前置机都是银行提供的
一般开放socket端口 供各类设备接入查询
至于socket通讯规约 各银行都有区别 例如中国银行就是8583
所以实现功能和什么语言关系不大 关键是实现socket通讯
java嘛 可以用mina之类的实现tcp socket通讯
这个可能是你没有权限访问该url,或者是你需要安装新的证书,而这个证书是由服务器提供的,你得跟服务器那边联系了!
VBA的代码没有,参考下面的java代码:
/**
* 将对象插入前置机数据库中p
* @param exData 要插入的数据
* @param xmlFileName xml文件路径
* @param index 自增长主键
* @throws Exception
*/
public void insert2zwdt(ExData exData, String xmlFileName, Long index) throws Exception{
//================================
Connection conn = getConnection();
conn.setAutoCommit(false); // 设置手动提交
PreparedStatement pstmt=null;
File file=new File(xmlFileName);
InputStream in = new FileInputStream(file);
String sql="insert into exdata_sending(NM_SEQ_ID,ST_SOURCE,ST_KEY,ST_VERSION,ST_VALUE,ST_OP,ST_MEMO,BL_DATA,ST_DEST) "
+ "values(?,?,?,?,?,?,?,?,?)";
pstmt=conn.prepareStatement(sql);
pstmt.setInt(1, index.intValue());
pstmt.setString(2, exData.getStSource());
pstmt.setString(3, exData.getStKey());
pstmt.setString(4, exData.getStVersion());
pstmt.setString(5, exData.getStValue());
pstmt.setString(6, exData.getStOp());
pstmt.setString(7, exData.getStMemo());
pstmt.setBinaryStream(8, in, file.length());
pstmt.setString(9, exData.getStDest());
pstmt.execute();
conn.commit();
pstmt.close();
}