精华内容
下载资源
问答
  • 通过Java实现url接口返回的Json数据定时入库 一、概述 接到一个需求,需要访问url...1.通过Java访问url,得到返回的Json数据。 2.提取Json数据。 3.数据入库(效率问题)。 4.服务器配置定时任务。 三、具...

    通过Java实现url接口返回的Json数据定时入库

    一、概述

    接到一个需求,需要访问url并传入参数,将url返回Json数据入库进行筛选分析。
    数据的筛选分析这里掠过,主要记录通过使用Java实现数据的定时入库。

    二、处理逻辑

    1.通过Java访问url,得到返回的Json数据。
    2.提取Json数据。
    3.数据入库(效率问题)。
    4.服务器配置定时任务。

    三、具体实现

    1.访问处理url并返回Json的类:HttpRequestUtil

    package Arvin.JsonObj2;
    
    import java.io.ByteArrayOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.net.HttpURLConnection;
    import java.net.MalformedURLException;
    import java.net.URL;
    
    public class HttpRequestUtil {
    
        public static String getJsonContent(String urlStr) {
    
            try {
                // obtain HttpURLConnection Object
                URL url = new URL(urlStr);
                HttpURLConnection httpCon = (HttpURLConnection) url.openConnection();
    
                httpCon.setConnectTimeout(3000);
                httpCon.setDoInput(true);
                httpCon.setRequestMethod("GET");
    
                // 获取相应码
                int respCode = httpCon.getResponseCode();
                if (respCode == 200) {
                    return ConvertStream2Json(httpCon.getInputStream());
                }
    
            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return "";
        }
    
        private static String ConvertStream2Json(InputStream inputStream) {
            String jsonStr = "";
            // ByteArrayOutputStream相当于内存输出流
            ByteArrayOutputStream out = new ByteArrayOutputStream();
            byte[] buffer = new byte[1024];
            int len = 0;
            // 将输入流转移到内存输出流中
            try {
                while ((len = inputStream.read(buffer, 0, buffer.length)) != -1) {
                    out.write(buffer, 0, len);
                }
                // 将内存流转换为字符串
                jsonStr = new String(out.toByteArray());
            } catch (IOException e) {
                e.printStackTrace();
            }
            return jsonStr;
        }
    }

    2.Oracle数据库操作类:InsertOrl

    package Arvin.JsonObj2;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.List;
    
    public class InsertOrl {
    
        private static String USERNAME = "user";
        private static String PASSWORD = "pwd";
        private static String DRIVER = "oracle.jdbc.OracleDriver";
        private static String URL = "jdbc:oracle:thin:@1127.0.0.1:1521:orcl";
    
        private static String timeStr = "yyyyMMdd";
    
        // 建立数据库连接
        Connection connection = null;
        // 预编译语句对象
        PreparedStatement pstm = null;
        // 结果集对象
        ResultSet rs = null;
    
        SimpleDateFormat sf = new SimpleDateFormat(timeStr);
        String pt_d = sf.format(System.currentTimeMillis());
    
        /**
         * 获取Connection对象
         * 
         * @return
         */
        public Connection getConnection() {
            try {
                Class.forName(DRIVER);
                connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
            } catch (ClassNotFoundException e) {
                throw new RuntimeException("class not find !", e);
            } catch (SQLException e) {
                throw new RuntimeException("get connection error!", e);
            }
    
            return connection;
        }
    
        /**
         * 查询数据
         * 
         * @throws SQLException
         */
        public String SelectData(String tableName) throws SQLException {
            connection = getConnection();
            String sqlStr = "select cell_id, lac from " + tableName + " where 1 = 1";
            pstm = connection.prepareStatement(sqlStr);
            // pstm.setString(1, tableName);
            rs = pstm.executeQuery();
    
            String cellLac = "";
            while (rs.next()) {
                String cellId = rs.getString("cell_id");
                String lac = rs.getString("lac");
                if (cellLac == "") {
                    cellLac = cellLac + cellId + "," + lac;
                } else {
                    cellLac = cellLac + "|" + cellId + "," + lac;
                }
    
            }
            return cellLac;
        }
    
        /**
         * 向数据库中删除今天的数据
         * 
         */
        public void DeleteData() {
            // String sql = "delete from GY_4G_LJB where pt_d = pt_d";
            connection = getConnection();
            String sqlStr = "delete from GY_4G_LJB where pt_d=?";
            try {
                // 执行删除数据操作
                pstm = connection.prepareStatement(sqlStr);
                pstm.setString(1, pt_d);
                pstm.executeUpdate();
            } catch (SQLException e) {
                e.printStackTrace();
            } finally {
                ReleaseResource();
            }
        }
    
        /**
         * 添加数据
         * 
         * @param cellId
         * @param lac
         * @param age
         * @param address
         * @throws SQLException
         */
        public void AddData(List<List<String>> list, int batchSize) throws SQLException {
            connection = getConnection();
            connection.setAutoCommit(false);
            // String sql = "insert into GY_4G_LJB values('1','25555','170***','2018')";
            // String sql = "select count(*) from idstapp.GY_4G_LJB where 1 = 1";
    
            String sqlStr = "insert into GY_4G_LJB values(?,?,?,?,?,?)";
            int count = 0;
            pstm = connection.prepareStatement(sqlStr);
    
            for (Object arrayList : list) {
                pstm.setString(1, (String) ((ArrayList<?>) arrayList).get(0));
                pstm.setString(2, (String) ((ArrayList<?>) arrayList).get(1));
                pstm.setString(3, (String) ((ArrayList<?>) arrayList).get(2));
                pstm.setString(4, (String) ((ArrayList<?>) arrayList).get(3));
                pstm.setString(5, (String) ((ArrayList<?>) arrayList).get(4));
                pstm.setString(6, (String) ((ArrayList<?>) arrayList).get(5));
                // 把一个SQL命令加入命令列表
                pstm.addBatch();
    
                if (++count % batchSize == 0) {
                    pstm.executeBatch();
                    count = 0;
                }
            }
            // 执行批量更新
            pstm.executeBatch();
            // 语句执行完毕,提交本事务
            connection.commit();
            pstm.close();
            connection.close();
    
        }
    
        /**
         * 释放资源
         */
        public void ReleaseResource() {
            if (rs != null) {
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (pstm != null) {
                try {
                    pstm.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (connection != null) {
                try {
                    connection.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    3.主函数,解析Json中的数据并入库:App

    package Arvin.JsonObj2;
    
    import java.sql.SQLException;
    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Map;
    
    import com.alibaba.fastjson.JSON;
    import com.alibaba.fastjson.JSONObject;
    
    /**
     * /home/jsdxadm/jars
     * 
     * @author Arvin
     *
     */
    public class App {
    
        private static String JSON_URL = "http:url=";
    
        private static String timeStr = "yyyyMMdd";
    
        final static int batchSize = 10000;
    
        public static void main(String[] args) throws SQLException {
    
            // 开始时间
            Long startTime = System.currentTimeMillis();
            // 获取TimeFlag字段
            SimpleDateFormat sf = new SimpleDateFormat(timeStr);
            String pt_d = sf.format(System.currentTimeMillis());
            // 获取时间标志:时分
            String timeFlag = new SimpleDateFormat("yyMMddHHmm").format(System.currentTimeMillis());
    
            InsertOrl io = new InsertOrl();
    
            // 拼接接口URL
            String cellLac = io.SelectData("gy_cell_lac");
            String ALL_URL = JSON_URL + cellLac;
    
            List<List<String>> list = new ArrayList<List<String>>();
            // JSON转化为字符串
            String s = HttpRequestUtil.getJsonContent(ALL_URL);
    
            JSONObject ja = JSON.parseObject(s);
    
            // 获取JSON中的电话和时间并插入数据库
            if (ja instanceof Map) {
    
                Map<?, ?> mRst = (Map<?, ?>) ja.get("result");
                // System.out.println("mRst:" + mRst);
    
                List<?> lUser = (List<?>) mRst.get("sectorUsersList");
                // System.out.println("lUser:" + lUser);
                for (Object object : lUser) {
                    // "cellId":"49","lac":"255555"
                    Map<?, ?> mo = (Map<?, ?>) object;
                    List<?> lPOJO = (List<?>) mo.get("userPOJOList");
    
                    String cellId = mo.get("cellId").toString();
                    String lac = mo.get("lac").toString();
    
                    for (Object object2 : lPOJO) {
                        List<String> li = new ArrayList<String>();
                        Map<?, ?> mo2 = (Map<?, ?>) object2;
                        String uPhone = mo2.get("phone").toString();
                        String uTime = mo2.get("time").toString();
    
                        li.add(cellId);
                        li.add(lac);
                        li.add(uPhone);
                        li.add(uTime);
                        li.add(pt_d);
                        li.add(timeFlag);
                        list.add(li);
    
                    }
    
                }
                io.AddData(list, batchSize);
                // System.out.println("数据插入完成");
                Long endTime = System.currentTimeMillis();
                System.out.println("Done---Time:" + timeFlag + "---Run:" + (endTime - startTime) / 1000 + "s");
            }
    
        }
    
    }
    

    4.将Java程序打包,放置在服务器,并设置定时任务。

    4.1打Jar包

    这里写图片描述
    这里写图片描述

    4.2定时任务

    $ crontab -e 

    添加一下定时任务,每十分钟执行一次

    */10 * * * * /etc/alternatives/java -Xms256M -Xmx256M -jar /home/vmuser/java/JO.jar >>/home/vmuser/java/JO.out 2>&1

    至此任务完成。

    展开全文
  • 前阵子工作中遇到同事要记录用户访问网页页面时间...1.在前端公共js里设置一个定时器,每隔一段时间(这个可以根据业务自调)定时向后台访问一个url2.后台设置一个公用map,用来记录每个用户的访问状态,map里记录有每...

    前阵子工作中遇到同事要记录用户访问网页页面时间的问题,后来仔细思考了一下,写了一个小demo,觉得应该记录下来。

    思路:

    考虑到用户访问除了正常关闭或离开页面之外还有停电断网的情况,所以最好的办法是用前端定时心跳请求法记录用户访问状态。

    1.在前端公共js里设置一个定时器,每隔一段时间(这个可以根据业务自调)定时向后台访问一个url

    2.后台设置一个公用map,用来记录每个用户的访问状态,map里记录有每个用户的开始页面访问时间和每个用户离开页面的时间,怎么判断用户离开页面呢,在后台用java写一个定时器,项目启动时同时启用定时器,每隔一段时间(这个可以根据业务自调)扫描map里每个用户的访问时间,用系统当前时间和map里的最后一次访问时间做比对,当超过一定时间(这个可以根据业务自调)时,表明用户已经离开页面,记录下当前用户最后一次访问时间做离开页面的时间,然后map里就有了当前用户的访问时间,离开页面时间.

    3.接下来可以计算停留时间保存进数据库,在数据库保存时做累计,或者直接把用户信息保存在数据库(这个根据业务实现怎么样的功能而定).

    4.最后remove掉已保存进数据库的那些用户信息。

    理论上map里同时存在离开页面的用户和当前访问页面的用户,通过java定时扫描的方式,记录下离开页面的用户信息并移除map里的离线用户。

    代码(用SSI框架为例):

    1.前端公用js里写一个定时器:

    setInterval(function(){

    //要执行的代码

    var nameText = $(".adminControl").text();

    console.log(nameText.split(",")[1]);

    var paramObj = {};

    paramObj.userName = /*nameText.split(",")[1]*/"开始健";

    //发送请求

    $.ajax({

    type: "POST",

    url: ctx+"/getUserTime.do",

    data: paramObj,

    success: function(data){

    },

    error:function(){

    }

    });

    console.log("定时器已生效");

    },5000);

    2.controller里声明两个变量。

    public class ConfigVersionQueryController extends BaseController{

    protected final Log log = LogFactory.getLog(ConfigVersionQueryController.class);

    @Autowired

    private ConfigVersionQueryService service;

    @Autowired

    private ConfigGlobalService globalService;

    @Autowired

    private IModuleLogManager logManager;

    private static Map timeMap = new HashMap();

    private static int value = 0;

    }

    3.写一个记录用户时间的接口:

    /**

    * 记录用户时间

    * @return

    * @throws Exception

    */

    @RequestMapping("/getUserTime.do")

    public void getUserTime(HttpServletRequest request,HttpServletResponse response) throws Exception

    {

    value++;

    String userName = request.getParameter("userName");

    if(null == timeMap.get(userName)){

    //用户开始访问时间

    timeMap.put(userName + "startTime", new Date());

    }

    timeMap.put(userName, new Date());

    //System.out.println("用户开始访问时间=" + timeMap.get(userName + "startTime"));

    //System.out.println("用户请求时间=" + timeMap.get(userName));

    // System.out.println(value);

    if(value == 1){

    System.out.println("进来===");

    Timer timer = new Timer();

    timer.schedule(new TimerTask() {

    public void run() {

    // server

    System.out.println("-------设定要指定任务--------");

    Iterator iter = timeMap.entrySet().iterator(); //获取key和value的set

    Date time = null;

    System.out.println("==="+ timeMap.size());

    Set keySet = new HashSet();

    while (iter.hasNext()) {

    Map.Entry entry = (Map.Entry) iter.next(); //把hashmap转成Iterator再迭代到entry

    String key = entry.getKey().toString(); //从entry获取key

    if(key.indexOf("startTime") == -1 ){

    time = (Date) entry.getValue();

    if(((new Date()).getTime() - time.getTime())/1000 > 9){

    keySet.add(key);

    }

    }

    }

    for (String key : keySet) {

    System.out.println(key + "访问页面时间==" + (Date)timeMap.get(key + "startTime"));

    System.out.println(key +"离开页面时间==" + (Date)timeMap.get(key));

    //此处省略计入数据库的操作,可以计算停留时间等

    //保存进数据库之后移除离线用户信息

    timeMap.remove(key);

    timeMap.remove(key + "startTime");

    }

    }

    }, 15000, 15000);// 设定指定的时间time,此处为15000毫秒

    }

    }

    总结:此为实验小demo,实现过程中用userId更好,这里只是为了直观起见用了userName,为了测试方便,前端设定固定请求时间为5秒,当前时间和最后一次记录时间差为9秒,后台定时器每15秒扫描一次,实际项目中这些时间都可以根据业务自调。

    展开全文
  • java 多线程 目录:学习了一段时间的多线程内容,项目中有个定时调度的需求,将之前的需求重新...定时调度的需求如下:设定任务的开始时间,分为单次调度和循环调度,访问指定的url。1 packagecom.scheduler;23 impo...

    java 多线程 目录:

    学习了一段时间的多线程内容,项目中有个定时调度的需求,将之前的需求重新梳理了下,写了一个多线程调用的简单例子,加深学习。这块内容整理完,考虑单独弄一个系统,用线程池来完成,另把memcached也逐步放进来,目前系统已经基本搭建完毕。

    定时调度的需求如下:设定任务的开始时间,分为单次调度和循环调度,访问指定的url。

    1 packagecom.scheduler;2

    3 importjava.io.BufferedReader;4 importjava.io.File;5 importjava.io.FileNotFoundException;6 importjava.io.FileReader;7 importjava.io.IOException;8 importjava.util.ArrayList;9

    10

    11 /**

    12 * 定时调度的小程序13 * @ClassName: schedulerManager14 * TODO15 *@authorXingle16 * @date 2014-8-5 下午5:24:3717 */

    18 public classschedulerManager{19 //调度列表,格式如下20 //任务名|开始时间|间隔数量|间隔单位|程序URL地址21 //其中间隔单位用以下表示:年 year,月 month,日 day,时 hour,分 min,秒 sec

    22 public staticArrayList tls;23

    24 public static voidmain(String[] args) {25 tls = new ArrayList<>();26 BufferedReader ins = null;27 File f = new File("D:\\test/tasklist.txt");28 try{29 ins = new BufferedReader(newFileReader(f));30 String line = "";31 while ((line = ins.readLine()) != null) {32 //增加一个是否执行标识,0 未执行

    33 line = line+"|0";34 String[] task = line.split("\\|");35 tls.add(task);36 }37 ins.close();38 } catch(FileNotFoundException e) {39 e.printStackTrace();40 } catch(IOException e) {41 e.printStackTrace();42 }43

    44 //开启一个监视器

    45 Monitor monitor = newMonitor();46 monitor.start();47

    48 }49 }

    其中,监视器如下:

    1 packagecom.scheduler;2

    3 importjava.text.ParseException;4 importjava.text.SimpleDateFormat;5 importjava.util.Calendar;6 importjava.util.Date;7

    8 /**

    9 * 监视器10 * 1. 任务列表中,若任务时间到,则新开线程执行任务11 * 2. 对于单次调度,调度后标记移除12 * 3.对于循环调度,当前调度执行完移除,任务列表增加下次循环调度的任务13 * 4. 每次遍历休息1秒14 *15 * @ClassName: Monitor16 *@authorXingle17 * @date 2014-8-5 下午5:25:0118 */

    19 public class Monitor extendsThread {20

    21 Monitor() {22 }23

    24 public voidrun() {25 System.out.println("*** 监视器已启动,开始遍历监视任务列表 ***");26 while (!schedulerManager.tls.isEmpty()) {27 Date date = newDate();28 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");29 String currTime =sdf.format(date);30 for (int i = 0; i < schedulerManager.tls.size(); i++) {31 String[] task =(String[]) schedulerManager.tls.get(i);32 //任务起始时间

    33 String sTime = task[1];34 //比较时间 ,开启一个子进程去执行任务

    35 if (sTime.equals(currTime) && !task[5].equals("1")) {36 execTask doTask = newexecTask(task);37 doTask.start();38 //已执行标示

    39 task[5] = "1";40 }41

    42 //循环调度的任务

    43 if ((task[5].equals("1")) && (!task[2].equals("0"))) {44 //获取循环下次调用的任务

    45 String[] nexttask =getNextTask(task);46 schedulerManager.tls.add(nexttask);47 System.out.println("**增加循环任务:" + nexttask[0] + " 下次调用时间:"

    48 + nexttask[1] + " " + nexttask[4] + " 剩余:"

    49 +schedulerManager.tls.size());50 }51 }52

    53 System.out.println("当前时间:" +currTime);54 for (int i = 0; i < schedulerManager.tls.size(); i++) {55 String[] task =(String[]) schedulerManager.tls.get(i);56 if (task[5].equals("1")) {57 schedulerManager.tls.remove(i);58 System.out.println("**减少任务:" + task[0] + " " + task[4]59 + " 剩余:" +schedulerManager.tls.size());60 }61 }62 try{63 sleep(1000);64 } catch(Exception se) {65

    66 }67 }68

    69 }70

    71 /**

    72 * 循环任务的下次调用任务情况73 *74 *@paramtask75 *@return

    76 *@authorxingle77 * @data 2014-8-5 下午6:34:2578 */

    79 privateString[] getNextTask(String[] task) {80 //下次调用时间

    81 String[] nextTime = new String[6];82 //开始时间

    83 String start = task[1];84 //间隔数量

    85 int interval = new Integer(task[2]);86 //间隔单位

    87 String unit = task[3];88 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");89

    90 Date sdate = newDate();91 try{92 sdate =sdf.parse(start);93 } catch(ParseException e) {94 e.printStackTrace();95 }96

    97 Calendar calendar =Calendar.getInstance();98 calendar.setTime(sdate);99 if (unit.equals("sec")) {100 calendar.add(Calendar.SECOND, interval);101 } else if (unit.equals("min")) {102 calendar.add(Calendar.MINUTE, interval);103 } else if (unit.equals("hour")) {104 calendar.add(Calendar.HOUR, interval);105 } else if (unit.equals("day")) {106 calendar.add(Calendar.DAY_OF_MONTH, interval);107 } else if (unit.equals("month")) {108 calendar.add(Calendar.MONTH, interval);109 } else if (unit.equals("year")) {110 calendar.add(Calendar.YEAR, interval);111 }112 String next =sdf.format(calendar.getTime());113 nextTime[0] = task[0];114 nextTime[1] =next;115 nextTime[2] = task[2];116 nextTime[3] = task[3];117 nextTime[4] = task[4];118 nextTime[5] = "0";119 returnnextTime;120 }121 }

    监视器的执行任务的子进程:

    1 packagecom.scheduler;2

    3 importjava.io.IOException;4 importjava.net.HttpURLConnection;5 importjava.net.MalformedURLException;6 importjava.net.URL;7

    8 /**

    9 * 执行任务10 * 访问指定网址11 * @ClassName: execTask12 *13 *@authorXingle14 * @date 2014-8-5 下午5:39:5915 */

    16 public class execTask extendsThread{17

    18 String[] task =null;19

    20 execTask(String[] task){21 this.task =task;22 }23 public voidrun(){24 try{25 if(!openUrl(task[4])){26 //写入错误日志文件

    27 System.out.println("打开错误: "+task.toString());28 }29 } catch(IOException e) {30 e.printStackTrace();31 }32 }33

    34 /**

    35 * 打开url36 *@paraminurl37 *@return

    38 *@authorxingle39 *@throwsIOException40 * @data 2014-8-5 下午7:02:3041 */

    42 private boolean openUrl(String inurl) throwsIOException{43

    44 URL url = null;45 HttpURLConnection conn = null;46 try{47 url = newURL(inurl);48 conn =(HttpURLConnection) url.openConnection();49 } catch(MalformedURLException e) {50 e.printStackTrace();51 } catch(IOException e) {52 System.out.println("***************** 连接失败,程序地址 : "+inurl);53 e.printStackTrace();54 return false;55 }56 if(conn.getResponseCode()!=HttpURLConnection.HTTP_OK){57 System.out.println("****************** 调度失败!!,程序地址 : "+inurl);58 return false;59 }60 else{61 System.out.println("********************* 已完成调度,程序地址: "+inurl);62 return true;63 }64

    65 }66

    67 }

    这里D:\test\tasklist.txt 中的文本如下:

    task1|2014-08-06 11:42:00|5|sec|http://www.baidu.com

    task2|2014-08-06 11:42:25|0|min|http://www.sina.com

    task3|2014-08-06 19:00:00|3|min|http://www.cnblogs.com/xingele0917/

    task4|2014-08-06 19:05:00|2|min|http://pomotodo.com/app/

    task5|2014-08-06 18:09:00|1|min|http://www.w3school.com.cn/html5/

    执行结果(截取一部分):

    *** 监视器已启动,开始遍历监视任务列表 ***

    当前时间:2014-08-06 11:41:55

    当前时间:2014-08-06 11:41:56

    当前时间:2014-08-06 11:41:57

    当前时间:2014-08-06 11:41:58

    当前时间:2014-08-06 11:41:59

    **增加循环任务:task1 下次调用时间:2014-08-06 11:42:05 http://www.baidu.com 剩余:6

    当前时间:2014-08-06 11:42:00

    **减少任务:task1 http://www.baidu.com 剩余:5

    ********************* 已完成调度,程序地址: http://www.baidu.com

    当前时间:2014-08-06 11:42:01

    当前时间:2014-08-06 11:42:02

    当前时间:2014-08-06 11:42:03

    当前时间:2014-08-06 11:42:04

    **增加循环任务:task1 下次调用时间:2014-08-06 11:42:10 http://www.baidu.com 剩余:6

    当前时间:2014-08-06 11:42:05

    **减少任务:task1 http://www.baidu.com 剩余:5

    ********************* 已完成调度,程序地址: http://www.baidu.com

    当前时间:2014-08-06 11:42:07

    当前时间:2014-08-06 11:42:08

    当前时间:2014-08-06 11:42:09

    **增加循环任务:task1 下次调用时间:2014-08-06 11:42:15 http://www.baidu.com 剩余:6

    当前时间:2014-08-06 11:42:10

    **减少任务:task1 http://www.baidu.com 剩余:5

    ********************* 已完成调度,程序地址: http://www.baidu.com

    当前时间:2014-08-06 11:42:11

    当前时间:2014-08-06 11:42:12

    当前时间:2014-08-06 11:42:13

    当前时间:2014-08-06 11:42:14

    **增加循环任务:task1 下次调用时间:2014-08-06 11:42:20 http://www.baidu.com 剩余:6

    当前时间:2014-08-06 11:42:15

    **减少任务:task1 http://www.baidu.com 剩余:5

    ********************* 已完成调度,程序地址: http://www.baidu.com

    当前时间:2014-08-06 11:42:16

    当前时间:2014-08-06 11:42:17

    当前时间:2014-08-06 11:42:18

    当前时间:2014-08-06 11:42:19

    **增加循环任务:task1 下次调用时间:2014-08-06 11:42:25 http://www.baidu.com 剩余:6

    当前时间:2014-08-06 11:42:20

    **减少任务:task1 http://www.baidu.com 剩余:5

    ********************* 已完成调度,程序地址: http://www.baidu.com

    当前时间:2014-08-06 11:42:21

    当前时间:2014-08-06 11:42:22

    当前时间:2014-08-06 11:42:23

    当前时间:2014-08-06 11:42:24

    **增加循环任务:task1 下次调用时间:2014-08-06 11:42:30 http://www.baidu.com 剩余:6

    当前时间:2014-08-06 11:42:25

    **减少任务:task2 http://www.sina.com 剩余:5

    **减少任务:task1 http://www.baidu.com 剩余:4

    ********************* 已完成调度,程序地址: http://www.baidu.com

    ********************* 已完成调度,程序地址: http://www.sina.com

    当前时间:2014-08-06 11:42:26

    当前时间:2014-08-06 11:42:27

    当前时间:2014-08-06 11:42:28

    当前时间:2014-08-06 11:42:29

    **增加循环任务:task1 下次调用时间:2014-08-06 11:42:35 http://www.baidu.com 剩余:5

    当前时间:2014-08-06 11:42:30

    **减少任务:task1 http://www.baidu.com 剩余:4

    ********************* 已完成调度,程序地址: http://www.baidu.com

    展开全文
  • 如果设计一个java项目,可以通过定时任务,来进行调用外部接口,...比如访问百度,谷歌等,支持可配置,如1小时调用一次百度,...url定时任务没法一一匹配</p>
  • Javascript 返回上一页1. Javascript 返回上一页 history.go(-1), 返回两个页面: history.go(-2);... window.history.go(返回第几页,也可以使用访问过的URL)例:向上一页response.Write("")response.Wr...

    Javascript 返回上一页1. Javascript 返回上一页 history.go(-1), 返回两个页面: history.go(-2);

    2. history.back().

    3. window.history.forward()返回下一页

    4. window.history.go(返回第几页,也可以使用访问过的URL)

    例:

    向上一页

    response.Write("

    response.Write("if(!confirm('完成任务?')){history.back();}")

    response.Write("")

    response.Write("")

    向上一页

    //页面跳转:

    οnclick="window.location.href='list.aspx'"

    P.S.

    小技巧(JS引用JS):

    Javascript刷新页面的几种方法:

    //1

    history.go(0)

    //2

    location.reload()

    //3

    location=location

    //4

    location.assign(location)

    //5

    document.execCommand('Refresh')

    //6

    window.navigate(location)

    //7

    location.replace(location)

    //8

    document.URL=location.href

    自动刷新页面的方法:1.页面自动刷新:把如下代码加入

    区域中

    其中20指每隔20秒刷新一次页面.

    2.页面自动跳转:把如下代码加入

    区域中

    其中20指隔20秒后跳转到https://www.jb51.net/tools/files.shtml页面

    3.页面自动刷新js版

    function myrefresh()

    {

    window.location.reload();

    }

    setTimeout('myrefresh()',1000); //指定1秒刷新一次

    ASP.NET如何输出刷新父窗口脚本语句

    //1.

    this.response.write("");

    //2.

    this.response.write("");

    //3.

    Response.Write("")

    JS刷新框架的脚本语句

    //如何刷新包含该框架的页面用

    parent.location.reload();

    //子窗口刷新父窗口

    self.opener.location.reload();

    ( 或 刷新   )

    //如何刷新另一个框架的页面用

    parent.另一FrameID.location.reload();

    如果想关闭窗口时刷新或者想开窗时刷新的话,在

    中调用以下语句即可。

    window.opener.document.location.reload()

    展开全文
  • 现需要通过一套java语言的springboot项目定时修改discuz库中的数据。由于调用了微信公众号的接口,必须使用80端口。但是已被php程序占用,所以需要使用nginx的转发功能进行配置。 功能处理 开始是先在本地进行测试...
  • 登录流程:输入127.0.0.1/login把浏览器信息,客户端地址,访问地址等封装到request里,以GET方式发送给login的url(因为是访问页面,所以是GET请求)匹配到对应的url在根据url匹配到处理函数,直接显示页面,完成访问登录...
  • 文章目录RestTemplate接口远程访问定时任务jdk:TimerTaskspring:task RestTemplate接口远程访问java代码里访问restful服务,可以使用apache的HttpClient。 同时在spring-data框架中提供的RestTemplate类可用于...
  • 定时任务,客户页面操作,使用java.util.timer,因为@schedule 注解中定时的时间...页面操作定时任务,传递参数(访问任务接口URL和对应参数),修改timer 中Task,修改需要先移除Task.cancel()。 注意timer只能有...
  • 注意:监控方法可以为端口、进程、URL模拟访问方式,或者三种方法综合。说明:由于截止到目前仅讲了if语句,因此,就请大家用if语句来实现。[root@oldboy-B scripts]# cat apachemon#!/bin/sh#created by oldboy ...
  • 方法如下: 1.下载firefox:[url]http://www.mozilla.com/en-US/[/url] 2.安装Greasemonkey:[url]https://addons.mozilla.org/zh-CN/firefox/addon/748[/url] ...java"] window.setInt...
  • 在我们项目开发过程中,经常遇到定时类需求,如果是仅仅一个PHP文件,那么很轻松的知道该怎么配置,但是在框架中,mvc设计思想访问对应控制器下的对应方法,那么就无从下手了。我这里参考网上的例子在自己的服务器上...
  • 这里我们开发把每个服务的jvm的运行情况和gc的情况卸载java程序里,这里我们访问一个URL地址就可以得到json数据#!/bin/bash# 定时收集java服务metrics# curl http://10.7.16.42:6301/metrics demo# 参数:post_...
  • Java开发详解.zip

    2019-09-02 17:46:13
    031902_【第19章:Java网络编程】_URL与URLConnection笔记.pdf 031903_【第19章:Java网络编程】_URLEncoder与URLDecoder笔记.pdf 031904_【第19章:Java网络编程】_TCP程序设计笔记.pdf 031905_【第19章:Java网络...
  • //生成方法 pathUrl页面访问路径,path静态页面存放的路径,channelPath 主要是来匹配针对栏目列表页/***定时方法调用静态页面创建方法*/private boolean createIndexPage(String pathUrl,String path,String ...
  • 采集java性能指标数据

    2017-07-19 17:12:00
    这里我们开发把每个服务的jvm的运行情况和gc的情况卸载java程序里,这里我们访问一个URL地址就可以得到json数据 #!/bin/bash # 定时收集java服务metrics # curl http://10.7.16.42:6301/metrics demo # 参数...
  • //生成方法 pathUrl页面访问路径,path静态页面存放的路径,channelPath 主要是来匹配针对栏目列表页/***定时方法调用静态页面创建方法*/private boolean createIndexPage(String pathUrl,String path,String ...
  • Linux下定时任务浅用

    2017-08-16 17:25:39
    Mysql是5.5,这个老版本用Java去连时有个Bug,超过8小时无访问时,连接就断开了,为了解决这个今天加了定时任务,为了鼓励自己(每天写点东西)今天就写这个吧! 首先写了一个访问特定路径的脚本,task_url.sh...
  • 就可以定时触发去访问这个地址。 不同的业务团队,用的东西不一定相同,聚合起来可以就麻烦一点,用Java作业或Shell作业包装一层HTTP请求的话就有点繁琐了,不知道Saturn有什么好的方式处理...
  • 2.定时任务中要获取项目访问url,不知道有什么方法来实现? [code="java"] String ipAddress = "http://" + request.getLocalAddr() + ":" + request.getLocalPort() + request.getContextPath() + "/";...
  • JAVA本身就是面向网络的,只有在网络环境中才能显示出他的优势,比如:现在我有一个网络环境,要让我的笔记本和手机交互,笔记本环境是windows发出一个让手机定时录音的JAVA代码,手机只有简单Linux内核操作系统,...
  • Demo中使用了SDK内置的默认实时语音识别服务的外网访问URL,如果您使用阿里云上海ECS并想使用内网访问URL,则在创建NlsClient对象时,设置内网访问的URL:client = new NlsClient("ws://nls-gateway....
  • 引言高并发是指在同一个时间点,有大量用户同时访问URL地址,比如淘宝双11、定时领取红包就会产生高并发;又比如贴吧的爆吧,就是恶意的高并发请求,也就是DDOS攻击(通过大量合法的请求占用大量网络资源,以达到瘫痪...
  • 请教诸位大神: 公司需求,要求每天定时采集淘宝上 新入驻(新开张)店铺的... 总要知道个url地址,我才能模拟用户访问请求,然后分析页面的元素得到我想要的东西。 实在是毫无头绪,以前也没做过类似的东西。
  • )分隔后,再指定一个URL地址,这将让浏览器在指定的时间值后自动去访问URL地址指向的资源。 :动手体验:Refresh头字段的作用效果 (1)按例程5-2编写一个设置Refresh头字段的Servlet。 例程5-2 RefreshServlet....
  • //生成方法 pathUrl页面访问路径,path静态页面存放的路径,channelPath 主要是来匹配针对栏目列表页/** *定时方法调用静态页面创建方法 */ private boolean createIndexPage(String pathUrl,String
  • )分隔后,再指定一个URL地址,这将让浏览器在指定的时间值后自动去访问URL地址指向的资源。 :动手体验:Refresh头字段的作用效果 (1)按例程5-2编写一个设置Refresh头字段的Servlet。 例程5-2 RefreshServlet....

空空如也

空空如也

1 2 3 4 5
收藏数 90
精华内容 36
关键字:

java定时访问url

java 订阅