通常路由器提供的访问方式有web\ssh\telnet三种方式
ssh和telnet都是命令行模式输入指令,web则是通过uri传输指令
1、通过命令行。首先,java可以通过ssh模块或者普通的tcp做到访问路由器。然后携带用户密码通过路由器的认证。接下来,就是看路由器内部的命令行指令了。这种方法类似于用java写一个简单的tcp client端,并将特定的字符串通过tcp连接传给路由器。
2、通过web。假如你可以通过网页修改路由器的ACL,那么你用java同样可以。java有现成的模块模拟浏览器,浏览器的模式只不过是访问路由器的一个URL,然后post一串参数。你用java可以同样做到。
这两种模式都可以。后面在我看来更简单
1、从数据库读取数据放到js里面:使用ajax来实现异步加载后台文件,返回数据到js文件中即可,参考代码:
$.ajax(
Method:'post',
URL:'xxx',
Data:{xxx},
success:function(data){
var database=data
}
)
2、将数据显示到页面:
参考:$("#cid").val(datas)
如果要通过路由器,不同的路由器的获取方法不一样。通用的做法是通过 HttpClient 在百度上搜索关键字 ip, 然后提取出公网ip。
代码如下:
import java.io.BufferedReaderimport java.io.IOException
import java.io.InputStream
import java.io.InputStreamReader
import java.net.URL
import java.net.URLConnection
import java.util.regex.Matcher
import java.util.regex.Pattern
public class App {
// 获取网页源码
static String httpGet(String url) {
StringBuffer buffer = new StringBuffer()
try {
URLConnection conn = new URL(url).openConnection()
conn.addRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 10.0 Win64 x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36")
try (InputStream inputStream = conn.getInputStream()
InputStreamReader streamReader = new InputStreamReader(inputStream)
BufferedReader reader = new BufferedReader(streamReader)) {
String line = null
while ((line = reader.readLine()) != null) {
buffer.append(line).append(System.lineSeparator())
}
}
} catch (IOException e) {
e.printStackTrace()
}
return buffer.toString()
}
public static void main(String[] args) {
String html = httpGet("https://www.baidu.com/s?wd=ip")
// 提出IP
Pattern pattern = Pattern.compile("<span\\sclass=\"c-gap-right\">本机IP:&nbsp([^<]+)</span>")
Matcher matcher = pattern.matcher(html)
if (matcher.find()) {
String ip = matcher.group(1)
System.out.println(ip)
}
}
}