1. 项目结构
你的项目包括以下文件:
DateServer.java
: Java源代码文件,包含HTTP服务器的实现。MANIFEST.MF
: MANIFEST文件,用于描述Java JAR文件的属性。
2. 示例代码
DateServer.java
文件包含了一个简单的HTTP服务器,它能够响应请求并返回当前日期和时间。这个服务器监听端口8022。
import com.sun.net.httpserver.HttpServer;
import com.sun.net.httpserver.HttpHandler;
import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.Headers;
import java.io.IOException;
import java.io.OutputStream;
import java.net.InetSocketAddress;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateServer {
public static void main(String[] args) throws IOException {
HttpServer server = HttpServer.create(new InetSocketAddress(8022), 0);
server.createContext("/", new MyHandler());
server.start();
System.out.println("Server started on port 8022");
}
static class MyHandler implements HttpHandler {
@Override
public void handle(HttpExchange exchange) throws IOException {
// 添加跨域相关的响应头
Headers headers = exchange.getResponseHeaders();
headers.set("Access-Control-Allow-Origin", "*"); // 允许所有来源
headers.set("Access-Control-Allow-Methods", "GET"); // 允许的 HTTP 方法
headers.set("Access-Control-Allow-Headers", "Content-Type"); // 允许的请求头
headers.set("Access-Control-Max-Age", "3600"); // 预检请求缓存时间
String response = "Current date and time: " + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
exchange.sendResponseHeaders(200, response.length());
OutputStream os = exchange.getResponseBody();
os.write(response.getBytes());
os.close();
}
}
}
3. MANIFEST.MF 文件内容
MANIFEST.MF
文件包含以下一行文本,用于指定Java JAR文件的主类(Main-Class):
Main-Class: DateServer
请确保在文本的末尾有一个空白行,并且没有其他额外的文本。
4. 编译和打包
你需要执行以下两个命令来编译和打包项目:
-
使用
javac
编译DateServer.java
文件:javac DateServer.java
-
使用
jar
命令将编译后的.class
文件和MANIFEST.MF
文件打包成一个JAR文件:jar cfm DateServer.jar MANIFEST.MF *.class
5. 测试
你可以测试项目,启动JAR文件,并通过访问特定地址来获取当前日期和时间。请注意,你需要在命令行中执行以下命令启动服务器:
java -jar DateServer.jar
然后,你可以通过浏览器或其他HTTP客户端访问服务器的地址,通常是 http://localhost:8022
(或你设置的地址)来获取当前日期和时间。
这样,你应该能够成功执行和测试这个项目了。如果有任何问题或需要进一步的帮助,请随时提问。