rainbow954 vor 7 Jahren
Ursprung
Commit
2f9f6ce22e

+ 62 - 0
src/main/java/com/tidecloud/dataacceptance/entity/LbsInfo.java

@@ -0,0 +1,62 @@
+package com.tidecloud.dataacceptance.entity;
+
+import java.io.Serializable;
+
+/**   
+ * @author: ryan 
+ */
+public class LbsInfo implements Serializable{
+    
+    private static final long serialVersionUID = 6781963435755077765L;
+    
+    private String imei;
+    private String mcc;
+    private String mnc;
+   
+    private String lac;
+    private String cellid;
+    private Integer signal;
+	public String getMcc() {
+		return mcc;
+	}
+	public void setMcc(String mcc) {
+		this.mcc = mcc;
+	}
+	public String getMnc() {
+		return mnc;
+	}
+	public void setMnc(String mnc) {
+		this.mnc = mnc;
+	}
+	public String getLac() {
+		return lac;
+	}
+	public void setLac(String lac) {
+		this.lac = lac;
+	}
+	public String getCellid() {
+		return cellid;
+	}
+	public void setCellid(String cellid) {
+		this.cellid = cellid;
+	}
+	public Integer getSignal() {
+		return signal;
+	}
+	public void setSignal(Integer signal) {
+		this.signal = signal;
+	}
+	public String getImei() {
+		return imei;
+	}
+	public void setImei(String imei) {
+		this.imei = imei;
+	}
+	@Override
+	public String toString() {
+		return mcc + "," + mnc + "," + lac + "," + cellid + "," + signal;
+	}
+	
+   
+   
+}

+ 1 - 3
src/main/java/com/tidecloud/dataacceptance/service/AcceptanceInboundHandlerAdapter.java

