go 语言实现一个简单的 web 服务器

学习Go语言的一些感受,不一定准确。

假如发生战争,JAVA一般都是充当航母战斗群的角色。
一旦出动,就是护卫舰、巡洋舰、航母舰载机、预警机、电子战飞机、潜艇等等
浩浩荡荡,杀将过去。
(JVM,数十个JAR包,Tomcat中间件,SSH框架,各种配置文件...天生就是重量级的,专为大规模作战)

而GO语言更像F35战斗轰炸机
单枪匹马,悄无声息,投下炸弹然后走人。
专属轰炸机,空战也会一点点.
实在搞不定,就叫它大哥F22。
(GO是编译型语言,不需要依赖,不需要虚拟机,可以调用C代码并且它足够简单,却非常全面)

计划Go语言学习的知识点
1.搭建Http服务
2.连接数据库
3.本地IO
4.多线程
5.网络
6.调用本地命令
7.调用C语言代码

首先,搭建一个静态的服务器
我写程序喜欢使用HTML通过AJAX发送JSON请求到后端处理。

HttpServer.go

  1. package main
  2. import (
  3.         "flag"
  4.         "io/ioutil"
  5.         "log"
  6.         "net/http"
  7.         "os"
  8.         "strings"
  9. )
  10. var realPath *string
  11. func staticResource(w
    http.ResponseWriter, r *http.Request) {
  12.         path := r.URL.Path
  13.         request_type := path[strings.LastIndex(path, "."):]
  14.         switch request_type {
  15.         case ".css":
  16.                 w.Header().Set("content-type", "text/css")
  17.         case ".js":
  18.                 w.Header().Set("content-type", "text/javascript")
  19.         default:
  20.         } 
  21.         fin, err := os.Open(*realPath + path)
  22.         defer fin.Close()
  23.         if err != nil {
  24.                 log.Fatal("static
    resource:", err)
  25.         } 
  26.         fd, _ := ioutil.ReadAll(fin)
  27.         w.Write(fd)
  28. }
  29. func main() {
  30.         realPath = flag.String("path", "", "static
    resource path")
  31.         flag.Parse()
  32.         http.HandleFunc("/", staticResource)
  33.         err := http.ListenAndServe(":8080", nil)
  34.         if err != nil {
  35.                 log.Fatal("ListenAndServe:", err)
  36.         } 
  37. }

网上看到一个更BT的方法..

  1. package main
  2. import (
  3.         "net/http"
  4. )
  5. func main() {
  6.         http.Handle("/", http.FileServer(http.Dir("/tmp/static/")))
  7.         http.ListenAndServe(":8080", nil)
  8. }

将EasyUI前端框架解压到 /tmp/static 目录下

在GOPATH下执行 
go run HttpServer.go
--path=/tmp/static

查看网页,一切正常。


这样Go语言以不到50行代码,编译之后不到7M的可执行文件,就实现了一个简易的静态服务器。

时间: 2024-10-22 08:50:28

go 语言实现一个简单的 web 服务器的相关文章

一个简单的web服务器

写在前面 新的一年了,新的开始,打算重新看一遍asp.net本质论这本书,再重新认识一下,查漏补缺,认认真真的过一遍. 一个简单的web服务器 首先需要引入命名空间: System.Net,关于网络编程的大部分类型及操作都可以在这个命名空间下找到. IPAddress:类用来表示一个ip地址. IPEndPoint:用来表示一个IP地址和一个端口号的组合,称为网络的端点. System.Net.Sockets:命名空间中提供了基于Socket编程的数据类型. Socket类封装了Socket的操

《深入剖析Tomcat》一第 1 章 一个简单的Web服务器

第 1 章 一个简单的Web服务器 本章介绍Java Web服务器是如何运行的.Web服务器也称为超文本传输协议(HyperText Transfer Protocol,HTTP)服务器,因为它使用HTTP与其客户端(通常是Web浏览器)进行通信.基于Java的Web服务器会使用两个重要的类:java.net.Socket类和java.net.ServerSocket类,并通过发送HTTP消息进行通信.本章先介绍HTTP协议和这两个类,然后介绍一个简单的Web服务器.

如何用node.js实现一个简单的web服务器

node.js实现web服务器还是比较简单的,我了解node.js是从<node入门>开始的,如果你不了解node.js也可以看看! 我根据那书一步一步的练习完了,也的确大概了解了node.js,不过里面写的路由的地方总感觉不方便,十一放假最后一天,试着写了个简单的web服务器,现在分享记录于此! http模块已提供了基本功能,所以我主要解决两个问题,1是静态资源的处理,2是动态资源的路由. 静态资源在node.js里的意思是不变的,如图片.前端js.css.html页面等. 动态资源我们一般

创建一个简单的web服务器

Web服务器也称为超文本传输协议(HTTP)服务器,因为它使用HTTP来跟客户端进行通信的.既然说到通信那就离不了Java里的两个重要的类java.net.Socket和java.net.ServerSocket.这里浏览器一方可以认为是一个客户端,接收HTTP请求的一方可以认为是服务端.在这之前我们先说一下HTTP协议. HTTP协议允许web服务器和浏览器通过网络来进行发送和接收数据.它是一种请求和响应协议.客户端发送一个请求,服务端响应这个请求.HTTP请求由三部分组成,分别是:请求行.消

[JAVA100例]050、一个简单的Web服务器

import java.io.*; import java.net.*; /** * <p>Title: 发现HTTP内容和文件内容</p> * <p>Description: 获得用户请求后将用户需要的文件读出,添加上HTTP应答头.发送给客户端.</p> * <p>Copyright: Copyright (c) 2003</p> * <p>Filename: Response.java</p> * @ve

创建一个简单的web服务器(二):使用自定义的类加载器来替换URLClassLoader

在上一章中我们加载Servlet用的是URLClassLoader,在这一章中我们使用自定义的类加载器来替换URLClassLoader.关于类加载器的文章请参考这里:深入探讨 Java 类加载器.这篇文章写得很棒. 具体的代码如下: package com.zkn.imitate.tomcat.secondchapter.first; import com.zkn.imitate.tomcat.secondchapter.Request; import com.zkn.imitate.tomc

Java Socket编程(五) 简单的WEB服务器_Java编程

文章来源:aspcn 作者:孙雯 简单的WEB服务器 一个简单的WEB服务器将由列表9.2这样构建.当然,还必须要对方法和回应事件进行改进.简单的服务器不会分析和存储请求头.新的WEB服务器将分析和存储请求,为以后的处理作准备.为了达到这个目的,你必须有一个包含HTTP请求的类. HTTPrequest类 列表9.5列出了一个完整的HTTPrequest类.这个类必须包括一个请求头所需的所有信息. 列表9.5.HTTPrequest类. import java.io.*; import java

利用JAVA语言实现支持视频点播的WEB服务器

一.项目简介: JAVA语言是一种可移植的,简单的,健壮的嵌入式语言.并且对网络,数据库有很好的支持,基于JAVA语言的这种特性可以十分容易地建立一个小型INTERNET服务器. 本项目中,作者用JAVA语言编写了一个WEB微型服务器,对简单的HTTP请求进行响应,并通过后端数据库对用户的查询进行处理,从而动态地返回HTML页面. 二.项目实现: (一)项目具体功能分析与开发工具选择 可以利用一台较高配置的个人台式机就可以实现社区内的小型服务器,包括网页浏览,基于高速局域网的视频下载和播放,定时

Go语言使用HTTP包创建WEB服务器的方法_Golang

本文实例讲述了Go语言使用HTTP包创建WEB服务器的方法.分享给大家供大家参考,具体如下: 在Golang中写一个http web服务器大致是有两种方法: 1 使用net包的net.Listen来对端口进行监听 2 使用net/http包 这里是讨论如何使用net/http包创建一个web服务器 net/http请求提供了HTTP客户端和服务端的具体实现 http客户端 先看到的是Get,Post,PostForm三个函数.这三个函数直接实现了http客户端 复制代码 代码如下: import