用java 写的一个简单的 web 服务器(适合新手练练)

2024-05-30 09:18

本文主要是介绍用java 写的一个简单的 web 服务器(适合新手练练),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

用java写的一个web,效果如下图;总结一下遇到的问题:

        

    1. 端口被占用,可以尝试下换端口;

 

        2. 个别电脑装的软件类型太多,有时候接收不到端口, 写对了不出效果别纠结在一台电脑,本人深受其害;

 

 

        3.保证开发过程的有效性,就要做到不断测试,测试很重要. 如果不测试一口气写了一大堆,可能一个小报错都可能让你疑惑 很久;

 

        以下是代码:

 

 

          在你的项目里建立一个包叫webroot  ,然后建立一个

 

         名为index.html的文件,在文件里丢以下代码:

 

          

<html><head><title>服务器</title></head><body><div align="center">123456789</div></body></html>    


     

再往下就是你的class类的代码:

              


 

/*** */
package Web.server;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;/*** @author Administrator**/
public class WebServer {private static final int post = 8124;private static final String uri = System.clearProperty("user.dir")+File.separator+"webroot"+File.separator;/*** @param args*/public WebServer(){System.out.println("WebServer()------star");System.out.println("url------------------->"+uri);System.out.println("File--------------->"+File.separator);try {ServerSocket listener=new ServerSocket(post);System.out.println("listener---服务器正在运行端口----------------->"+listener.getLocalPort());while(true){System.out.println("判断是否进入循环");Socket socket=listener.accept();System.out.println("socket------------------->"+socket.getLocalPort());//new PrintWriter(socket.getOutputStream(),true).println("你好! 世界!!");//BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));//System.out.println("in--------------------------->"+in);//输出流PrintStream out = new PrintStream(socket.getOutputStream(),true);//设置路径File fileuri=new File(uri+"index.html");System.out.println("fileuri------------------------------>"+fileuri);//设置文件类型String contentType=null;contentType="text/html;charset=GBK";if(!fileuri.exists()){       //如果不存在此文件System.out.println("没有找到这个文件");}else{System.out.println("找到这个文件");/*out.println("HTTP/1.0 200 OK");out.println(contentType);out.println();*/}FileInputStream fis=null;fis=new FileInputStream(fileuri);System.out.println("fis------------------------->"+fis);byte data[];data = new byte[fis.available()];System.out.println("data------------------>"+data);fis.read(data);out.write(data);out.close();if(fis!=null){fis.close();}socket.close();}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}/*public void run(){System.out.println("run()--------------start");}*/public static void main(String[] args) {// TODO Auto-generated method stubnew WebServer();}}


 

 

  

这篇关于用java 写的一个简单的 web 服务器(适合新手练练)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1016051

相关文章

Spring实现Bean的初始化和销毁的方式

《Spring实现Bean的初始化和销毁的方式》:本文主要介绍Spring实现Bean的初始化和销毁的方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Bean的初始化二、Bean的销毁总结在前面的章节当中介绍完毕了ApplicationContext,也就

Java的"伪泛型"变"真泛型"后对性能的影响

《Java的伪泛型变真泛型后对性能的影响》泛型擦除本质上就是擦除与泛型相关的一切信息,例如参数化类型、类型变量等,Javac还将在需要时进行类型检查及强制类型转换,甚至在必要时会合成桥方法,这篇文章主... 目录1、真假泛型2、性能影响泛型存在于Java源代码中,在编译为字节码文件之前都会进行泛型擦除(ty

Java中的getBytes()方法使用详解

《Java中的getBytes()方法使用详解》:本文主要介绍Java中getBytes()方法使用的相关资料,getBytes()方法有多个重载形式,可以根据需要指定字符集来进行转换,文中通过代... 目录前言一、常见重载形式二、示例代码三、getBytes(Charset charset)和getByt

Java使用Stream流的Lambda语法进行List转Map的操作方式

《Java使用Stream流的Lambda语法进行List转Map的操作方式》:本文主要介绍Java使用Stream流的Lambda语法进行List转Map的操作方式,具有很好的参考价值,希望对大... 目录背景Stream流的Lambda语法应用实例1、定义要操作的UserDto2、ListChina编程转成M

Spring框架中@Lazy延迟加载原理和使用详解

《Spring框架中@Lazy延迟加载原理和使用详解》:本文主要介绍Spring框架中@Lazy延迟加载原理和使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、@Lazy延迟加载原理1.延迟加载原理1.1 @Lazy三种配置方法1.2 @Component

使用easy connect之后,maven无法使用,原来需要配置-Djava.net.preferIPv4Stack=true问题

《使用easyconnect之后,maven无法使用,原来需要配置-Djava.net.preferIPv4Stack=true问题》:本文主要介绍使用easyconnect之后,maven无法... 目录使用easGWowCy connect之后,maven无法使用,原来需要配置-DJava.net.pr

idea报错java: 非法字符: ‘\ufeff‘的解决步骤以及说明

《idea报错java:非法字符:‘ufeff‘的解决步骤以及说明》:本文主要介绍idea报错java:非法字符:ufeff的解决步骤以及说明,文章详细解释了为什么在Java中会出现uf... 目录BOM是什么?1. BOM的作用2. 为什么会出现 \ufeff 错误?3. 如何解决 \ufeff 问题?最

使用Java编写一个字符脱敏工具类

《使用Java编写一个字符脱敏工具类》这篇文章主要为大家详细介绍了如何使用Java编写一个字符脱敏工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、字符脱敏工具类2、测试工具类3、测试结果1、字符脱敏工具类import lombok.extern.slf4j.Slf4j

Java实现按字节长度截取字符串

《Java实现按字节长度截取字符串》在Java中,由于字符串可能包含多字节字符,直接按字节长度截取可能会导致乱码或截取不准确的问题,下面我们就来看看几种按字节长度截取字符串的方法吧... 目录方法一:使用String的getBytes方法方法二:指定字符编码处理方法三:更精确的字符编码处理使用示例注意事项方

Spring三级缓存解决循环依赖的解析过程

《Spring三级缓存解决循环依赖的解析过程》:本文主要介绍Spring三级缓存解决循环依赖的解析过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、循环依赖场景二、三级缓存定义三、解决流程(以ServiceA和ServiceB为例)四、关键机制详解五、设计约