07 返回多个页面web框架

服务器server端python程序(不同页面版本):

 import socket

 server=socket.socket()

 server.bind(("127.0.0.1",8888))

 server.listen()

 def func_indexHtml(conn):

     with open("index.html","rb")as f:

         conn.send(f.read())

 def func_js(conn):

     with open("index.js", "rb")as f:

         conn.send(f.read())

 def func_css(conn):

     with open("index.css", "rb")as f:

         conn.send(f.read())

 def func_img(conn):

     with open("index.png", "rb")as f:

         conn.send(f.read())

 def func_ico(conn):

     with open("favicon.ico","rb")as f:

         conn.send(f.read())

 def func_html(conn):

     with open("another.html","rb")as f:

         conn.send(f.read())

 def respones_back(conn,path,func_mappers):

     conn.send(b"HTTP/1.1 200 ok \r\n\r\n")

     for mapper in func_mappers:

         if path==mapper[0]:

             mapper[1](conn)

             break

     else:

         conn.send(b"404 not found!")

     conn.close()

 func_mappers=[

     ("/",func_indexHtml),

     ("/index.js",func_js),

      ("/index.css",func_css),

      ("/index.png",func_img),

      ("/favicon.ico",func_ico),

      ("/another.html",func_html)]

 if __name__ == '__main__':

     while 1:

         conn,client_addr=server.accept()

         http_request=conn.recv(1024).decode("utf-8")

         path=http_request.split("\r\n")[0].split(" ")[1]

         print("path>>>",path)

         respones_back(conn,path,func_mappers)

服务器server端python程序(不同页面版本)

  index.html/another.html:


index.html:

 <!DOCTYPE html>

 <html lang="en">

 <head>

     <meta charset="UTF-8">

     <meta http-equiv="refresh" content="">

     <meta name="keywords" content="">

     <link rel="stylesheet" href="index.css">

     <link rel="icon" href="favicon.ico">

     <title>返回不同页面</title>

 </head>

 <body>

 <div id="d1">

     <h1>返回不同页面页面:本html页面引用了外部本地css样式和js代码(本地图片)</h1>   

 </div>

 <span><a href="another.html">点击跳转下一个页面</a></span>

 <img src="index.png" alt="本地图片" title="本地图片">

 </body>

 <script src="index.js"></script>

 </html>

index.html

another.html

 <!DOCTYPE html>

 <html lang="en">

 <head>

     <meta charset="UTF-8">

     <meta http-equiv="refresh" content="">

     <meta name="keywords" content="">

     <link rel="stylesheet" href="">

     <title>跳转的页面</title>

 </head>

 <body>

 <h2>跳转成功!</h2>

 </body>

 </html>

another.html

07 返回多个页面web框架的更多相关文章

  1. 08 返回动态页面web框架

    08 返回动态页面web框架 动态页面: 网页的内容是动态变化的,不是一直不变的(静态页面:每次显示的内容都是一样) 服务器server端python程序(动态页面版本): import socket ...

  2. web框架的本质

    一 web框架的本质及自定义web框架 我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端,基于请求做出响应,客户都先请求,服务端做出对应的响 ...

  3. python django基础一web框架的本质

    web框架的本质就是一个socket服务端,而浏览器就是一个socker客户端,基于请求做出相应,客户端先请求,服务器做出对应响应 按照http协议的请求发送,服务器按照http协议来相应,这样的通信 ...

  4. web 框架的本质及自定义web框架 模板渲染jinja2 mvc 和 mtv框架 Django框架的下载安装 基于Django实现的一个简单示例

    Django基础一之web框架的本质 本节目录 一 web框架的本质及自定义web框架 二 模板渲染JinJa2 三 MVC和MTV框架 四 Django的下载安装 五 基于Django实现的一个简单 ...

  5. django基础一之web框架的本质

    一 web框架的本质及自定义web框架 我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端,基于请求做出响应,客户都先请求,服务端做出对应的响 ...

  6. day 52 Django基础一之web框架的本质

    Django基础一之web框架的本质   django第一天 本节目录 一 web框架的本质及自定义web框架 二 模板渲染JinJa2 三 MVC和MTV框架 四 Django的下载安装 五 基于D ...

  7. 01.Django基础一之web框架的本质

    一 web框架的本质及自定义web框架 我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端,基于请求做出响应,客户都先请求,服务端做出对应的响 ...

  8. day 65 Django基础一之web框架的本质

      Django基础一之web框架的本质   django第一天 本节目录 一 web框架的本质及自定义web框架 二 模板渲染JinJa2 三 MVC和MTV框架 四 Django的下载安装 五 基 ...

  9. Django基础一Web框架的本质

    我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端,基于请求做出响应,客户都先请求,服务端做出对应的响应,按照http协议的请求协议发送请求, ...

随机推荐

  1. input框处理大全

    1.去掉谷歌input记住账号或密码时默认出现的黄色背景: 直接用css的内阴影来覆盖黄色(代码中 white可换成其他颜色) input:-webkit-autofill { -webkit-box ...

  2. 微信jssdk遇到的一些问题汇总

    1.用户手动去触发的接口可以直接调用比如wx.startRecord(); 但是写在页面加载完成里就无效,需要写在 wx.ready(function(){ wx.startRecord(); }); ...

  3. C++ Windows - How to get process path from its PID

    出处 https://stackoverflow.com/questions/1933113/c-windows-how-to-get-process-path-from-its-pid 注意质疑(我 ...

  4. Navicat premium15安装破解教程

    Navicat premium15安装破解教程 注意:安装之前请卸载干净navicat,不要覆盖安装 1.去官网下载Navicat premium15的安装包 官网地址:https://www.nav ...

  5. 【Linux常见命令】xargs命令

    xargs - build and execute command lines from standard input. 从标准输入< 方向获取数据,再创建和执行命令 xargs 是给命令传递参 ...

  6. Oliver Twist

    对于济贫院那些绅士们而言,贫民好吃懒做.贪得无厌.他们消耗的食物即是对教区最大的威胁. 绅士们的利益得不到满足时,孤儿们只能被驱之而后快,甚至被"加价出售". 然而,眼泪这种东西根 ...

  7. HDU 1233 最小生成树模板题,练练模板

    还是畅通工程 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub ...

  8. Servlet --启动时创建、配置url、ServlectContext、初始化参数、获取资源

    servlet的版本的区别 2.5版本, Servlet的配置只支持在xml文件中的配置 3.0版本: Servlet的配置支持在xml文件中的配置, 也可以使用注解的方式, 默认使用注解 让服务器在 ...

  9. tomcat 在linux下启动时找不到JDK

    方案一.  修改bashrc (转载: https://www.cnblogs.com/hongzg1982/articles/2101792.html)  $ vim ~/.bashrc #加入JA ...

  10. 线段树 G - Mayor's posters 小技巧

    G - Mayor's posters POJ - 2528 这个题目要倒着来写,从后面往前面贴,因为前面的有些会被后面的覆盖. 所以我们就判断这张海报的位置有没有完全被覆盖,如果完全被覆盖了就不能贴 ...