在 Java 中从客户端到服务器的通信
Communication from client to server in Java
系统
对于学校项目,我们需要构建一个系统,包括:
- 两个Raspberry Pi(本地通过以太网通信,一个客户端和一个服务器)
- 服务器 Pi(强加Tomcat)必须根据连接到 Pi 客户端的控制器的输入生成一个网页。
- 实施是使用 Java 和 Java EE 完成的。
这是高级系统:
The system needed (high level)
问题
我和我的同事面临的问题是,我们希望 server 在 client 发生变化时更新网页(即按下控制器上的按钮)。通常,似乎是通过另一种方式进行通信,即从服务器到客户端。
在Java中有什么办法吗?
备注:
- 网络浏览器和客户端不一定在同一台机器上。
您可以使用 Servlet,尤其是 google HttpServlet 作为示例代码,以便您可以创建样板代码。您将设计一个具有 UI 交互的网页,如您所说,单击按钮,假设将生成顶部导航栏下的主要部分。最小化,客户端连接并单击按钮后,您的服务器将呈现页面。
你可以先玩doGet/doPostHttpServlet
class的方法,这里有一个简单的例子;
package com.example.Main;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/mainpage")
public class SimpleServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String outputHtml = "<html><body><h3>Hello World !</h3></body></html>";
resp.getWriter().write(outputHtml);
}
}
这只是一个 HttpServlet hello world。很容易看出,您可以修改输出HTML,因此您需要编写额外的classes 来进行渲染和生成输出。
使用 class 由于用户交互而获取参数并生成 HTML 输出会很好(也许你可以使用 Builder Pattern。
系统
对于学校项目,我们需要构建一个系统,包括:
- 两个Raspberry Pi(本地通过以太网通信,一个客户端和一个服务器)
- 服务器 Pi(强加Tomcat)必须根据连接到 Pi 客户端的控制器的输入生成一个网页。
- 实施是使用 Java 和 Java EE 完成的。
这是高级系统: The system needed (high level)
问题
我和我的同事面临的问题是,我们希望 server 在 client 发生变化时更新网页(即按下控制器上的按钮)。通常,似乎是通过另一种方式进行通信,即从服务器到客户端。
在Java中有什么办法吗?
备注:
- 网络浏览器和客户端不一定在同一台机器上。
您可以使用 Servlet,尤其是 google HttpServlet 作为示例代码,以便您可以创建样板代码。您将设计一个具有 UI 交互的网页,如您所说,单击按钮,假设将生成顶部导航栏下的主要部分。最小化,客户端连接并单击按钮后,您的服务器将呈现页面。
你可以先玩doGet/doPostHttpServlet
class的方法,这里有一个简单的例子;
package com.example.Main;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/mainpage")
public class SimpleServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String outputHtml = "<html><body><h3>Hello World !</h3></body></html>";
resp.getWriter().write(outputHtml);
}
}
这只是一个 HttpServlet hello world。很容易看出,您可以修改输出HTML,因此您需要编写额外的classes 来进行渲染和生成输出。
使用 class 由于用户交互而获取参数并生成 HTML 输出会很好(也许你可以使用 Builder Pattern。