`
malixxx
  • 浏览: 97769 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

jetty的一个小程序

    博客分类:
  • java
阅读更多
用jetty写了一个小程序,主要是解决局域网内很多人不能上网的问题.我的想法是通过一台可以上网的主机,启动这个服务.其他人访问他就可以浏览网页.写的很糙.不过能跑,有的页面还是有问题.

思路:

浏览器   -->    jetty服务,httpclient(这里的url写死的 http://www.google.cn/search?q= 查询内容)   -->   google
浏览器   <--    这里有流操作,把一些url替换掉                                                    <--   google

一下都是一样的,还有翻页也没写. get提交加一个 属性start=0 或10 20 ...   

不过感觉很慢,就是随便写着玩的.  希望大家给点意见.  

图片为要导入的包.

package Jetty_Test.mytest;

import java.util.Random;

import org.mortbay.jetty.Connector;
import org.mortbay.jetty.Server;
import org.mortbay.jetty.nio.SelectChannelConnector;
import org.mortbay.jetty.servlet.Context;
import org.mortbay.jetty.servlet.HashSessionIdManager;
import org.mortbay.jetty.servlet.ServletHolder;
import org.mortbay.thread.BoundedThreadPool;

public class JettyMain implements Constant{
    static Server server;

    static {
        server = new Server();
    }

    public static void startserver() {
        // Service对象就是Jetty容器,实例化出这样一个对象就产生了一个容器。
        server.setSessionIdManager(new HashSessionIdManager(new Random()));
        server.setStopAtShutdown(true);

        BoundedThreadPool pool = new BoundedThreadPool();
        pool.setLowThreads(minThreads);
        pool.setMaxThreads(maxThreads);
        server.setThreadPool(pool);

        Connector connector = new SelectChannelConnector();
        connector.setPort(httpPort);
        connector.setHost(ipStr);
        server.addConnector(connector);

        Context context = new Context(server, "/", Context.SESSIONS);
        context.addServlet(new ServletHolder(new MainServlet()), context_Main+"/*");
        context.addServlet(new ServletHolder(new GoogleServlet()), context_Google+"/*");
        context.addServlet(new ServletHolder(new PageServlet()), context_Page+"/*");
        // HandlerCollection handlers = new HandlerCollection();
        // ContextHandlerCollection contexts = new ContextHandlerCollection();
        // RequestLogHandler requestLogHandler = new RequestLogHandler();
        // handlers.setHandlers(new Handler[] { contexts, new DefaultHandler(),
        // requestLogHandler });
        // server.setHandler(handlers);
      
//        ContextHandlerCollection contexts = new ContextHandlerCollection();
//        server.setHandler(contexts);
//
//        WebAppContext webapp = new WebAppContext(contexts, "webapp", "/testjsp");
//        SessionManager session = webapp.getSessionHandler().getSessionManager();
//
//        HandlerCollection handlers = new HandlerCollection();
//        handlers.setHandlers(new Handler[] { context, webapp });
//        server.setHandler(handlers);

        // Handler handler = new MyHandelr();
        // server.setHandler(handler);
        try {
            server.start();
            // server.join();
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

    public static void main(String args[]) {
        startserver();
    }
}







package Jetty_Test.mytest;

import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.mortbay.jetty.HttpConnection;
import org.mortbay.jetty.Request;

public class MainServlet extends HttpServlet {
    private static final long serialVersionUID = -5499674229427179325L;

    static byte[] buf;

    static {
        InputStream file = null;
        ByteArrayOutputStream out = null;
        try {
            file = new FileInputStream(Constant.filePath);
            out=new ByteArrayOutputStream();
          
            int temp=file.read();
            while(temp!=-1){
                out.write(temp);
                temp=file.read();
            }
            buf=out.toByteArray();
        } catch (IOException e) {
            e.printStackTrace();
        }finally{
            try {
                file.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            try {
                out.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
  
    public void init() throws ServletException {
        super.init();
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Request base_request = (request instanceof Request) ? (Request) request : HttpConnection.getCurrentConnection().getRequest();
        base_request.setHandled(true);

        response.setContentType("text/html");
        response.setCharacterEncoding("UTF-8");
        response.setStatus(HttpServletResponse.SC_OK);

        OutputStream outputStream = null;
        try {
            outputStream = response.getOutputStream();
            outputStream.write(buf);
            outputStream.flush();
        } finally {
            if (outputStream != null) {
                outputStream.close();
            }
        }
    }

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }
}













package Jetty_Test.mytest;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.GetMethod;

public class PageServlet extends HttpServlet {
    public void init() throws ServletException {
        super.init();
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String urlstr = request.getParameter("urlstr");
//        System.out.println("PageServlet url:" + urlstr);

        if (urlstr == null) {
            urlstr = "";
        }

        // urlstr = URLEncoder.encode(urlstr);
        HttpClient httpclient = new HttpClient();
        GetMethod postMethod = new GetMethod(urlstr);
        httpclient.executeMethod(postMethod);

        InputStream input = postMethod.getResponseBodyAsStream();
        response.setCharacterEncoding("uft8");
        OutputStream out = response.getOutputStream();

        Help.analyse(input, out);
    }

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }

}














package Jetty_Test.mytest;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.GetMethod;

public class GoogleServlet extends HttpServlet {
    private static final long serialVersionUID = 8306441036467951814L;

    public void init() throws ServletException {
        super.init();
    }

    public static void main(String args[]) throws UnsupportedEncodingException {
        String str = "a";
        byte[] bs = str.getBytes("utf8");
        // byte[] bs=str.getBytes("gbk");
        for (int i = 0; i < bs.length; i++) {
//            System.out.println(bs[i] + "");
        }
//        System.out.println();
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String searchcontext = request.getParameter("searchcontext");
        if (searchcontext == null) {
            searchcontext = "";
        }
        String URLTest = "http://www.google.cn/search?q=" + URLEncoder.encode(searchcontext);
        HttpClient httpclient = new HttpClient();
        GetMethod postMethod = new GetMethod(URLTest);
        httpclient.executeMethod(postMethod);

        InputStream input = postMethod.getResponseBodyAsStream();
        response.setCharacterEncoding("uft8");
        OutputStream out = response.getOutputStream();

        Help.analyse(input, out);
    }

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }

}




package Jetty_Test.mytest;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;

public class Help implements Constant{
    private static byte[] handleALine(byte[] buff) throws UnsupportedEncodingException {
        StringBuilder str = new StringBuilder();
        if (buff[9] == 'h' && buff[10] == 't' && buff[11] == 't' && buff[12] == 'p') {
            str.append("a href=\"http://" + ipStr + ":" + httpPort + context_Page + "?urlstr=");

            for (int i = 9; i < buff.length; i++) {
                if (buff[i] == '"') {
                    break;
                }
                str.append((char) buff[i]);
            }

            str.append("\"");
        } else {
            str.append("a href=\"http://" + ipStr + ":" + httpPort + context_Main +"\"");
        }
        // System.out.println(str.toString());
        byte[] bss = str.toString().getBytes("utf8");
        return bss;
    }

    public static void analyse(InputStream input, OutputStream out) throws IOException {
        byte[] buff = null;
        int flg = 0;
        int flga = 0;
        long num = 0;
        int index = 0;

        int temp = input.read();
        while (temp != -1) {

            num++;
            if (temp == '<') {
                flg = 1;
                num = 1;
            } else if (temp == 'a') {
                if (flg == 1 && num == 2) {
                    flga = 1;
                    buff = new byte[2048];
                    buff[index] = '<';
                    index++;
                } else {
                    flg = 0;
                }
            } else if (temp == '>') {
                if (flga == 1) {
                    buff[index] = (byte) temp;
                    index++;

                    for (int i = 0; i < buff.length; i++) {
                        // System.out.print((char) buff[i]);
                    }
                    byte[] bss = handleALine(buff);
                    for (int i = 0; i < bss.length; i++) {
                        out.write(bss[i]);
                    }
                    // System.out.println();
                }
                flg = 0;
                flga = 0;
                index = 0;
            } else {

            }

            if (flga == 1) {
                buff[index] = (byte) temp;
                index++;
            } else {
                out.write(temp);
            }
            temp = input.read();
        }

        input.close();
        out.close();
    }
}



package Jetty_Test.mytest;

public interface Constant {
    static String context_Main = "/index";
    static String context_Google = "/google";
    static String context_Page = "/pageshow";

    static int minThreads = 5;
    static int maxThreads = 10;
  
    static String ipStr = "192.168.1.5";
    static int httpPort = 12345;
  
    static String filePath="src/Jetty_Test/mytest/start.txt";
}



start.txt文件

<html>
<body>

<form action="http://192.168.1.5:12345/google" method="get">
google搜索 请输入你要搜索的内容:
<input type="text" name="searchcontext">
<input type="submit" value="提交">
</form>
<p/>
<b>mgt 测试</b><br/>
<a href="http://200.eff.com:81/trunk/index.jsp" target="_blank">黄师傅 mgt</a>  http://200.eff.com:81/trunk/index.jsp <br/>
<a href="http://163.eff.com:88/trunk/" target="_blank">163 mgt</a>  http://163.eff.com:88/trunk/
<p/>

<b>总控查看</b><br/>
<a href="https://192.168.0.73/list.jsp" target="_blank">23 总控</a>  https://192.168.0.73/list.jsp  <br/>
<a href="https://192.168.0.173/list.jsp" target="_blank">25 总控</a>  https://192.168.0.173/list.jsp
<p/>

<b>eim服务查看</b><br/>
<a href="http://192.168.0.23:5227/admin/login.jsp" target="_blank">23 eim控制</a>  http://192.168.0.23:5227/admin/login.jsp <br/>
<a href="http://192.168.0.25:5227/admin/login.jsp" target="_blank">25 eim控制</a>  http://192.168.0.25:5227/admin/login.jsp
<p/>

<b>测试客户端</b><br/>
<a href="http://192.168.0.10/" target="_blank">测试客户端</a>  http://192.168.0.10/ <p/>

<b>工具下载</b><br/>
<a href="ftp://192.168.2.1/" target="_blank">工具下载</a>  ftp://192.168.2.1/ <p/>

<b>bug管理</b><br/>
<a href="http://192.168.0.3/TDBIN/start_a.htm" target="_blank">bug管理(td)</a>  http://192.168.0.3/TDBIN/start_a.htm <p/>

<b>svn地址</b><br/>
<a href="#">svn地址</a>  https://192.168.0.2/svn/server <p/>

<b>Search URL</b><br/>
<a href="#">更新全部的doc 注意ip地址: </a>  http://192.168.0.182:8089/search/action/?action=updateAll <br/>
<a href="#">优化单个公司索引 注意ip地址: </a>  http://192.168.0.182:8089/search/action/?action=optimizeAll <br/>
<a href="#">更新单个的doc 注意ip地址,公司id: </a>  http://192.168.0.25:8089/search/action/?corpID=5349&action=update <br/>
<a href="#">优化单个公司索引 注意ip地址,公司id: </a>  http://192.168.0.182:8089/search/action/?corpID=5349&action=optimize <p/>





</body>
</html>




分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics