⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 robotserver.java

📁 MSN机器人源码
💻 JAVA
字号:
package com.msnrobotweb.http;import java.net.InetSocketAddress;import java.net.SocketAddress;import java.util.LinkedHashMap;import java.util.regex.Matcher;import java.util.regex.Pattern;import net.sf.jml.MsnMessenger;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.simpleframework.http.Container;import org.simpleframework.http.Request;import org.simpleframework.http.Response;import org.simpleframework.http.connect.Connection;import org.simpleframework.http.connect.SocketConnection;import com.msnrobotweb.http.action.PingAction;import com.msnrobotweb.http.action.PostAction;/** * Robot Server main class. * @author bm888888@gmail.com * */public class RobotServer implements Container {    private static Log log = LogFactory.getLog(RobotServer.class);    MsnMessenger messenger;      private LinkedHashMap<String, HttpAction> actions = new LinkedHashMap<String, HttpAction>();    public RobotServer() {        actions.put("ping", new PingAction());    actions.put("post", new PostAction());  }    public RobotServer(  MsnMessenger messenger) {        actions.put("ping", new PingAction());    actions.put("post", new PostAction());        this.messenger = messenger;  }    public void handle(Request request, Response response) {           try {            String uri = request.getAddress().getPath().getPath();      if(log.isDebugEnabled()){        log.debug(uri);      }          HttpAction action = getAction(uri);            if(null == action) {                response.setCode(404);              }else {                RobotRequest request2 = new RobotRequest(messenger,request);        RobotResponse response2 = new RobotResponse(response);        action.process(request2, response2);               }          } catch (Exception e) {      log.error(e);      //output 500 error to client            response.setCode(500);      response.setText("500 error");            try {        response.getPrintStream().print("500 error");      } catch (Exception e1) {        log.error(e1);              }          }finally {      response.set("Server", "Powered By Simple Server");      try {        response.getPrintStream().close();      } catch (Exception e) {        log.error(e);       }    }              }    protected HttpAction getAction(String URI) {        /**     * 匹配任意字符但不是/和?     */        String regex = "\\w+";    Pattern pattern = Pattern.compile(regex);        Matcher matcher = pattern.matcher(URI);        HttpAction action=null;        String url = null;    if(matcher.find()){        url  = URI.substring(matcher.start() , matcher.end());                if(log.isDebugEnabled()){            log.debug(url);        }                action = actions.get(url);                if(action ==null){            if(log.isDebugEnabled()){                log.debug("Action Not Find");            }        }            }        return action;}    public static void main(String[] list) throws Exception {    int port = 8080;    Container container = new RobotServer();    Connection connection = new SocketConnection(container);    SocketAddress address = new InetSocketAddress(port);    connection.connect(address);    System.out.print("http server started with port:" + port);  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -