我的编程空间,编程开发者的网络收藏夹
学习永远不晚

java服务器的简单实现过程记录

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

java服务器的简单实现过程记录

 一、HTTP

 http请求

 一般一个http请求包括以下三个部分:

 1 请求方法,如get,post

 2 请求头

 3 实体

 一个http请求的实例如下:

GET /index.jsp HTTP/1.1

Host: localhost:8080

User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:15.0) Gecko/20100101 Firefox/15.0

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,* public class Request { //输入流 private InputStream input; //截取url,如http://localhost:8080/index.html ,截取部分为 /index.html private String uri; public Request(InputStream inputStream){ this.input = inputStream; } public InputStream getInput() { return input; } public void setInput(InputStream input) { this.input = input; } public String getUri() { return uri; } public void setUri(String uri) { this.uri = uri; } //从套接字中读取字符信息 public void parse(){ StringBuffer request = new StringBuffer(2048); int i = 0; byte[] buffer = new byte[2048]; try { i = input.read(buffer); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); i = -1; } for(int j = 0;j<i;j++){ request.append((char)(buffer[j])); } System.out.println(request.toString()); uri = parseUri(request.toString()); } //截取请求的url private String parseUri(String requestString){ int index1 = 0; int index2 = 0; index1 = requestString.indexOf(' '); if(index1!=-1){ index2 = requestString.indexOf(' ',index1+1); if(index2>index1){ return requestString.substring(index1+1,index2); } } return null; } }

下面是封装了响应请求的类response:


package com.lwq;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;


public class Response {
    
    private static final int BUFFER_SIZE = 1024;
    Request request;
    OutputStream output;
    public Response(OutputStream output){
        this.output = output;
    }
    
    public void sendStaticResource() throws IOException{
        
        byte[] bytes = new byte[BUFFER_SIZE];
        FileInputStream fis = null;
        
        File file = new File(HttpServer.WEB_ROOT,request.getUri());
        if(file.exists()){
            try {
                fis = new FileInputStream(file);
                int ch = fis.read(bytes,0,BUFFER_SIZE);
                while(ch != -1){
                    output.write(bytes,0,ch);
                    ch = fis.read(bytes,0,BUFFER_SIZE);
                }
                
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }catch(IOException e){
                e.printStackTrace();
            }finally{
                if(fis !=null){
                    fis.close();
                }
            }
            
        }else{
            //找不到文件
             String errorMessage = "HTTP/1.1 404 File Not Found\r\n" +
     "Content-Type: text/html\r\n" +
     "Content-Length: 23\r\n" +
     "\r\n" +
     "
File Not Found
";
             try {
                output.write(errorMessage.getBytes());
                output.flush();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
    public Request getRequest() {
        return request;
    }
    public void setRequest(Request request) {
        this.request = request;
    }
    public OutputStream getOutput() {
        return output;
    }
    public void setOutput(OutputStream output) {
        this.output = output;
    }
    public static int getBUFFER_SIZE() {
        return BUFFER_SIZE;
    }
}

接下来是主程序,


package com.lwq;

import java.io.File;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;


public class HttpServer {

    
    
    //WEB_ROOT是服务器的根目录
    public static final String WEB_ROOT = System.getProperty("user.dir")+File.separator+"webroot";
    
    //关闭的命令
    private static final String SHUTDOWN_COMMAND= "/SHUTDOWN";
    
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        HttpServer server = new HttpServer();
        server.await();

    }
    public void await(){
        ServerSocket serverSocket = null;
        int port = 8080;
        try {
            serverSocket = new ServerSocket(port,1,InetAddress.getByName("127.0.0.1"));
            while(true)
            {
                try {
            Socket socket = null;
            InputStream input = null;
            OutputStream output = null;
            socket = serverSocket.accept();
            input = socket.getInputStream();
            output = socket.getOutputStream();
            //封装request请求
            Request request = new Request(input);
            request.parse();
            //封装response对象
            Response response = new Response(output);
            response.setRequest(request);
            response.sendStaticResource();
            socket.close();
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                    continue;
                }
            
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        
        
    }
    

}

运行httpServer,在浏览器中打下http://localhost:8080/index.jsp,就能看到服务器响应的结果了。

总结

到此这篇关于java服务器的简单实现的文章就介绍到这了,更多相关java服务器实现内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

java服务器的简单实现过程记录

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Java编程实现springMVC简单登录实例

Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Sp
2023-05-30

SpringBoot简单实现定时器过程

这篇文章主要介绍了SpringBoot简单实现定时器过程,对于Java后端来说肯定实现定时功能肯定是使用到Spring封装好的定时调度Scheduled
2023-05-16

android 通过MediaRecorder实现简单的录音示例

整理文档,搜刮出一个android 通过MediaRecorder实现简单的录音示例,稍微整理精简一下做下分享。MainActivitypackage com.centaur.collectvoice; import android.med
2022-06-06

Python 实现简单 Web 服务器

最近有个需求,就是要创建一个简到要多简单就有多简单的web服务器,目的就是需要一个后台进程用来接收请求然后处理并返回结果,因此就想到了使用python来实现。首先创建一个myapp.py文件,其中定义了一个方法,所有的请求都会经过此方法,可
2023-01-31

Python简单实现Web服务器

import socketimport reimport geventfrom gevent import monkey monkey.patch_all()# 识别等待时间,让协程切换def client_handler(client_s
2023-01-31

Python实现简单的HTTP服务器(支

python内置模块 SimpleHTTPServer  (支持下载功能)在对应的工作目录下,运行命令python -m SimpleHTTPServer 即可把当前目录下以共享服务的形式共享出去。外部访问可通过访问:http://ip:端
2023-01-31

热门标签

编程热搜

编程资源站

目录