Java实现Web浏览器对ServerSocket服务器的简单资源访问

服务器端功能编写:

package test;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class BSframe {

	public static void main(String[] args) throws IOException {
		ServerSocket server = new ServerSocket(8080); // 创建服务器套接字并指定端口号
		while (true) { // 服务器保持监听状态以及时完成对请求的响应
			final Socket socket = server.accept(); // 阻塞式等待客户端连接
			InputStream inputStream = socket.getInputStream(); // 获取服务器端字节输入流
			// 构建字节字符转换流并向其中传入字节输入流
			InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
			// 构建缓冲字符输入流并向其中传入字节字符转换流
			BufferedReader bufferedReader = new BufferedReader(inputStreamReader);		
			OutputStream outputStream = socket.getOutputStream(); // 获取服务器端字节输出流
			String readLine = bufferedReader.readLine(); // 缓冲流读取数据
			// System.out.println(readLine); // GET /web/index.html HTTP/1.1
			String[] split = readLine.split(" "); // 根据请求头空格分隔字符串
			String trim = split[1].trim().substring(1); // 获取请求资源路径
			// System.out.println(trim); // web/index.html
			// 构建文件字节输入流并根据获取的请求资源路径访问服务器资源
			FileInputStream fileInputStream = new FileInputStream(trim);
			if (trim.endsWith(".ico")) {
				outputStream.write("HTTP/1.1 200 OK\r\n".getBytes());
				outputStream.write("Content-Type:image/x-ico\r\n\r\n".getBytes());
			} else if (trim.endsWith(".html")) {
				outputStream.write("HTTP/1.1 200 OK\r\n".getBytes());
				outputStream.write("Content-Type:text/html\r\n\r\n".getBytes());
			} else if (trim.endsWith(".css")) {
				outputStream.write("HTTP/1.1 200 OK\r\n".getBytes());
				outputStream.write("Content-Type:text/css\r\n\r\n".getBytes());
			}
			byte[] buffer = new byte[1024];
			int len = 0;
			// 文件字节输入流依次读取资源数据
			while ((len = fileInputStream.read(buffer)) != -1) {
				outputStream.write(buffer, 0, len);
			}
			outputStream.close(); // 关闭流对象释放资源
			
			// 访问到的页面信息
//			<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 
//			<% String path = request.getContextPath(); String basePath = request.getScheme()+
//					"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> 
//					This is my JSP page.
			
		}
	}

}

访问测试:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_44965393/article/details/112734322