@@ -101,11 +101,9 @@ public  class AcceptanceInboundHandlerAdapter extends ChannelInboundHandlerAdapt
 	
 
 	protected void receiveMsg(String msg, String deviceId, Channel channel) {
-
 		manageChannel(channel, deviceId);
-
 		kafkaSendThreadPool.execute(() -> sendKakfaMsg(msg, deviceId));
-		singleThreadPool.execute(() -> dataStorage(msg));
+		//singleThreadPool.execute(() -> dataStorage(msg));
 	}
 
 	protected void manageChannel(Channel channel, String deviceId) {

+ 157 - 132
src/main/java/com/tidecloud/dataacceptance/service/impl/WatchServerHandler.java

@@ -1,7 +1,9 @@
 package com.tidecloud.dataacceptance.service.impl;
 
 import java.text.SimpleDateFormat;
+import java.util.ArrayList;
 import java.util.Date;
+import java.util.List;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -9,6 +11,7 @@ import org.springframework.stereotype.Component;
 
 import com.tidecloud.dataacceptance.entity.Advice;
 import com.tidecloud.dataacceptance.entity.Device;
+import com.tidecloud.dataacceptance.entity.LbsInfo;
 import com.tidecloud.dataacceptance.service.StringAcceptanceHandlerAdapter;
 
 import io.netty.buffer.ByteBuf;
@@ -25,137 +28,159 @@ import io.netty.util.concurrent.GenericFutureListener;
 @Sharable
 @Component(WatchServerHandler.name)
 public class WatchServerHandler extends StringAcceptanceHandlerAdapter {
-     
+
 	public static final String name = "WatchServerHandler";
-    private static final Logger logger = LoggerFactory.getLogger(WatchServerHandler.class);
-   
-  
-    public void handle(String msg,Channel channel) throws Exception {
-        logger.info("设备上传数据:" + msg);
-        Advice advice = getAdevice(msg);
-        String deviceId = advice.getDeviceId();
-        String adviceType = advice.getAdviceType();
-        
-      
-        switch (adviceType) {
-        
-        case "UD":
-        case "heart":	
-        case "UD2":
-        	receiveMsg(msg,deviceId,channel);
-            logger.info("正常存储设备信息:" + getDevice(msg).toString());
-            break;
-        case "LK":
-            normalReply(advice, channel);
-            break;
-        case "UPLOAD":
-            logger.info("device [{}] setting copy time success [{}]", deviceId, new Date());
-            break;
-       
-        default:
-            break;
-        }
-    }
-    
-
-    private void normalReply(Advice advice, Channel channel) {
-        String facotry = advice.getFacotry();
-        String adviceType = advice.getAdviceType();
-        String deviceId = advice.getDeviceId();
-        StringBuilder replyCommand = new StringBuilder();
-        replyCommand.append("[");
-        replyCommand.append("3g").append("*");
-        replyCommand.append(deviceId).append("*");
-        replyCommand.append("0002").append("*");
-        replyCommand.append(adviceType);
-        replyCommand.append("]");
-        String replyCommandStr = replyCommand.toString();
-        ByteBuf buffer = Unpooled.buffer(replyCommandStr.getBytes().length);
-        buffer.writeBytes(replyCommandStr.getBytes());
-        ChannelFuture channelFuture = channel.writeAndFlush(buffer);
-        channelFuture.addListener(new GenericFutureListener<Future<? super Void>>() {
-
-            @Override
-            public void operationComplete(Future<? super Void> future) throws Exception {
-                logger.info("Normal reply :" + replyCommandStr);
-            }
-        });
-    }
-
-    private Advice getAdevice(Object msg) {
-        Advice advice = new Advice();
-        try {
-            String message = String.valueOf(msg); // "【Receive from
-                                                  // 223.104.255.118
-                                                  // :61922】:[3G*3918197044*000D*LK,12642,0,93]";
-            int startIndex = message.indexOf("[");
-            int endIndex = message.indexOf("]");
-            String data = message.substring(startIndex + 1, endIndex); // [3G*3918197044*000D*LK,12642,0,93]
-            String[] bodys = data.split(",");
-            String headers = bodys[0];
-            String[] headersBodys = headers.split("\\*");
-            advice.setFacotry(headersBodys[0]);
-            advice.setDeviceId(headersBodys[1]);
-            advice.setAdvicelength(headersBodys[2]);
-            advice.setAdviceType(headersBodys[3]);
-            logger.info("设备上传头信息:" + advice.toString());
-            return advice;
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        return null;
-    }
-    
-    /*   数据[手表具体数据]             [对应位数]             [数据内容]
-     *   3G*3918197044*0107*UD       [0]         [厂商*设备  ID*内容长度*内容类型]
-         200917                      [1]                   日期
-         054140                      [2]                   时间
-         V                           [3]          gps定位是否有效[A]有效,[V]无效
-         31.171093                   [4]                   纬度
-         N                           [5]                  纬度表示
-         121.4215967                 [6]                   经度
-         E                           [7]                  经度表示
-         0.00                        [8]                   速度
-         0.0                         [9]                   方向
-         0.0                         [10]                  海拔
-         0                           [11]                 卫星个数
-         42,50                       [12]                gsm信号强度
-         14420                       [13]                  电量
-         0                           [14]                 计步数
-         00000010                    [15]                终端状态
-         7,255                       [16]           
-         460                         [17]
-         0                           [18]
-         ...                       ...
-     */
-    protected Device getDevice(String msg) throws Exception {
-        int startIndex = msg.indexOf("[");
-        int endIndex = msg.indexOf("]");
-        String data = msg.substring(startIndex + 1, endIndex);
-        String[] bodys = data.split(",");
-
-        Device device = new Device();
-        String gpsState = bodys[3];
-        logger.info("正在解析device,gpsState:" + gpsState);
-        /*if (!"A".equals(gpsState)) {
-            logger.info("gps定位为:" + gpsState + "无效");
-            return null;
-        }*/
-        String date = bodys[1];
-        String time = bodys[2];
-        Date timestamp = new SimpleDateFormat("ddMMyyHHmmss").parse(date + time);
-        device.setTimestamp(timestamp);
-        device.setLat(getDouble(bodys[4]));
-        device.setLng(getDouble(bodys[6]));
-        device.setSpeed(getDouble(bodys[8]));
-        device.setElectric(getDouble(bodys[13]));
-        device.setStep(getInteger(bodys[14]));
-        device.setItemState(bodys[16]);
-        // getDouble()
-        logger.info("设备上传具体监控项信息:" + device.toString());
-        return device;
-    }
-
-
-   
+	private static final Logger logger = LoggerFactory.getLogger(WatchServerHandler.class);
+
+	public void handle(String msg, Channel channel) throws Exception {
+		logger.info("设备上传数据:" + msg);
+		Advice advice = getAdevice(msg);
+		String deviceId = advice.getDeviceId();
+		String adviceType = advice.getAdviceType();
+
+		switch (adviceType) {
+
+		case "UD":
+		case "heart":
+		case "UD2":
+			receiveMsg(msg, deviceId, channel);
+			logger.info("正常存储设备信息:" + getDevice(msg).toString());
+			break;
+		case "LK":
+			normalReply(advice, channel);
+			break;
+		case "UPLOAD":
+			logger.info("device [{}] setting copy time success [{}]", deviceId, new Date());
+			break;
+
+		default:
+			break;
+		}
+	}
+
+	private void normalReply(Advice advice, Channel channel) {
+		String facotry = advice.getFacotry();
+		String adviceType = advice.getAdviceType();
+		String deviceId = advice.getDeviceId();
+		StringBuilder replyCommand = new StringBuilder();
+		replyCommand.append("[");
+		replyCommand.append("3g").append("*");
+		replyCommand.append(deviceId).append("*");
+		replyCommand.append("0002").append("*");
+		replyCommand.append(adviceType);
+		replyCommand.append("]");
+		String replyCommandStr = replyCommand.toString();
+		ByteBuf buffer = Unpooled.buffer(replyCommandStr.getBytes().length);
+		buffer.writeBytes(replyCommandStr.getBytes());
+		ChannelFuture channelFuture = channel.writeAndFlush(buffer);
+		channelFuture.addListener(new GenericFutureListener<Future<? super Void>>() {
+
+			@Override
+			public void operationComplete(Future<? super Void> future) throws Exception {
+				logger.info("Normal reply :" + replyCommandStr);
+			}
+		});
+	}
+
+	private Advice getAdevice(Object msg) {
+		Advice advice = new Advice();
+		try {
+			String message = String.valueOf(msg); // "【Receive from
+													// 223.104.255.118
+													// :61922】:[3G*3918197044*000D*LK,12642,0,93]";
+			int startIndex = message.indexOf("[");
+			int endIndex = message.indexOf("]");
+			String data = message.substring(startIndex + 1, endIndex); // [3G*3918197044*000D*LK,12642,0,93]
+			String[] bodys = data.split(",");
+			String headers = bodys[0];
+			String[] headersBodys = headers.split("\\*");
+			advice.setFacotry(headersBodys[0]);
+			advice.setDeviceId(headersBodys[1]);
+			advice.setAdvicelength(headersBodys[2]);
+			advice.setAdviceType(headersBodys[3]);
+			logger.info("设备上传头信息:" + advice.toString());
+			return advice;
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+		return null;
+	}
+
+	/*
+	 * 数据[手表具体数据] [对应位数] [数据内容] 3G*3918197044*0107*UD [0] [厂商*设备 ID*内容长度*内容类型]
+	 * 200917 [1] 日期 054140 [2] 时间 V [3] gps定位是否有效[A]有效,[V]无效 31.171093 [4] 纬度 N [5]
+	 * 纬度表示 121.4215967 [6] 经度 E [7] 经度表示 0.00 [8] 速度 0.0 [9] 方向 0.0 [10] 海拔 0 [11]
+	 * 卫星个数 42,50 [12] gsm信号强度 14420 [13] 电量 0 [14] 计步数 00000010 [15] 终端状态 7,255
+	 * [16] 460 [17] 0 [18] ... ...
+	 */
+	public Device getDevice(String msg) throws Exception {
+		int startIndex = msg.indexOf("[");
+		int endIndex = msg.indexOf("]");
+		String data = msg.substring(startIndex + 1, endIndex);
+		String[] bodys = data.split(",");
+
+		Device device = new Device();
+		String gpsState = bodys[3];
+		logger.info("正在解析device,gpsState:" + gpsState);
+		/*
+		 * if (!"A".equals(gpsState)) { logger.info("gps定位为:" + gpsState + "无效"); return
+		 * null; }
+		 */
+		String date = bodys[1];
+		String time = bodys[2];
+		Date timestamp = new SimpleDateFormat("ddMMyyHHmmss").parse(date + time);
+		device.setTimestamp(timestamp);
+		device.setLat(getDouble(bodys[4]));
+		device.setLng(getDouble(bodys[6]));
+		device.setSpeed(getDouble(bodys[8]));
+		device.setElectric(getDouble(bodys[13]));
+		device.setStep(getInteger(bodys[14]));
+		device.setItemState(bodys[16]);
+		// getDouble()
+		logger.info("设备上传具体监控项信息:" + device.toString());
+		return device;
+	}
+
+	public List<LbsInfo> getLBsInfo(String msg) throws Exception {
+		List<LbsInfo> lbsList = new ArrayList<>();
+		int startIndex = msg.indexOf("[");
+		int endIndex = msg.indexOf("]");
+		String data = msg.substring(startIndex + 1, endIndex);
+		String[] bodys = data.split(",");
+		String headers = bodys[0];
+		String[] headersBodys = headers.split("\\*");
+		String gpsState = bodys[3];
+		logger.info("正在解析device,gpsState:" + gpsState);
+	
+		String imei = "3588"+headersBodys[1]+"8";
+		String type = headersBodys[3];
+		if (("UD".equals(type) || "UD2".equals(type))&&!"A".equals(gpsState)) {
+			int length = Integer.valueOf(bodys[17]);
+			
+			String mcc = bodys[19];
+			String mnc = bodys[20];
+			 int start = 21;
+			
+			for (int i = 0; i < length; i++) {
+				LbsInfo lbsInfo = new LbsInfo();
+				lbsInfo.setImei(imei);
+				lbsInfo.setMcc(mcc);
+				lbsInfo.setMnc(mnc);
+				lbsInfo.setLac(bodys[start]);
+				start++;
+				lbsInfo.setCellid(bodys[start]);
+				start++;
+				int signal = Integer.valueOf(bodys[start]);
+//				if (signal>0) {
+//					signal = signal*2 - 113;
+//				}
+				lbsInfo.setSignal(signal);
+				start++;
+				lbsList.add(lbsInfo);
+			}
+		}
+		
+		return lbsList;
+	}
+
 }

+ 7 - 7
src/main/resources/application.yml

@@ -2,9 +2,9 @@ spring:
   application:
     name: device-acceptance
   kafka:
-    bootstrap-servers: 172.19.0.24:9092
+    bootstrap-servers: 192.168.0.119:9092
   redis:
-    host: 10.25.48.128
+    host: 192.168.0.119
     password: tidecloudredis
     timeout: 10000
     port: 6379
@@ -40,7 +40,7 @@ acceptance:
     port: 7510
     dataFileDir: /home/service/collector_7510/rawdata/
     handlerClass: com.tidecloud.dataacceptance.service.impl.BingShuiGpsServerHandler
-    enable: true
+    enable: false
     
    -
     name: bsj
@@ -49,7 +49,7 @@ acceptance:
     port: 6707
     dataFileDir: /home/service/collector_6707/rawdata/
     handlerClass: com.tidecloud.dataacceptance.service.impl.BSJGpsServerHandler
-    enable: true
+    enable: false
     
    -
     name: yitong
@@ -58,7 +58,7 @@ acceptance:
     port: 7011
     dataFileDir: /home/service/collector_yitong/rawdata-car/
     handlerClass: com.tidecloud.dataacceptance.service.impl.YiTongGpsServerHandler
-    enable: true    
+    enable: false    
    -
     name: yuguang
     topic: device-yuguang
@@ -66,7 +66,7 @@ acceptance:
     port: 7510
     dataFileDir: /home/service/collector_7510/rawdata/
     handlerClass: com.tidecloud.dataacceptance.service.impl.YuGuangGpsServerHandler
-    enable: true       
+    enable: false       
 
    -
     name: vorgea
@@ -75,7 +75,7 @@ acceptance:
     port: 7511
     dataFileDir: /home/service/collector_vorgea/rawdata/
     handlerClass: com.tidecloud.dataacceptance.service.impl.VorgeaUR0401ServerHandler
-    enable: true         
+    enable: false         
       
 logging:
   config:

+ 64 - 8
src/main/resources/dev/application.yml

@@ -5,26 +5,82 @@ spring:
     bootstrap-servers: 192.168.0.119:9092
   redis:
     host: 192.168.0.119
-    port: 6379
-    timeout: 10000
     password: tidecloudredis
+    timeout: 10000
+    port: 6379
+    max: 100
+    maxIdle: 10
+    minIdle: 3
+    maxWaitMills: 10000
 eureka:
   client:
     service-url:
       defaultZone: http://192.168.0.118:12000/eureka
   instance:
     prefer-ip-address: true
-server:
-  netty:
-    port: 7009
   port: 16666
   localaddress: 10.27.118.76
+
+acceptance:
+ device:
+  deviceList:
+   -
+    name: watch
+    topic: device-watch
+    ip: 10.27.118.76
+    port: 7009
+    dataFileDir: /home/service/collector_watch/rawdata/
+    handlerClass: com.tidecloud.dataacceptance.service.impl.WatchServerHandler
+    enable: true
+    
+   -
+    name: bingshui
+    topic: device-bingshui
+    ip: 10.27.118.76
+    port: 7510
+    dataFileDir: /home/service/collector_7510/rawdata/
+    handlerClass: com.tidecloud.dataacceptance.service.impl.BingShuiGpsServerHandler
+    enable: false
+    
+   -
+    name: bsj
+    topic: device-bsj
+    ip: 10.25.19.87
+    port: 6707
+    dataFileDir: /home/service/collector_6707/rawdata/
+    handlerClass: com.tidecloud.dataacceptance.service.impl.BSJGpsServerHandler
+    enable: false
+    
+   -
+    name: yitong
+    topic: device-yitong
+    ip: 10.27.118.76
+    port: 7011
+    dataFileDir: /home/service/collector_yitong/rawdata-car/
+    handlerClass: com.tidecloud.dataacceptance.service.impl.YiTongGpsServerHandler
+    enable: false    
+   -
+    name: yuguang
+    topic: device-yuguang
+    ip: 10.27.118.76
+    port: 7510
+    dataFileDir: /home/service/collector_7510/rawdata/
+    handlerClass: com.tidecloud.dataacceptance.service.impl.YuGuangGpsServerHandler
+    enable: false       
+
+   -
+    name: vorgea
+    topic: device-vorgea
+    ip: 10.27.118.76
+    port: 7511
+    dataFileDir: /home/service/collector_vorgea/rawdata/
+    handlerClass: com.tidecloud.dataacceptance.service.impl.VorgeaUR0401ServerHandler
+    enable: false         
+      
 logging:
   config:
     classpath: logback.xml
-  
-device:
-  topic: device-data
+
 
 
 

+ 73 - 4
src/main/resources/prod/application.yml

@@ -1,4 +1,8 @@
 spring:
+  application:
+    name: device-acceptance
+  kafka:
+    bootstrap-servers: 192.168.0.119:9092
   redis:
     host: 10.25.48.128
     password: tidecloudredis
@@ -8,11 +12,76 @@ spring:
     maxIdle: 10
     minIdle: 3
     maxWaitMills: 10000
-server:
-  netty:
-    port: 7009
+eureka:
+  client:
+    service-url:
+      defaultZone: http://192.168.0.118:12000/eureka
+  instance:
+    prefer-ip-address: true
   port: 16666
   localaddress: 10.27.118.76
+
+acceptance:
+ device:
+  deviceList:
+   -
+    name: watch
+    topic: device-watch
+    ip: 10.27.118.76
+    port: 7009
+    dataFileDir: /home/service/collector_watch/rawdata/
+    handlerClass: com.tidecloud.dataacceptance.service.impl.WatchServerHandler
+    enable: true
+    
+   -
+    name: bingshui
+    topic: device-bingshui
+    ip: 10.27.118.76
+    port: 7510
+    dataFileDir: /home/service/collector_7510/rawdata/
+    handlerClass: com.tidecloud.dataacceptance.service.impl.BingShuiGpsServerHandler
+    enable: false
+    
+   -
+    name: bsj
+    topic: device-bsj
+    ip: 10.25.19.87
+    port: 6707
+    dataFileDir: /home/service/collector_6707/rawdata/
+    handlerClass: com.tidecloud.dataacceptance.service.impl.BSJGpsServerHandler
+    enable: false
+    
+   -
+    name: yitong
+    topic: device-yitong
+    ip: 10.27.118.76
+    port: 7011
+    dataFileDir: /home/service/collector_yitong/rawdata-car/
+    handlerClass: com.tidecloud.dataacceptance.service.impl.YiTongGpsServerHandler
+    enable: false    
+   -
+    name: yuguang
+    topic: device-yuguang
+    ip: 10.27.118.76
+    port: 7510
+    dataFileDir: /home/service/collector_7510/rawdata/
+    handlerClass: com.tidecloud.dataacceptance.service.impl.YuGuangGpsServerHandler
+    enable: false       
+
+   -
+    name: vorgea
+    topic: device-vorgea
+    ip: 10.27.118.76
+    port: 7511
+    dataFileDir: /home/service/collector_vorgea/rawdata/
+    handlerClass: com.tidecloud.dataacceptance.service.impl.VorgeaUR0401ServerHandler
+    enable: false         
+      
 logging:
   config:
-    classpath: logback.xml
+    classpath: logback.xml
+
+
+
+
+    

+ 66 - 0
src/test/java/com/tidecloud/dataacceptance/GetLbsData.java

@@ -0,0 +1,66 @@
+package com.tidecloud.dataacceptance;
+
+import java.net.URLEncoder;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.lang.StringUtils;
+import org.apache.http.HttpEntity;
+import org.apache.http.HttpResponse;
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.util.EntityUtils;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.tidecloud.dataacceptance.entity.LbsInfo;
+import com.tidecloud.dataacceptance.service.impl.WatchServerHandler;
+
+public class GetLbsData {
+
+	public GetLbsData() {
+		// TODO Auto-generated constructor stub
+	}
+
+	public static void main(String[] args) throws Exception {
+		String msg = "[3G*3925079946*0116*UD2,070418,155939,V,38.034930,N,114.4015300,E,0.00,0.0,0.0,0,60,52,4,0,00000010,7,255,460,0,12447,45388,132,12500,40896,127,12500,10589,125,12500,40897,122,13000,40087,121,12500,47974,120,12500,49241,120,2,TP-LINK_5AEC,b0:95:8e:d7:5a:ec,-94,guojiahuan,50:bd:5f:7b:af:7c,-85,13.1]";
+		String key = "d1b4b5262f1cb84a50d438c75d615463";
+
+		WatchServerHandler handler = new WatchServerHandler();
+		List<LbsInfo> device = handler.getLBsInfo(msg);
+		String bts = device.get(0).toString();
+		String imei = device.get(0).getImei();
+		device.remove(0);
+		String nearbts = StringUtils.join(device, "|");
+
+//		String apiUri = "http://apilocate.amap.com/position?accesstype=0&serverip=10.2.166.4&output=json&cdma=0&imei="
+//				+ imei + "&bts=" + bts + "&nearbts=" + nearbts + "&key=" + key;
+		
+		String apiUri = "http://apilocate.amap.com/position?accesstype=0&serverip=10.2.166.4&output=json&cdma=0&imei="
+				+ imei + "&bts=" + bts + "&nearbts=" + URLEncoder.encode(nearbts,"UTF-8") + "&key=" + key;
+		//apiUri = "http://apilocate.amap.com/position?"+URLEncoder.encode(apiUri, "UTF-8");
+		System.out.println(apiUri);
+		 HttpClient client= HttpClients.createDefault();
+         //创建httpget实例
+         HttpGet httpGet=new HttpGet(apiUri);
+         //执行 get请求
+         HttpResponse response=client.execute(httpGet);
+         //返回获取实体
+         HttpEntity entity=response.getEntity();
+         //获取网页内容,指定编码
+         String web= EntityUtils.toString(entity,"UTF-8");
+         JSONObject jsonObject = JSON.parseObject(web);
+         String status = jsonObject.getString("status");
+         if ("1".equals(status)) {
+        	 JSONObject result = jsonObject.getJSONObject("result");
+        	 String location = result.getString("location");
+        	 System.out.println(location);
+         }
+         
+         
+         //输出网页
+         System.out.println(web);
+	}
+
+}