十七、创建一个 WEB 服务器(一)
1、Node.js 创建的第一个应用
var http=require("http")
http.createServer(function (req,res) {
res.writeHead(200,{"Content-Type":"text/html;charset='utf8'"})
res.write("<head><meta charset='UTF-8'></head>")
res.write("hello,Node.js!!!")
res.end()
}).listen(8081)
2、WEB 服务器介绍
Web 服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,可以向浏览
器等 Web 客户端提供文档,也可以放置网站文件,让全世界浏览;可以放置数据文件,让
全世界下载。目前最主流的三个 Web 服务器是 Apache Nginx IIS。
3、Nodejs 创建一个 WEB 服务器。
项目结构截图:
返回html页面示例:
firstServer.js代码(主程序):
//引入http模块:
var http = require("http");
//引入fs模块:
var fs = require("fs");
/**
* 引入path模块
* Node内置模块,可以拿到文件的后缀名
*console.log(path.extname("index.html"));----.html
*/
var path = require("path")
//引入加工响应头文件的自定义模块:
var getextname = require("./model/getExtName");
//console.log(getextname.getminiName(".css"));
/**
* 引入url模块,用来加工有些时候服务地址后面传值的情况:
* http://localhost:8081/index.html?name=tom
* 这个时候我们仅仅通过上边的模块加工是不够的
*/
var url = require("url");
http.createServer(function (req, res) {
//var urlStr = req.url;//获取浏览器输入的地址
/*
* 引入url模块,用来加工有些时候服务地址后面传值的情况:
* http://localhost:8081/index.html?name=tom
* 这个时候我们仅仅通过上边的模块加工是不够的,此时就需要借助下面的url模块解析:
*/
var urlStr = url.parse(req.url).pathname;
console.log(urlStr);
if (urlStr == '/') {//設置默认加载的頁面
urlStr == '/index.html';
}
if (urlStr != '/favicon.ico') { //过滤无效请求:/favicon.ico
var extname = path.extname(urlStr);
//下面通过文件操作模块读取静态页面内容:最后通过res返回给客户端
fs.readFile("html" + urlStr, function (err, data) {
if (err) {//没有这个文件
console.log("404");
fs.readFile("html/404.html", function (err, data404) {
//注意下面要修改响应头的状态码
res.writeHead(404, {"Content-Type": "text/html;charset='utf8'"})
res.write(data404)
res.end()
})
} else {
/**
* 大部分情况下我们不一定返回html文件,也可能返回css文件,js文件,xml文件等等,因此下面的头文件的
* "Content-Type": "text/html;charset='utf8'"不能写死,而应该动态随着请求的内容改变
*/
//res.writeHead(200, {"Content-Type": "text/html;charset='utf8'"})
res.writeHead(200, {"Content-Type": getextname.getminiName(extname) + ";charset='utf8'"})
res.write(data)
res.end()
}
})
}
}).listen(8081)
index.html文件代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<style>
div{
width: 100px;
height: 200px;
background-color: red;
margin: 0 auto;
}
</style>
<body>
<div></div>
</body>
</html>
自定义模块(功能类js):getExtName.js:
/**
* Created by Administrator on 2019/4/24.
*/
/**
* 自定义模块加工响应头文件类型
* @param extname
* @returns {*}
*/
module.exports.getminiName=function (extname) {
switch (extname){
case ".html":
return "text/html"
case ".css":
return"text/css"
case ".js":
return "text/js"
case ".xml":
return"text/xml"
default:
return"text/xml"
}
}
404.html页面代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<style>
div{
font-size: 30px;
font-weight: bolder;
color: red;
}
</style>
<body>
<div>404</div>
</body>
</html>
效果:
十七、创建一个 WEB 服务器(一)的更多相关文章
- 【重点突破】——使用Express创建一个web服务器
一.引言 在自学node.js的过程中有一个非常重要的框架,那就是Express.它是一个基于NodeJs http模块而编写的高层模块,弥补http模块的繁琐和不方便,能够快速开发http服务器.这 ...
- python web编程 创建一个web服务器
这里就介绍几个底层的用于创建web服务器的模块,其中最为主要的就是BaseHTTPServer,很多框架和web服务器就是在他们的基础上创建的 基础知识 要建立一个Web 服务,一个基本的服务器和一个 ...
- node(03)--利用 HTTP 模块 URl 模块 PATH 模块 FS 模块创建一个 WEB 服务器
Web 服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,可以向浏览器等 Web 客户端提供文档,也可以放置网站文件,让全世界浏览:可以放置数据文件,让全世界下载.目前最主流的三个 We ...
- C#中自己动手创建一个Web Server(非Socket实现)
目录 介绍 Web Server在Web架构系统中的作用 Web Server与Web网站程序的交互 HTTPListener与Socket两种方式的差异 附带Demo源码概述 Demo效果截图 总结 ...
- 用java写一个web服务器
一.超文本传输协议 Web服务器和浏览器通过HTTP协议在Internet上发送和接收消息.HTTP协议是一种请求-应答式的协议——客户端发送一个请求,服务器返回该请求的应答.HTTP协议使用可靠的T ...
- 用C写一个web服务器(二) I/O多路复用之epoll
.container { margin-right: auto; margin-left: auto; padding-left: 15px; padding-right: 15px } .conta ...
- 002.Create a web API with ASP.NET Core MVC and Visual Studio for Windows -- 【在windows上用vs与asp.net core mvc 创建一个 web api 程序】
Create a web API with ASP.NET Core MVC and Visual Studio for Windows 在windows上用vs与asp.net core mvc 创 ...
- Tomcat源码分析 (一)----- 手写一个web服务器
作为后端开发人员,在实际的工作中我们会非常高频地使用到web服务器.而tomcat作为web服务器领域中举足轻重的一个web框架,又是不能不学习和了解的. tomcat其实是一个web框架,那么其内部 ...
- 使用Node.js原生API写一个web服务器
Node.js是JavaScript基础上发展起来的语言,所以前端开发者应该天生就会一点.一般我们会用它来做CLI工具或者Web服务器,做Web服务器也有很多成熟的框架,比如Express和Koa.但 ...
随机推荐
- windows-x64下安装python3.6
1.下载python3安装包,注意要安装windowsx64的exe安装包.python-3.6.2-amd64.exe 2.设置window的环境变量:C:\Users\您设置的windows用户名 ...
- PHP 字符串 加*
PHP字符串加* 思路: 获取第一个字符或文字 获取最后一个字符或文字 一头一尾,中间加* 尝试用substr方法,发现对中文的支持有问题. 后来发现mb_substr很好的解决了这个问题. < ...
- thinkPHP增删改查的方法案例
thinkphp对数据库增删改查进行了封装操作,使得使用更加方便,但是不一定灵活. 可以用封装的用,需要写sql,可以执行sql. 1.原始的 $Model = new Model(); // 实例化 ...
- pt工具之pt-archiver
# tar -zxvf percona-toolkit-2.2.17.tar.gz# yum -y install perl perl-IO-Socket-SSL perl-DBD-MySQL per ...
- 引用WebService出现错误
在引用WebService作为服务引用的时候,由于VS生成时生成了两个入口点,导致出现 引发的异常:“System.Windows.Markup.XamlParseException”(位于 Pres ...
- leetcode728
vector<int> selfDividingNumbers(int left, int right) { vector<int> V; for (int i = left; ...
- [原创]JMeter初次使用总结
引言 最近开发 java 后端项目,对外提供Restful API接口,完整功能开发现已完成. 目前通过单测(68%行覆盖率)已保证业务逻辑正确性,同时也尝试使用JMeter进行压力测试以保证并发性能 ...
- java8新特性-lambda表达式和stream API的简单使用
一.为什么使用lambda Lambda 是一个 匿名函数,我们可以把 Lambda表达式理解为是 一段可以传递的代码(将代码像数据一样进行传递).可以写出更简洁.更灵活的代码.作为一种更紧凑的代码风 ...
- 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 6_Logistic Regression 逻辑回归
Lecture6 Logistic Regression 逻辑回归 6.1 分类问题 Classification6.2 假设表示 Hypothesis Representation6.3 决策边界 ...
- 在zookeeper集群的基础上,搭建solrCloud
1 将在window中部署的单机版solr上传到node-01中 cd /export/software/ rz 选择资料中的solr.zip进行上传(此zip就是 solr的简单部署:在tomca ...