我来详细讲解一下如何使用Java内置Http Server构建Web应用的攻略。
1. 前置知识
在学习Java内置Http Server构建Web应用之前,需要掌握以下技能:
- Java基础语法
- Maven项目构建和管理
- HTTP协议的基础知识
- Servlet和JSP技术的基础知识
2. 环境搭建
为了使用Java内置Http Server构建Web应用,我们需要按照以下步骤进行环境搭建:
- 安装Java JDK
Java JDK官方网站:https://www.oracle.com/java/technologies/javase-downloads.html
- 安装Maven
Maven官方网站:https://maven.apache.org/
- 创建Maven项目
在命令行中执行以下命令:
mvn archetype:generate -DgroupId=com.example -DartifactId=mywebapp -DarchetypeArtifactId=maven-archetype-webapp
这样就创建了一个名为mywebapp的Maven Web项目。
3. 内置Http Server的使用
内置Http Server是JDK 1.6之后新增的特性,提供了一种快速、简单、轻量级的方式来创建Web应用。下面我们来看两个内置Http Server的使用示例:
示例一:简单Web应用
在mywebapp项目的src/main/java目录下创建一个MyHttpServer.java文件,代码如下:
import java.io.IOException;
import java.net.InetSocketAddress;
import com.sun.net.httpserver.HttpServer;
public class MyHttpServer {
public static void main(String[] args) throws IOException {
HttpServer server = HttpServer.create(new InetSocketAddress(8080), 0);
server.createContext("/", new MyHandler());
server.setExecutor(null);
server.start();
System.out.println("Server started");
}
}
在mywebapp项目的src/main/java目录下创建一个MyHandler.java文件,代码如下:
import java.io.IOException;
import java.io.OutputStream;
import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
public class MyHandler implements HttpHandler {
@Override
public void handle(HttpExchange t) throws IOException {
String response = "Hello, World!";
t.sendResponseHeaders(200, response.length());
OutputStream os = t.getResponseBody();
os.write(response.getBytes());
os.close();
}
}
执行以下命令启动Web应用:
mvn package
java -cp target/mywebapp-1.0-SNAPSHOT/WEB-INF/classes MyHttpServer
在浏览器中输入http://localhost:8080,就可以看到Hello, World!这个字符串。
示例二:静态文件服务器
在mywebapp项目的src/main/java目录下创建一个StaticFileServer.java文件,代码如下:
import java.io.IOException;
import java.net.InetSocketAddress;
import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
import com.sun.net.httpserver.HttpServer;
public class StaticFileServer {
public static void main(String[] args) throws IOException {
HttpServer server = HttpServer.create(new InetSocketAddress(8080), 0);
server.createContext("/", new MyHandler());
server.setExecutor(null);
server.start();
System.out.println("Server started");
}
static class MyHandler implements HttpHandler {
@Override
public void handle(HttpExchange t) throws IOException {
if (t.getRequestURI().toString().equals("/")) {
t.sendResponseHeaders(301, -1);
t.getResponseHeaders().set("Location", "/index.html");
t.close();
return;
}
String fileName = t.getRequestURI().toString().substring(1);
if (!new File(fileName).exists()) {
t.sendResponseHeaders(404, -1);
t.close();
return;
}
String mimeType = Files.probeContentType(Paths.get(fileName));
t.getResponseHeaders().set("Content-Type", mimeType);
t.sendResponseHeaders(200, 0);
OutputStream os = t.getResponseBody();
InputStream is = new FileInputStream(fileName);
byte[] buffer = new byte[4096];
int read = 0;
while ((read = is.read(buffer)) != -1) {
os.write(buffer, 0, read);
}
is.close();
os.close();
}
}
}
将项目的静态文件放在mywebapp项目的src/main/resources/static目录下,启动Web应用后访问http://localhost:8080就可以看到静态文件了。
4. 总结
使用Java内置Http Server构建Web应用可以快速地构建一个简单的Web应用。本文介绍了两个使用Java内置Http Server构建Web应用的示例,分别是简单的Web应用和静态文件服务器。明白了吗?
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java 内置Http Server构建web应用案例详解 - Python技术站