# 基本概念

  • 什么是服务器?

    • 服务器也是电脑,只不过是一台 24 小时不断电,不关机的电脑

    • 根据提供的服务功能不同:文件服务器、邮件服务器、Web 服务器等等;

    • 简而言之:服务器其实就是一台 "提供了某种服务功能" 的超级电脑

  • 如何让电脑能够提供某种服务?

    • 如何让电脑可以聊天?听歌?浏览网页?

    • 想让电脑提供聊天服务,可以安装相应的聊天软件,例如:QQ / 旺旺...

    • 想让电脑可以提供听歌服务,可以安装相应音乐软件,例如:酷我 / 酷狗...

    • 想让电脑可以提供浏览网页服务,可以安装相应浏览网页软件,例如:谷歌 / 欧朋..

  • 如何让电脑提供管理网站的服务?

  • 安装 Web 服务相关软件,例如: Apache、IIS、Tomcat、Nginx、NodeJS 等;

  • 安装了 Web 服务软件的电脑,我们称之为 "Web 服务器"

  • Web 服务器软件:Apache、IIS、Tomcat、Nginx、NodeJS 等;

# 什么是 C/S 架构 (Client/Server)

  • 对于 C/S 架构,最为常见的例子就是网络游戏,例如 "魔兽世界" 如果不联网无法使用,你在软件内所做的所有操作通过互联网能够传递到其他玩家身上

  • 优点:性能较高 / 界面酷炫 / 用户体验好

  • 缺点:更新软件 / 重量级

# 什么是 B/S 架构 (Browser/Server)

  • 对于 B/S 架构,现在所有的网站都是 B/S 架构,较为常见的例子有百度,淘宝,网易云音乐等等,所有只需要通过浏览器即可使用

  • 优点:更新软件 / 轻量级 / 用户体验稍差

  • 缺点:性能较低 / 兼容问题

# HTTP

  • HTTP(hypertext transport protocol)协议『超文本传输协议』,协议详细规定了浏览器和万维网服务器之间互相通信的规则。

# HTTP 请求头

  • User-Agent:浏览器的具体类型  如:User-Agent:Mozilla/5.0 (Windows NT 6.1; rv:17.0) Gecko/20100101 Firefox/17.0

  • Accept:浏览器支持哪些数据类型  如:Accept: text/html,application/xhtml+xml,application/xml;q=0.9;

  • Accept-Charset:浏览器采用的是哪种编码  如:Accept-Charset: ISO-8859-1

  • Accept-Encoding:浏览器支持解码的数据压缩格式  如:Accept-Encoding: gzip, deflate

  • Accept-Language:浏览器的语言环境  如:Accept-Language zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3

  • Host:请求的主机名,允许多个域名同处一个 IP 地址,即虚拟主机。Host:www.baidu.com

  • Connection:表示是否需要持久连接。Keep-Alive/close,HTTP1.1 默认是持久连接,它可以利用持久连接的优点,当页面包含多个元素时(例如 Applet,图片),显著地减少下载所需要的时间。要实现这一点,Servlet 需要在应答中发送一个 Content-Length 头,最简单的实现方法是:先把内容写入 ByteArrayOutputStream,然后在正式写出内容之前计算它的大小。如:Connection: Keep-Alive

  • Content-Length:表示请求消息正文的长度。对于 POST 请求来说 Content-Length 必须出现。

  • Content-Type:WEB 服务器告诉浏览器自己响应的对象的类型和字符集。例如:Content-Type: text/html; charset='gb2312'

  • Content-Encoding:WEB 服务器表明自己使用了什么压缩方法(gzip,deflate)压缩响应中的对象。例如:Content-Encoding:gzip

  • Content-Language:WEB 服务器告诉浏览器自己响应的对象的语言。

  • Cookie:最常用的请求头,浏览器每次都会将 cookie 发送到服务器上,允许服务器在客户端存储少量数据。

  • Referer:包含一个 URL,用户从该 URL 代表的页面出发访问当前请求的页面。服务器能知道你是从哪个页面过来的。Referer: http://www.baidu.com/

# HTTP 响应头

  • Server:WEB 服务器表明自己是什么软件及版本等信息。例如:Server:Apache/2.0.61 (Unix)

  • Accept-Ranges:WEB 服务器表明自己是否接受获取其某个实体的一部分(比如文件的一部分)的请求。bytes:表示接受,none:表示不接受

  • Content-Type:WEB 服务器告诉浏览器自己响应的对象的类型。例如:Content-Type:application/xml

  • Etag: 就是一个对象(比如 URL)的标志值,就一个对象而言,比如一个 html 文件,如果被修改了,其 Etag 也会别修改,所以,ETag 的作用跟 Last-Modified 的作用差不多,主要供 WEB 服务器判断一个对象是否改变了。比如前一次请求某个 html 文件时,获得了其 ETag,当这次又请求这个文件时,浏览器就会把先前获得 ETag 值发送给 WEB 服务器,然后 WEB 服务器会把这个 ETag 跟该文件的当前 ETag 进行对比,然后就知道这个文件有没有改变了。

  • Allow: 服务器支持哪些请求方法(如 GET、POST 等)

  • Location: 表示客户应当到哪里去提取文档,用于将接收端定位到资源的位置(URL)上。Location 通常不是直接设置的,而是通过 HttpServletResponse 的 sendRedirect 方法,该方法同时设置状态代码为 302。

  • Content-Base: 解析主体中的相对 URL 时使用的基础 URL。

  • Content-Encoding:WEB 服务器表明自己使用了什么压缩方法(gzip,deflate)压缩响应中的对象。例如:Content-Encoding:gzip

  • Content-Language:WEB 服务器告诉浏览器理解主体时最适宜使用的自然语言。

  • Content-Length:WEB 服务器告诉浏览器自己响应的对象的长度或尺寸,例如:Content-Length: 26012

  • Content-Location: 资源实际所处的位置。

  • Content-MD5: 主体的 MD5 校验和。

  • Content-Range: 实体头用于指定整个实体中的一部分的插入位置,他也指示了整个实体的长度。在服务器向客户返回一个部分响应,它必须描述响应覆盖的范围和整个实体长度。一般格式: Content-Range:bytes-unitSPfirst-byte-pos-last-byte-pos/entity-legth。例如,传送头 500 个字节次字段的形式:Content-Range:bytes0- 499/1234 如果一个 http 消息包含此节(例如,对范围请求的响应或对一系列范围的重叠请求),Content-Range 表示传送的范围,Content-Length 表示实际传送的字节数。

  • Expires:WEB 服务器表明该实体将在什么时候过期,对于过期了的对象,只有在跟 WEB 服务器验证了其有效性后,才能用来响应客户请求。是 HTTP/1.0 的头部。例如:Expires:Sat, 23 May 2009 10:02:12 GMT

  • Last-Modified:WEB 服务器认为对象的最后修改时间,比如文件的最后修改时间,动态页面的最后产生时间等等。例如:Last-Modified:Tue, 06 May 2008 02:42:43 GMT

