You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

473 lines
19 KiB
Plaintext

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<%--
Created by IntelliJ IDEA.
User: xvshanshan
Date: 2023/7/3
Time: 9:23
To change this template use File | Settings | File Templates.
--%>
<%@ page import="weaver.conn.RecordSet" %>
<%@ page import="weaver.general.BaseBean" %>
<%@ page import="weaver.general.Util" %>
<%@ page import="com.alibaba.fastjson.JSONObject" %>
<%@ page import="com.alibaba.fastjson.JSONArray" %>
<%@ page import="java.util.regex.Pattern" %>
<%@ page import="java.util.regex.Matcher" %>
<%@ page import="java.io.*" %>
<%@ page import="weaver.hrm.User" %>
<%@ page import="java.text.SimpleDateFormat" %>
<%@ page import="java.util.*" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ page import="org.apache.http.impl.client.CloseableHttpClient" %>
<%@ page import="org.apache.http.impl.client.HttpClients" %>
<%@ page import="org.apache.http.client.methods.HttpPost" %>
<%@ page import="com.alibaba.fastjson.JSON" %>
<%@ page import="org.apache.http.entity.StringEntity" %>
<%@ page import="org.apache.http.client.methods.CloseableHttpResponse" %>
<%@ page import="org.apache.http.HttpStatus" %>
<%@ page import="org.apache.http.HttpEntity" %>
<%@ page import="org.apache.http.util.EntityUtils" %>
<%@ page import="org.apache.http.client.ClientProtocolException" %>
<%@ page import="weaver.hrm.HrmUserVarify" %>
<%@ page import="java.net.URL" %>
<%@ page import="java.net.HttpURLConnection" %>
<%@ page import="org.apache.http.HttpException" %>
<%@ page import="org.apache.http.client.HttpClient" %>
<%@ page import="org.apache.commons.httpclient.methods.PostMethod" %>
<%@ page import="org.apache.commons.httpclient.params.HttpMethodParams" %>
<%@ page import="org.apache.http.NameValuePair" %>
<%@ page import="org.apache.http.message.BasicNameValuePair" %>
<%@ page import="org.apache.http.client.entity.UrlEncodedFormEntity" %>
<%!
//获取分页sql
public static String getPaginationSql(String sql, String orderby, int pageNo, int pageSize) {
String execSql = "";
RecordSet rs = new RecordSet();
String dbType = rs.getDBType();
// String dbType = "oracle";
// String dbType = "sqlserver";
int firstResult = 0;
int endResult = 0;
// 返回分页sql
if("oracle".equals(dbType)){ // rownum
firstResult = pageNo * pageSize + 1;
endResult = (pageNo - 1) * pageSize;
execSql = " select * from ( select tabUN2.*,rownum as my_rownum from ( select tableUN.*,rownum as r from ( " + sql
+ orderby + ") tableUN " + ") tabUN2 where r < " + firstResult + " ) where my_rownum > " + endResult;
}else if("sqlserver".equals(dbType)){
sql="select *,row_number()OVER("+orderby+") as rn from ("+sql+") newt";
execSql = "select * from ( " +
sql+")fy " +
" where rn between ("+pageNo+"-1)*"+pageSize+"+1 and "+pageNo+"*"+pageSize+" ";
}else { // 使用 ROW_NUMBER OVER()分页
firstResult = pageNo * pageSize + 1;
endResult = (pageNo - 1) * pageSize;
execSql = " select * from ( select tabUN2.*,rownum as my_rownum from ( select tableUN.*,rownum as r from ( " + sql
+ orderby +") tableUN ) tabUN2 where r < " + firstResult + " ) where my_rownum > " + endResult;
}
rs.writeLog("execSql---->"+execSql);
return execSql;
}
private boolean isEmpty(String str) {
if ("".equals(str) ||"(null)".equals(str) || str == null) {
return true;
} else {
return false;
}
}
/**
* 获取指定类型的src值的集合
* @param htmlStr
* @param type 标签名称
* @return
*/
public static Set<String> getSrcStr(String htmlStr, String type) {
Set<String> srcs = new HashSet<String>();
String src = "";
Pattern p_src;
Matcher m_src;
// String regEx_img = "<img.*src=(.*?)[^>]*?>"; //图片链接地址
String regEx_src = "<"+type+".*src\\s*=\\s*(.*?)[^>]*?>";
p_src = Pattern.compile
(regEx_src, Pattern.CASE_INSENSITIVE);
m_src = p_src.matcher(htmlStr);
while (m_src.find()) {
// 得到<img />数据
src = m_src.group();
// 匹配<img>中的src数据
Matcher m = Pattern.compile("src\\s*=\\s*\"?(.*?)(\"|>|\\s+)").matcher(src);
while (m.find()) {
srcs.add(m.group(1));
}
}
return srcs;
}
public String httpPostRequest(String param,String url,String token){
BaseBean baseBean = new BaseBean();
JSONObject jsonObject = new JSONObject();
String responseBody="";
try {
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpPost httpPost = new HttpPost(url);
JSONObject jsonString = JSON.parseObject(param);
//设置请求体参数
StringEntity entity = new StringEntity(param,"utf-8");
baseBean.writeLog("entity-param->"+param);
baseBean.writeLog("entity-->"+entity);
entity.setContentEncoding("utf-8");
baseBean.writeLog("entity-utf-8->"+entity);
httpPost.setEntity(entity);
//设置请求头部
httpPost.setHeader("Content-Type", "application/json");
if(token != null && !"".equals(token)){
httpPost.setHeader("Authorization",token);
}
//执行请求,返回请求响应
CloseableHttpResponse response = httpClient.execute(httpPost);
//请求返回状态码
int statusCode = response.getStatusLine().getStatusCode();
baseBean.writeLog("statusCode状态码->"+statusCode);
//请求成功
if (statusCode == HttpStatus.SC_OK && statusCode <= HttpStatus.SC_TEMPORARY_REDIRECT) {
//取出响应体
HttpEntity entity2 = response.getEntity();
//从响应体中解析出token
responseBody = EntityUtils.toString(entity2, "utf-8");
// jsonObject = JSONObject.parseObject(responseBody);
baseBean.writeLog("responseBody->"+responseBody);
// baseBean.writeLog("jsonObject->"+jsonObject);
//token = jsonObject.getString("access_token");
} else {
//请求失败
throw new ClientProtocolException("请求失败,响应码为:" + statusCode);
}
} catch (Exception e) {
e.printStackTrace();
}
return responseBody;
}
/**
* 向指定URL发送GET方法的请求
*
* @param url 发送请求的URL
* @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
* @return URL 所代表远程资源的响应结果
*/
public static String sendGet(String url, String param) {
BaseBean bb = new BaseBean();
String result = "";
String responseMessage="";
BufferedReader in = null;
HttpURLConnection connection = null;
try {
URL getUrl = new URL(url + "?" + param);
bb.writeLog("getUrl-->"+getUrl);
// 打开和URL之间的连接
connection = (HttpURLConnection) getUrl.openConnection();
// 在connect之前设置通用的请求属性
connection.setRequestProperty("accept", "*/*");
connection.setRequestProperty("connection", "Keep-Alive");
connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
connection.setRequestProperty("Charsert", "UTF-8");
// 配置本次连接的Content-typeform表单是"application/x-www-form-urlencoded"json是"application/json"等
// 根据需求自己调整Content-type
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
// 设置连接主机服务器的超时时间15000毫秒
connection.setConnectTimeout(15000);
// 设置读取远程返回的数据时间60000毫秒
connection.setReadTimeout(60000);
// 设置连接方式get
connection.setRequestMethod("GET");
// 建立实际的连接可不写注意connection.getOutputStream会隐含的进行connect。
connection.connect();
// 获取所有响应头字段
Map<String, List<String>> map = connection.getHeaderFields();
// 遍历所有的响应头字段
for (String key : map.keySet()) {
bb.writeLog(key + "--->" + map.get(key));
}
// 定义BufferedReader输入流来读取URL的响应
if (connection.getResponseCode() == 200) {
in = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
String line;
while ((line = in.readLine()) != null) {
result += line;
}
}
} catch (Exception e) {
bb.writeLog("发送GET请求出现异常" + e);
e.printStackTrace();
}
// 使用finally块来关闭输入流
finally {
try {
if (in != null) {
in.close();
}
if (connection != null) {
//关闭连接
connection.disconnect();
}
} catch (Exception e2) {
e2.printStackTrace();
}
}
return result;
}
/**
* 向指定 URL 发送POST方法的请求
*
* @param url 发送请求的 URL
* @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
* @return 所代表远程资源的响应结果
*/
public static String sendPost(String url, String param) {
BaseBean bb = new BaseBean();
String result = "";
PrintWriter out = null;
BufferedReader in = null;
HttpURLConnection connection = null;
try {
URL postUrl = new URL(url);
bb.writeLog("getUrl-->"+postUrl);
// 打开和URL之间的连接
connection = (HttpURLConnection) postUrl.openConnection();
// 在connect之前设置通用的请求属性
connection.setRequestProperty("accept", "*/*");
connection.setRequestProperty("connection", "Keep-Alive");
connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
connection.setRequestProperty("Charsert", "UTF-8");
connection.setConnectTimeout(15000);
connection.setReadTimeout(60000);
// 发送POST请求必须设置如下两行参数要放在http正文内
connection.setDoOutput(true);
connection.setDoInput(true);
// 默认是 GET方式
connection.setRequestMethod("POST");
// Post 请求不使用缓存
connection.setUseCaches(false);
// 配置本次连接的Content-typeform表单是"application/x-www-form-urlencoded"json是"application/json"等
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
connection.connect();
// 参数要放在http正文内
//1.获取URLConnection对象对应的输出流
out = new PrintWriter(connection.getOutputStream());
//2.中文有乱码的需要将PrintWriter改为如下
//out=new OutputStreamWriter(conn.getOutputStream(),"UTF-8")
out.print(param);
out.flush();
//也可以使用DataOutputStream
// DataOutputStream dos=new DataOutputStream(httpConn.getOutputStream());
// dos.writeBytes(param);
// dos.flush();
// dos.close();
// 定义BufferedReader输入流来读取URL的响应
if (connection.getResponseCode() == 200) {
in = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
String line;
while ((line = in.readLine()) != null) {
result += line;
}
}
} catch (Exception e) {
bb.writeLog("发送 POST 请求出现异常!" + e);
e.printStackTrace();
} finally {
try {
if (out != null) {
out.close();
}
if (in != null) {
in.close();
}
if (connection != null) {
//关闭连接
connection.disconnect();
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
return result;
}
/**
* 发送 http post 请求参数以form表单键值对的形式提交。
*/
public static String httpPostForm(String url,Map<String,String> params, Map<String,String> headers,String encode){
BaseBean bb = new BaseBean();
if(encode == null){
encode = "utf-8";
}
String content = null;
CloseableHttpResponse httpResponse = null;
CloseableHttpClient closeableHttpClient = null;
try {
closeableHttpClient = HttpClients.createDefault();
HttpPost httpost = new HttpPost(url);
//设置header
if (headers != null && headers.size() > 0) {
for (Map.Entry<String, String> entry : headers.entrySet()) {
httpost.setHeader(entry.getKey(),entry.getValue());
}
}
bb.writeLog("url="+url+"header="+headers+"encode="+encode);
bb.writeLog("params="+params);
//组织请求参数
List<NameValuePair> paramList = new ArrayList <NameValuePair>();
if(params != null && params.size() > 0){
Set<String> keySet = params.keySet();
for(String key : keySet) {
paramList.add(new BasicNameValuePair(key, params.get(key)));
}
}
httpost.setEntity(new UrlEncodedFormEntity(paramList, encode));
httpResponse = closeableHttpClient.execute(httpost);
HttpEntity entity = httpResponse.getEntity();
content = EntityUtils.toString(entity, encode);
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
httpResponse.close();
} catch (IOException e) {
e.printStackTrace();
}
}
try { //关闭连接、释放资源
closeableHttpClient.close();
} catch (IOException e) {
e.printStackTrace();
}
return content;
}
%>
<%
RecordSet rs = new RecordSet();
BaseBean bb=new BaseBean();
Map<String,String> params = new HashMap<>();//参数
Map<String,String> headers = new HashMap<>();//headers
JSONArray array = new JSONArray();
String ST ="";//获取ST
bb.writeLog("进入getCockpit.jap-->");
User user = HrmUserVarify.getUser(request, response);
int uid = user.getUID();
session = request.getSession(true);
String certified_token = Util.null2String(session.getAttribute("certified_token"));
bb.writeLog("获取sessionTGT=="+certified_token);
bb.writeLog("uid-->"+uid);
//查询邮箱号
//http://${单点系统地址}/sso_server/api/v1/thirdSystem/getList
// String httpPostRequest="https://www.baidu.com/";
String API_KEY = Util.null2String(bb.getPropValue("tjbankEMobileSSO","key"));
String url = Util.null2String(bb.getPropValue("tjbankEMobileSSO","stUrl"));//获取ST的url
String cockpitUrl = Util.null2String(bb.getPropValue("tjbankEMobileSSO","cockpitUrl"));
String thirdUrl = Util.null2String(bb.getPropValue("tjbankEMobileSSO","thirdUrl"));//获取下流系统
//thirdUrl
//获取ST带着下游系统
if (!isEmpty(certified_token)){
params = new HashMap<>();//参数
params.put("tgt",certified_token);
headers = new HashMap<>();//headers
headers.put("API_KEY",API_KEY);
headers.put("MACH_ID","123");
headers.put("MACH_TYPE","0");
headers.put("MACH_IP","127.0.0.1");
String result = httpPostForm(thirdUrl,params,headers,null);
org.json.JSONObject thirdMsg = new org.json.JSONObject(result);
bb.writeLog("进入thirdMsg-->"+thirdMsg);
//String addressUrl="http://${单点系统地址}/sso_server/api/v1/tickets/createST";
params = new HashMap<>();//参数
params.put("tgt",certified_token);
params.put("service",cockpitUrl);
bb.writeLog("==STparams-->"+params);
headers = new HashMap<>();//headers
headers.put("API_KEY",API_KEY);
headers.put("MACH_ID","123");
headers.put("MACH_TYPE","0");
headers.put("MACH_IP","127.0.0.1");
// String param="?user_at_domain%3D"+email;
String responseInfo = httpPostForm(url,params,headers,null);
bb.writeLog("进入TGT-->"+certified_token);
bb.writeLog("进入接口地址-->"+url);
bb.writeLog("进入responseInfo-->"+responseInfo);
if (isEmpty(responseInfo)){
out.print("单点系统接口返回值为null");
return;
}else {
org.json.JSONObject stMsg = new org.json.JSONObject(responseInfo);
if(stMsg.has("ST")){
ST = Util.null2String(stMsg.get("ST").toString());
}else{
out.print(Util.null2String(stMsg.getString("message")));
return;
}
String loginUrl = "";
boolean isEm = Util.null2String(request.getHeader("user-agent")).indexOf("E-Mobile") > -1;
if(isEm == true){
bb.writeLog("是否进来了");
//loginUrl="http://123.151.115.199:8080/bi/APPFW?proc=1&action=viewer&hback=true&db=%E6%99%BA%E6%85%A7%E6%96%B9%E7%95%A5/%E5%89%8D%E7%BD%AE%E9%A1%B5.db?ticket="+ST;
loginUrl="http://168.5.72.9:8080/bi/APPFW?ticket="+ST;
bb.writeLog("是否进来了loginUrl=="+loginUrl);
}
}
//String loginUrl="http://10.16.103.18:9900/coremail/main.jsp?sid="+sid;
// httpPostRequest = httpPostRequest(null, loginUrl, null);
bb.writeLog("loginUrl-->"+loginUrl);
// bb.writeLog("跳转路径-->"+httpPostRequest);
out.print("跳转路径-->"+loginUrl);
out.print("进入驾驶舱成功");
response.sendRedirect(loginUrl);
// return;
}
}else {
out.print("进入驾驶舱系统失败,请先获取标识");
// response.sendRedirect(httpPostRequest);
return;
}
%>
 <script type="text/javascript">
<%--<%=httpPostRequest%>;--%>
// alert("00000");
// next();
//   function next(){
// alert("2222");
// console.log("111111111");
<%--console.log("http://10.16.103.18:9900/coremail/main.jsp?sid="+<%=sid%>);--%>
<%--console.log("sid="+<%=sid%>);--%>
<%--window.location.href= "http://10.16.103.18:9900/coremail/main.jsp?sid="+<%=sid%>;--%>
//   window.location.href= "https://www.baidu.com/";
<%--   }--%>
 </script>