首页 > 其他分享 >通过浏览器访问并显示网页内容

通过浏览器访问并显示网页内容

时间:2023-06-18 18:36:24浏览次数:35  
标签:HTTP 浏览器 socket close writer 访问 new 网页内容 println

以下是一个简单的Java HTTP服务器示例,可以通过浏览器访问并显示网页内容。

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

public class SimpleHttpServer {

    public static void main(String[] args) {
        try {
            ServerSocket serverSocket = new ServerSocket(80);
            while (true) {
                Socket socket = serverSocket.accept();
                handleRequest(socket);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private static void handleRequest(Socket socket) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        String line;
        String requestMethod = null;
        String requestUri = null;
        while ((line = reader.readLine()) != null && !line.trim().isEmpty()) {
            if (line.startsWith("GET")) {
                String[] parts = line.split("\\s+");
                requestMethod = parts[0];
                requestUri = parts[1];
            }
        }

        if (requestMethod == null || requestUri == null) {
            return;
        }

        OutputStream outputStream = socket.getOutputStream();
        PrintWriter writer = new PrintWriter(new OutputStreamWriter(outputStream));
        if (requestUri.equals("/")) {
            writer.println("HTTP/1.1 200 OK");
            writer.println("Content-Type: text/html; charset=utf-8");
            writer.println("Connection: close");
            writer.println();
            writer.println("<html><head><title>Welcome</title></head>");
            writer.println("<body><h1>Welcome to my website!</h1></body></html>");
        } else {
            writer.println("HTTP/1.1 404 Not Found");
            writer.println("Content-Type: text/plain; charset=utf-8");
            writer.println("Connection: close");
            writer.println();
            writer.println("404 Not Found");
        }
        writer.flush();

        reader.close();
        writer.close();
        socket.close();
    }
}

该程序使用了Java的Socket类和ServerSocket类构建HTTP服务器,监听80端口。当浏览器发送GET请求时,服务器将解析请求中的方法和URI,根据请求URI返回相应的内容。

在以上代码中,当请求URI为"/"时,返回一个简单的欢迎页面;否则返回404 Not Found错误。可以通过修改输出内容及请求处理部分的代码来实现包含动态内容和更复杂功能的Web应用程序。

注意,此示例代码是一个仅用于演示HTTP服务器基本工作原理的简单程序,因此并未考虑实际应用中可能涉及的各种安全漏洞、性能问题等问题,请勿直接在生产环境中使用。

标签:HTTP,浏览器,socket,close,writer,访问,new,网页内容,println
From: https://blog.51cto.com/u_16096459/6509127

相关文章

  • Nginx代理静态界面资源后,浏览器端CSS、JS不起作用
    现象说明:VUE项目打包后通过Nginx代理访问时,JS、CSS等资源都加载到浏览器端了,但是不起作用。经过分析后,发现对于JS、CSS在浏览器端显示的资源类型为:Content-Type=text/plain。发现Nginx没有配置:includemime.types;当Nginx服务器收到静态文件请求时,会根据请求文件中的后缀名在M......
  • Windows10远程访问Ubuntu服务器上的Jupyter Notebook解决办法
    1、nginx反向代理 2、概要:可能有的同学在使用Python的时候喜欢使用.py文件,而有的同学喜欢使用JupyterNotebook做开发,但是苦于不会使用远程服务器的JupyterNotebook而放弃,而这篇文章将教会你怎样远程访问JupyterNotebook。官方地址:官方地址远访配置:创建JupyterNot......
  • 谷歌浏览器打开时为什么页面是360,如何恢复
     001、 002、 003、 004、再次打开浏览器 ......
  • 已安装过PageOfiice,谷歌浏览器反复提示PageOffice安装
    原因:Chrome开发团队以网络安全为由,强推ssl证书,希望所有部署在公网的网站,全部改用https访问,所以最新的谷歌和edge升级到94版本后对公网上的http请求下的非同域的http请求进行了拦截,于是就出现了目前遇到的反复提示安装pageoffice客户端的问题。解决方案:步骤1:打开谷歌浏览器,在浏览器......
  • 访问者模式(十八)
    相信自己,请一定要相信自己上一章简单介绍了命令模式(十七),如果没有看过,请观看上一章一.访问者模式引用菜鸟教程里面访问者模式介绍:https://www.runoob.com/design-pattern/visitor-pattern.html在访问者模式(VisitorPattern)中,我们使用了一个访问者类,它改变了元素类的执行算......
  • ServiceAccount 访问API实验
    概念SA账号是Pod内的进程使用的关联服务账号的身份,向集群的API服务器进行身份认证。SA(服务账号)是针对运行在Pod中的应用进程而言的,在Kubernetes中这些进程运行在容器中,而容器是Pod的一部分配置SAapiVersion:v1kind:ServiceAccountmetadata:name:sa-testnames......
  • chrome浏览器Bing主页自定义
    前言在使用Bing主页的时候,无法将主页的新闻彻底隐藏,也无法更换背景图片(如下图)。这就很难受了,我只想要一个只有搜索框加背景图片的一个主页。在集百家之所长后,得到一个符合个人要求的主页。主要文件manifest.json1{2"chrome_url_overrides":{3"newtab":......
  • 使用tcpdump+wirkshark分析nginx反向代理无法访问问题
    问题描述在使用nginx配置多路径反向代理后端prometheus应用的时候由于prometheus本身是自动跳转到/graph才能正常访问,而使用nginx反向代理如果只是配置简单的http_proxy到后端prometheus的端口会报404错误,以下是具体的配置和报错:location/prometheus{proxy_p......
  • C# 报错:xxx正由另一进程使用,因此该进程无法访问此文件
    https://www.cnblogs.com/whr2071/p/16070974.html出现原因使用FileStream打开一个文件后又想要操作这个文件;业务场景我打开这个文件后,获取其md5,之后再把这个文件移动到指定位置。后续移动时就会报这个错。分析System.IO.FileStreamfst=newSystem.IO.FileStream(filePat......
  • 未授权访问
    https://www.python100.com/html/112251.html渗透测试发现系统存在未授权访问漏洞一、渗透测试:是一项在计算机系统上进行的授权模拟攻击,旨在对其安全性进行评估,是为了证明网络防御按照预期计划正常运行而提供的一种机制。不妨假设,你的公司定期更新安全策略和程序,时时给系统打补......