| | |
| | | return tranReq.returnJsonState(true, null, null);
|
| | | }
|
| | |
|
| | | public ModelAndView updateOrder(SMTAIServerRequest tranReq) throws Exception {
|
| | | String title = tranReq.convParamToString("title", true);
|
| | | String orderId = tranReq.convParamToString("orderId", true);
|
| | | String wstypeid = tranReq.convParamToString("wstypeid", false);
|
| | | String wstypename = tranReq.convParamToString("wstypename", false);
|
| | | String urgencylevel = tranReq.convParamToString("urgencylevel", false);
|
| | | String shape = tranReq.convParamToString("shape", false);
|
| | | String deadline = tranReq.convParamToString("deadline", false);
|
| | | String stepstatus = tranReq.convParamToString("stepstatus", false);
|
| | | String originatetypetext = tranReq.convParamToString("originatetypetext", false);
|
| | | String content = tranReq.convParamToString("content", false);
|
| | | String address = tranReq.convParamToString("address", false);
|
| | | String stepid = tranReq.convParamToString("stepid", false);
|
| | | String org = tranReq.convParamToString("org", false);
|
| | | String deptname = tranReq.convParamToString("deptname", false);
|
| | | String dealtime = tranReq.convParamToString("dealtime", false);
|
| | | String username = tranReq.convParamToString("username", false);
|
| | | String contactname = tranReq.convParamToString("contactname", false);
|
| | | String contactphone = tranReq.convParamToString("contactphone", false);
|
| | | String acceptuserid = tranReq.convParamToString("acceptuserid", false);
|
| | | String acceptusername = tranReq.convParamToString("acceptusername", false);
|
| | | String acceptuseraccount = tranReq.convParamToString("acceptuseraccount", false);
|
| | | String dealuserid = tranReq.convParamToString("dealuserid", false);
|
| | | String dealusername = tranReq.convParamToString("dealusername", false);
|
| | | String dealuseraccount = tranReq.convParamToString("dealuseraccount", false);
|
| | | String flowstatus = tranReq.convParamToString("flowstatus", false);
|
| | | String attachment = tranReq.convParamToString("attachment", false);
|
| | | String creator = tranReq.convParamToString("creator", false);
|
| | | String isplan = tranReq.convParamToString("isplan", false);
|
| | | String originateid = tranReq.convParamToString("originateid", false);
|
| | | String appointstarttime = tranReq.convParamToString("appointstarttime", false);
|
| | | String appointendtime = tranReq.convParamToString("appointendtime", false);
|
| | | String parentid = tranReq.convParamToString("parentid", false);
|
| | | String relateids = tranReq.convParamToString("relateids", false);
|
| | | String oname = tranReq.convParamToString("oname", false);
|
| | | String otype = tranReq.convParamToString("otype", false);
|
| | | SMTDatabase db = SMTAIServerApp.getApp().allocDatabase();
|
| | | try {
|
| | |
|
| | | db.executeSQL(
|
| | | "UPDATE work_order_list SET "
|
| | | + "title = ?, "
|
| | | + "wstypeid = ?, "
|
| | | + "wstypename = ?, "
|
| | | + "urgencylevel = ?, "
|
| | | + "shape = ?, "
|
| | | + "deadline = ?, "
|
| | | + "stepstatus = ?, "
|
| | | + "originatetypetext = ?, "
|
| | | + "content = ?, "
|
| | | + "address = ?, "
|
| | | + "step_id = ?, "
|
| | | + "org = ?, "
|
| | | + "deptname = ?, "
|
| | | + "dealtime = ?, "
|
| | | + "username = ?, "
|
| | | + "contactname = ?, "
|
| | | + "contactphone = ?, "
|
| | | + "acceptuserid = ?, "
|
| | | + "acceptusername = ?, "
|
| | | + "acceptuseraccount = ?, "
|
| | | + "dealuserid = ?, "
|
| | | + "dealusername = ?, "
|
| | | + "dealuseraccount = ?, "
|
| | | + "flowstatus = ?, "
|
| | | + "attachment = ?, "
|
| | | + "creator = ?, "
|
| | | + "createtime = ?, "
|
| | | + "isplan = ?, "
|
| | | + "originateid = ?, "
|
| | | + "appointstarttime = ?, "
|
| | | + "appointendtime = ?, "
|
| | | + "parentid = ?, "
|
| | | + "relateids = ?, "
|
| | | + "is_notify = ?, "
|
| | | + "oname = ?, "
|
| | | + "otype = ? "
|
| | | + "WHERE order_id = ?",
|
| | | new Object[]{
|
| | | title,
|
| | | wstypeid,
|
| | | wstypename,
|
| | | urgencylevel,
|
| | | shape,
|
| | | deadline,
|
| | | stepstatus,
|
| | | originatetypetext,
|
| | | content,
|
| | | address,
|
| | | stepid,
|
| | | org,
|
| | | deptname,
|
| | | dealtime,
|
| | | username,
|
| | | contactname,
|
| | | contactphone,
|
| | | acceptuserid,
|
| | | acceptusername,
|
| | | acceptuseraccount,
|
| | | dealuserid,
|
| | | dealusername,
|
| | | dealuseraccount,
|
| | | flowstatus,
|
| | | attachment,
|
| | | creator,
|
| | | new Date(),
|
| | | isplan,
|
| | | originateid,
|
| | | appointstarttime,
|
| | | appointendtime,
|
| | | parentid,
|
| | | relateids,
|
| | | "N",
|
| | | oname,
|
| | | otype,
|
| | | orderId
|
| | | });
|
| | |
|
| | |
|
| | | } finally {
|
| | | db.close();
|
| | | }
|
| | |
|
| | | return tranReq.returnJsonState(true, null, null);
|
| | | }
|
| | |
|
| | | public ModelAndView getOrderList(SMTAIServerRequest tranReq) throws Exception {
|
| | | SMTJsonWriter jsonWr = tranReq.newReturnJsonWriter(true, null, null);
|
| | | SMTDatabase db = SMTAIServerApp.getApp().allocDatabase();
|
| | |
| | |
|
| | | public Object llmAnswerToJson(String sJson)
|
| | | {
|
| | | return SMTAIServerApp.convJsonToJS(SMTStatic.convLLMAnswerToJson(sJson, false));
|
| | | Object object = SMTAIServerApp.convJsonToJS(SMTStatic.convLLMAnswerToJson(sJson, false));
|
| | | return object;
|
| | | }
|
| | |
|
| | | public Object getArg(String key)
|
| | |
| | | @Override
|
| | | public SMTJavaAIError callAgents(String jsonPath, Json jsonArgs, SMTLLMConnect llm, String question, SMTAIServerRequest tranReq) throws Exception
|
| | | {
|
| | |
|
| | | // 分析生成js代码
|
| | | String jsCode = llm.callWithMessage(new String[] {_prompt}, question, tranReq).replace("\r", "");
|
| | | tranReq.traceLLMDebug(jsCode);
|
| | | jsCode = SMTStatic.convLLMAnswerToJavascript(jsCode);
|
| | | jsCode = "function ffffff(){" + jsCode + "};ffffff();";
|
| | | //String jsCode = "var arr = testRS(); var l = arr[0]; for(var i in arr){}";
|
| | |
|
| | | try(ASTDBMap dbMap = new ASTDBMap())
|
| | | int maxCount = 1;
|
| | | |
| | | // 失败最多尝试3次
|
| | | for(int j = 1; j <= maxCount; j ++)
|
| | | {
|
| | | // 执行脚本
|
| | | SMTQwenAgentScriptJet scriptJet = new SMTQwenAgentScriptJet(jsonArgs, dbMap, tranReq);
|
| | | try
|
| | | // 分析生成js代码
|
| | | String jsCode = llm.callWithMessage(new String[] {_prompt}, question, tranReq).replace("\r", "");
|
| | | tranReq.traceLLMDebug(jsCode);
|
| | | jsCode = SMTStatic.convLLMAnswerToJavascript(jsCode);
|
| | | jsCode = "function ffffff(){" + jsCode + "};ffffff();";
|
| | | //String jsCode = "var arr = testRS(); var l = arr[0]; for(var i in arr){}";
|
| | | |
| | | try(ASTDBMap dbMap = new ASTDBMap())
|
| | | {
|
| | | Context cx = scriptJet.entryContext();
|
| | | // 执行脚本
|
| | | SMTQwenAgentScriptJet scriptJet = new SMTQwenAgentScriptJet(jsonArgs, dbMap, tranReq);
|
| | | try
|
| | | {
|
| | | scriptJet.executeScript(cx, jsCode);
|
| | | Context cx = scriptJet.entryContext();
|
| | | try
|
| | | {
|
| | | scriptJet.executeScript(cx, jsCode);
|
| | | break;
|
| | | }
|
| | | finally
|
| | | {
|
| | | Context.exit();
|
| | | }
|
| | | }
|
| | | finally
|
| | | catch(Exception ex)
|
| | | {
|
| | | Context.exit();
|
| | | StringBuilder sbCode = new StringBuilder();
|
| | | String[] lines = jsCode.replace("\r", "").split("\n");
|
| | | for(int i = 0; i < lines.length; i ++)
|
| | | {
|
| | | sbCode.append(String.format("%04d %s", i + 1, lines[i]) + "\n");
|
| | | _logger.fatal(String.format("%04d %s", i + 1, lines[i]));
|
| | | }
|
| | | |
| | | tranReq.sendChunkedBlock("begin", "解析失败(" + ex.getMessage() + "),重新解析");
|
| | | |
| | | if(j < maxCount)
|
| | | _logger.fatal("execute js agent error : " + this.getAgentId() + "\n" + sbCode, ex);
|
| | | else
|
| | | throw new Exception("execute js agent error : " + this.getAgentId() + "\n" + sbCode + "\n" + SMTStatic.toString(ex));
|
| | | }
|
| | | }
|
| | | catch(Exception ex)
|
| | | {
|
| | | String[] lines = jsCode.replace("\r", "").split("\n");
|
| | | for(int i = 0; i < lines.length; i ++)
|
| | | {
|
| | | _logger.fatal(String.format("%04d %s", i + 1, lines[i]));
|
| | | }
|
| | | |
| | | throw new Exception("execute js agent error : " + this.getAgentId() + "\n" + SMTStatic.toString(ex));
|
| | | }
|
| | | }
|
| | | return null;
|
| | |
| | | package com.smtaiserver.smtaiserver.javaai.qwen.agent.script;
|
| | |
|
| | | import java.util.ArrayList;
|
| | | import java.util.HashMap;
|
| | | import java.util.HashSet;
|
| | | import java.util.LinkedHashMap;
|
| | | import java.util.List;
|
| | | import java.util.Map;
|
| | | import java.util.Map.Entry;
|
| | | import java.util.regex.Matcher;
|
| | | import java.util.regex.Pattern;
|
| | |
|
| | | import org.mozilla.javascript.Context;
|
| | | import org.mozilla.javascript.ImporterTopLevel;
|
| | |
| | | import com.smtservlet.util.Json;
|
| | | import com.smtservlet.util.SMTJsonWriter;
|
| | | import com.smtservlet.util.SMTStatic;
|
| | | import com.smtservlet.util.SMTStatic.SMTCalcTime;
|
| | | import com.smtaiserver.smtaiserver.database.SMTDatabase;
|
| | | import com.smtaiserver.smtaiserver.database.SMTDatabase.DBQueryNotify;
|
| | | import com.smtaiserver.smtaiserver.database.SMTDatabase.DBRecord;
|
| | |
| | | @SuppressWarnings("unused")
|
| | | private SMTQwenAgentScriptJet _scriptJet;
|
| | | private SMTAIServerRequest _tranReq;
|
| | | |
| | | private static Pattern _patTimeStep = java.util.regex.Pattern.compile("(\\d+)\\s+(days|years|months)");
|
| | |
|
| | |
|
| | | public SMTQwenAgentScriptScope(Json jsonArgs, ASTDBMap dbMap, SMTQwenAgentScriptJet scriptJet, SMTAIServerRequest tranReq)
|
| | |
| | | "queryRecord",
|
| | | "outputTimeChart",
|
| | | "outputTable",
|
| | | "outputError"
|
| | | "outputError",
|
| | | "joinRecordset"
|
| | | };
|
| | | defineRunFunctions(this.getClass(), funcListArr);
|
| | | }
|
| | |
| | |
|
| | | return jsonValue.asString();
|
| | | }
|
| | | |
| | | // joinRecordset(记录集1, 记录集2, 对比字段名, 相差的时间范围)
|
| | | // 功能:
|
| | | // 将两个记录集按照对比字段进行合并,合并后的结果是:[[记录集1中相同字段记录, 记录集2中相同字段记录], .....]
|
| | | // 参数:
|
| | | // 记录集1:由queryRecord函数返回的记录集1
|
| | | // 记录集2:由queryRecord函数返回的记录集2
|
| | | // 相差的时间范围 : 如果要join的两组记录并不是来自同一个时间范围的,则需要计算:记录集2的起始时间-记录集1的起始时间,用 1 months, 1 days等形式表示,如果相同则为null
|
| | | // 返回:
|
| | | // 合并后的结果集
|
| | | // 格式:[[记录集1中相同字段记录, 记录集2中相同字段记录], .....]
|
| | | public NativeArray joinRecordset(NativeArray arrRecs1, NativeArray arrRecs2, String keyColumn, String diffTime) throws Exception
|
| | | {
|
| | | Map<String, NativeObject[]> mapKey2Recs = new LinkedHashMap<>();
|
| | | |
| | | int timeStep = 0;
|
| | | SMTCalcTime timeUnit = null;
|
| | | if(!SMTStatic.isNullOrEmpty(diffTime))
|
| | | {
|
| | | Matcher m = _patTimeStep.matcher(diffTime);
|
| | | if(!m.find())
|
| | | throw new Exception("time step error : " + diffTime);
|
| | | |
| | | timeStep = SMTStatic.toInt(m.group(1));
|
| | | String sUnit = m.group(2);
|
| | | if("years".equals(sUnit))
|
| | | timeUnit = SMTCalcTime.ADD_YEAR;
|
| | | else if("days".equals(sUnit))
|
| | | timeUnit = SMTCalcTime.ADD_DATE; |
| | | else if("months".equals(sUnit))
|
| | | timeUnit = SMTCalcTime.ADD_MONTH; |
| | | else
|
| | | throw new Exception("time step unsupport : " + diffTime);
|
| | | }
|
| | | |
| | | // 加入第一个记录集
|
| | | for(int i = 0; i < arrRecs1.size(); i ++)
|
| | | {
|
| | | NativeObject nvRec = (NativeObject) SMTAIServerApp.unwrapObject(arrRecs1.get(i));
|
| | | String key = (String) SMTAIServerApp.getJSValue(nvRec, keyColumn);
|
| | | mapKey2Recs.put(key, new NativeObject[] {nvRec, null});
|
| | | }
|
| | | |
| | | // 加入第二个记录集
|
| | | for(int i = 0; i < arrRecs2.size(); i ++)
|
| | | {
|
| | | NativeObject nvRec = (NativeObject) SMTAIServerApp.unwrapObject(arrRecs2.get(i));
|
| | | String key = (String) SMTAIServerApp.getJSValue(nvRec, keyColumn);
|
| | | |
| | | if(timeStep != 0)
|
| | | {
|
| | | key = SMTStatic.toString(SMTStatic.calculateTime(SMTStatic.toDate(key), timeUnit, timeStep));
|
| | | }
|
| | | |
| | | NativeObject[] arrRecs = mapKey2Recs.get(key);
|
| | | if(arrRecs == null)
|
| | | continue;
|
| | | arrRecs[1] = nvRec;
|
| | | }
|
| | | |
| | | // 生成最终结果
|
| | | List<NativeArray> list = new ArrayList<>();
|
| | | for(NativeObject[] recList : mapKey2Recs.values())
|
| | | {
|
| | | if(recList[1] == null)
|
| | | continue;
|
| | | list.add(new NativeArray(recList));
|
| | | }
|
| | | |
| | | |
| | | return new NativeArray(list.toArray(new NativeArray[list.size()]));
|
| | | }
|
| | | |
| | |
|
| | | // queryRecord(表名, 字段列表, 时间分组, 排序字段列表, 限制记录信息, 查询过滤条件)
|
| | | // 功能:
|
| | |
| | | StringBuilder sbTable = new StringBuilder();
|
| | |
|
| | | boolean isDevice = false;
|
| | | if("dev_names".equals(tableName))
|
| | | if("dev_names".equalsIgnoreCase(tableName))
|
| | | {
|
| | | tableName =
|
| | | " (SELECT\r\n"
|
| | |
| | | + ") T";
|
| | | isDevice = true;
|
| | | }
|
| | | else if("quota_values".equals(tableName))
|
| | | else if("quota_value".equalsIgnoreCase(tableName))
|
| | | {
|
| | | tableName = "(SELECT otime, sdval, otype as QUOTA_TYPE, oname as QUOTA_NAME FROM sd_values.sd_raws_match) T";
|
| | | }
|
| | |
| | | {
|
| | | if("DEVICE_NAME".equalsIgnoreCase(colName))
|
| | | {
|
| | | sbWhere.append("DEVICE_NAME LIKE '%");
|
| | | sbWhere.append(SMTStatic.toString(SMTAIServerApp.unwrapObject(SMTAIServerApp.getJSValue(nvFilter, "value"))).replace("'", "''"));
|
| | | sbWhere.append("%'");
|
| | | if("IN".equalsIgnoreCase(filterOP))
|
| | | {
|
| | | NativeArray arrValues = (NativeArray)SMTAIServerApp.getJSValue(nvFilter, "value");
|
| | | |
| | | sbWhere.append("(");
|
| | | for(int ii = 0; ii < arrValues.size(); ii ++)
|
| | | {
|
| | | if(ii > 0)
|
| | | sbWhere.append(" OR ");
|
| | | |
| | | sbWhere.append("DEVICE_NAME LIKE '%");
|
| | | sbWhere.append(SMTStatic.toString(SMTAIServerApp.unwrapObject(arrValues.get(ii))).replace("'", "''"));
|
| | | sbWhere.append("%'"); |
| | | }
|
| | | sbWhere.append(")");
|
| | | }
|
| | | else
|
| | | {
|
| | | sbWhere.append("DEVICE_NAME LIKE '%");
|
| | | sbWhere.append(SMTStatic.toString(SMTAIServerApp.unwrapObject(SMTAIServerApp.getJSValue(nvFilter, "value"))).replace("'", "''"));
|
| | | sbWhere.append("%'");
|
| | | }
|
| | | }
|
| | | else if("QUOTA_TYPE".equalsIgnoreCase(colName))
|
| | | {
|
| | |
| | | if(sbWhere.length() > 0)
|
| | | sbSQL.append("WHERE " + sbWhere.toString() + "\n");
|
| | |
|
| | | if(sbOrder.length() > 0)
|
| | | sbSQL.append("ORDER BY " + sbOrder.toString() + "\n");
|
| | | |
| | | if(sbLimit.length() > 0)
|
| | | sbSQL.append(" " + sbLimit.toString());
|
| | |
|
| | | String sql = sbSQL.toString();
|
| | |
|
| | |
| | | String colTime = (String) SMTAIServerApp.getJSValue(nvTimeGroup, "col");
|
| | | String funcAgg = (String) SMTAIServerApp.getJSValue(nvTimeGroup, "agg_func");
|
| | | String colAgg = (String) SMTAIServerApp.getJSValue(nvTimeGroup, "agg_col");
|
| | | String aliasName = (String) SMTAIServerApp.getJSValue(nvTimeGroup, "alias_col");
|
| | | String timeStep = (String) SMTAIServerApp.getJSValue(nvTimeGroup, "time", null);
|
| | |
|
| | | if(SMTStatic.isNullOrEmpty(timeStep))
|
| | | {
|
| | | sql = "SELECT " + funcAgg + "(" + colAgg + ") AS " + colAgg + " FROM (" + sql + ") T";
|
| | | sql = "SELECT " + funcAgg + "(" + colAgg + ") AS " + aliasName + " FROM (" + sql + ") T";
|
| | | }
|
| | | else
|
| | | {
|
| | | sql =
|
| | | " SELECT time_bucket('" + timeStep + "', " + colTime + ") AS " + colTime + "," + funcAgg + "(" + colAgg + ") AS " + colAgg |
| | | " SELECT time_bucket('" + timeStep + "', " + colTime + ") AS " + colTime + "," + funcAgg + "(" + colAgg + ") AS " + aliasName |
| | | + " FROM (" + sql + ") T"
|
| | | + " GROUP BY time_bucket('" + timeStep + "', " + colTime + ")"
|
| | | ;
|
| | | }
|
| | | sql = "SELECT * FROM (\n" + sql + "\n) T\n";
|
| | | }
|
| | |
|
| | | |
| | | if(sbOrder.length() > 0)
|
| | | sql += "ORDER BY " + sbOrder.toString() + "\n";
|
| | | |
| | | if(sbLimit.length() > 0)
|
| | | sql += " " + sbLimit.toString();
|
| | |
|
| | |
|
| | | SMTDatabase db = _dbMap.getDatabase("DS_43");
|
| | | List<NativeObject> recList = new ArrayList<>();
|
| | |
| | | for(Entry<String, Integer> entry : rec.getFieldMap().entrySet())
|
| | | {
|
| | | SMTAIServerApp.putJSNotNullValue(nvRec,
|
| | | entry.getKey(), rec.getValue(entry.getValue()));
|
| | | entry.getKey(), rec.getString(entry.getValue()));
|
| | | }
|
| | | return true;
|
| | | }
|
| | |
| | | ]
|
| | | }
|
| | | ]
|
| | | },
|
| | | "sys/update_order":{
|
| | | "map":{"class":"#SMTJavaAIControl", "method":"updateOrder"}, "no_shrio":false,
|
| | | "swaggers":[
|
| | | {
|
| | | "tags" : ["修改工单内容"],
|
| | | "title" : "修改工单内容",
|
| | | "parameters" : [
|
| | | {"name": "title", "title": "标题", "required": false},
|
| | | {"name": "wstypeid", "title": "类型编号", "required": false},
|
| | | {"name": "wstypename", "title": "类型名称", "required": false},
|
| | | {"name": "urgencylevel", "title": "紧急级别", "required": false},
|
| | | {"name": "shape", "title": "派单坐标", "required": false},
|
| | | {"name": "deadline", "title": "处理时限", "required": false},
|
| | | {"name": "stepstatus", "title": "工单进度状态", "required": false},
|
| | | {"name": "originatetypetext", "title": "来源类型", "required": false},
|
| | | {"name": "content", "title": "内容", "required": false},
|
| | | {"name": "address", "title": "地址", "required": false},
|
| | | {"name": "stepid", "title": "工单步骤", "required": false},
|
| | | {"name": "org", "title": "所属分公司", "required": false},
|
| | | {"name": "deptname", "title": "工单所属部门名称", "required": false},
|
| | | {"name": "dealtime", "title": "处理时间", "required": false},
|
| | | {"name": "username", "title": "用户名称", "required": false},
|
| | | {"name": "contactname", "title": "联系人", "required": false},
|
| | | {"name": "contactphone", "title": "联系电话", "required": false},
|
| | | {"name": "acceptuserid", "title": "接单人id", "required": false},
|
| | | {"name": "acceptusername", "title": "接单人名称", "required": false},
|
| | | {"name": "acceptuseraccount", "title": "接单人账号", "required": false},
|
| | | {"name": "dealuserid", "title": "处理人id", "required": false},
|
| | | {"name": "dealusername", "title": "处理人名称", "required": false},
|
| | | {"name": "dealuseraccount", "title": "处理人账号", "required": false},
|
| | | {"name": "flowstatus", "title": "工单状态", "required": false},
|
| | | {"name": "attachment", "title": "附件", "required": false},
|
| | | {"name": "creator", "title": "创建人", "required": false},
|
| | | {"name": "createtime", "title": "创建时间", "required": false},
|
| | | {"name": "isplan", "title": "是否计划工单", "required": false},
|
| | | {"name": "originateid", "title": "来源编号", "required": false},
|
| | | {"name": "appointstarttime", "title": "预约开始时间", "required": false},
|
| | | {"name": "appointendtime", "title": "预约结束时间", "required": false},
|
| | | {"name": "parentid", "title": "父级编号", "required": false},
|
| | | {"name": "relateids", "title": "关联编号", "required": false},
|
| | | {"name": "orderId", "title": "工单id", "required": true}
|
| | | ]
|
| | | }
|
| | | ]
|
| | | }
|
| | |
|
| | |
|
| | |
| | | HttpServletRequest request,
|
| | | HttpServletResponse response) throws Exception {
|
| | |
|
| | | if(request.getMethod().equalsIgnoreCase("GET"))
|
| | | {
|
| | | response.setCharacterEncoding("UTF-8");
|
| | | response.setContentType("text/html;charset=UTF-8");
|
| | | response.getOutputStream().write(_msg.getBytes("UTF-8"));
|
| | | }
|
| | | else
|
| | | // if(request.getMethod().equalsIgnoreCase("GET"))
|
| | | // {
|
| | | // response.setCharacterEncoding("UTF-8");
|
| | | // response.setContentType("text/html;charset=UTF-8");
|
| | | // response.getOutputStream().write(_msg.getBytes("UTF-8"));
|
| | | // }
|
| | | // else
|
| | | {
|
| | | if(_url != null)
|
| | | {
|