# http 常见状态码

  • 100 Continue 继续,一般在发送 post 请求时,已发送了 http header 之后服务端将返回此信息,表示确认,之后发送具体参数信息
  • 200 OK 正常返回信息
  • 201 Created 请求成功并且服务器创建了新的资源
  • 202 Accepted 服务器已接受请求,但尚未处理
  • 301 Moved Permanently 请求的网页已永久移动到新位置
  • 302 Found 临时性重定向
  • 303 See Other 临时性重定向,且总是使用 GET 请求新的 URI
  • 304 Not Modified 自从上次请求后,请求的网页未修改过
  • 400 Bad Request 服务器无法理解请求的格式,客户端不应当尝试再次使用相同的内容发起请求
  • 401 Unauthorized 请求未授权
  • 403 Forbidden 禁止访问
  • 404 Not Found 找不到如何与 URI 相匹配的资源
  • 500 Internal Server Error 最常见的服务器端错误
  • 503 Service Unavailable 服务器端暂时无法处理请求(可能是过载或维护)

# Web 服务器搭建

# 什么是 WAMPServer 软件?

  • W: Windows 操作系统
  • A: Apache 世界排名第一的服务器软件,特点是简单,速度快,性能稳定
  • M: MySQL 开源免费的数据库软件,特点是体积小、速度快、使用成本低
  • P: PHP 超文本预处理器,直接将代码嵌入 HTML 文档中执行,特点是简单易学,容易上手

# 如何搭建 Apache 服务器?

  • 安装 WAMPServer

  • 点击 Next

  • 选择安装路径 (注意:路径中不要出现中文)

  • 勾选两个方框,点击 next 继续安装

  • 点击 install 开始安装

  • 安装完毕以后点击 finish 即可启动 wamp

# 测试访问

  • 打开浏览器输入 127.0.0.1 查看显示的内容
  • 如何修改默认端口号?
  • 在 httpd.conf 文件中搜索 Listen , 改为你想要的数字即可
  • 重启 WAMP

# 如何运行编写好的 PHP 文件?

  • 因为 PHP 是服务端编程语言,所以要在服务端运行

  • php 文件名称不能有中文

  • php 文件必须放到服务器文件夹下

  • 通过 ip 找到服务器文件夹,选中 php 文件访问

# 服务端返回浏览器的是什么?

  • php 程序的执行结果

  • 注意:执行结果中有中文,必须在 php 文件顶部设置

  • header("content-type:text/html; charset=utf-8");

  • 浏览器访问 http 服务器,接收到响应时,会根据响应报文头的内容进行一些具体的操作,在 php 中,我们能够使用 header 来设置这些内容

# PHP (pai huang pian) 基础

  • PHP 基础语法大部分和 JS 差不多 (切菜)

# php 中如何定义变量?

<?php
$num = 10;
?>

# php 中如何打印内容

  • 注意点:后端编写的代码不能直接运行,只能放到服务器对应的文件夹下,通过服务器运行
  • 如何通过服务器运行:通过 ip 地址 (127.0.0.1) 找到服务器对应的文件夹,然后再找到对应的文件运行
<?php
  echo $num;
?>

# php 中如何定义集合

<?php
  $arr = array(1, 3, 5);
  print_r($arr);
  echo $arr[0];
  print_r($arr[1]);  
  $dict = array("name" => "lnj", "age" => "33");
  print_r($dict);
?>

# php 中的分支循环语句

<?php
  // if
  $age = 16;
  if($age >= 18) {
    echo "成年";
  } else {
    echo "未成年";
  }  
  // 三目
  $res = ($age) ? "成年人" : "未成年人";
  echo $res;
  // switch
  switch ($age) {
  case -1:
    echo "非人类";
    break;
  case 18:
    echo "成年人";
    break;
  default:
    echo "未成年人";
    break;
  }
  // for
  $arr = array(1, 3, 5);
  for ($i = 0; $i < count($arr); $i++) {
    echo $arr[$i];
    echo "<br>";
  }
 // while
  $index = 0;
  while ($index < count($arr)) {
    echo $arr[$index];
    echo "<br>";
    $index++;
  }
?>

b站视频教程https://www.bilibili.com/video/BV17W41137jn

Update on Views times

Give me a cup of [coffee]~( ̄▽ ̄)~*

Nico Niconi WeChat Pay

WeChat Pay

Nico Niconi Alipay

Alipay