首页 > 解决方案 > 如何将数据从 html 表单发送到 java 服务器套接字?

问题描述

问题是这样的:我使用 ServerSocket 和 Socket 类创建了一个 java 服务器。html 页面显示正确,但我不知道如何将数据(从输入类型 = 文本)发送到我的 java 服务器,然后显示我在另一个 html 页面上写的消息。

代码如下:

我的服务器类:

private int port;
private ServerSocket ss;
private Socket s;
private PrintWriter pw;

public MyServer(){

    port = 1245;
    try{
        ss = new ServerSocket(port);
        System.out.println("server creato");
    }
    catch(Exception e){
        e.printStackTrace();
    }
    listen();
}

public void listen(){
    try{
        while(true){
            s = ss.accept();
            System.out.println("OK");

            if(s == null)
                System.exit(1);

            Client c = new Client(s);
            c.start();
        }
    }catch(Exception e){
        e.printStackTrace();
    }
}

客户端类(扩展线程):

public Client(Socket s){
        this.s = s;
        try{
            pw = new PrintWriter(s.getOutputStream(), true);
            br = new BufferedReader(new InputStreamReader(s.getInputStream()));
            f = new File("test.html");

        }catch(Exception e){
            e.printStackTrace();
        }
    }

    public BufferedReader getBr(){
        return this.br;
    }

    public PrintWriter getPw(){
        return this.pw;
    }

    public File getF(){
        return this.f;
    }

    public void displayHtml(){

            try {
                FileInputStream fis = new FileInputStream(f);

                BufferedReader br2 = new BufferedReader(new InputStreamReader(fis));
                StringBuilder sb = new StringBuilder();
                String ris = null;

                while((ris = br2.readLine()) != null){
                    sb.append(ris);
                    //sb.append("\r\n");
                }
                pw.println("HTTP/1.1 200 OK");
                pw.println("Content-Type: text/html");
                pw.println("\r\n");
                pw.println(sb.toString());
                pw.flush();
                s.close();
            }catch(Exception e){
                e.printStackTrace();
            }
    }

    public void

    public void run(){
        try{   
            displayHtml();

        }catch(Exception e){
            e.printStackTrace();
        }
    }
}

最后,主类:

 public static void main(String[] args){
         MyServer ms = new MyServer();
    }

我正在寻找一个好的解决方案。我不想删除我所有的代码来做到这一点。谢谢 :)

标签: javahtmlserversocket

解决方案


推荐阅读