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

2 years ago
<%--
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>