GUI应用程序的部署难,动态网站部署简单,广泛发布。
服务器用HTTP(HyperText Transport Protocal)发送HTML(HyperText Markup Language)给浏览器。

HTML有标签和属性
浏览器将HTML代码创建为网页并渲染到显示器上。

HTTP运行在TCP/IP之上。
TCP负责让被分快的文件在网络节点之间完整的传输
IP在下面让每一个文件块能在路由之间找到去往目的地的路。
HTTP会话的结构就是浏览器请求,服务器相应,如此反复。

request请求:HTTP,URL,参数
response响应:状态码,Content-Type(MIME),Content
HTTP是IETF标准,RFC 22616,Apache 是一个处理HTTP请求的服务器,Firefox是一个发送HTTP请求的浏览器。

一个HTTP响应有一个header,并携带了HTML数据。
HTTP请求有不同的方法,不同的方法表示不同的请求类型,和不同的消息格式,如 GET(用户点击新的网页链接)&POST(用户点击提交按钮).
GET只负责请求,POST不仅可以请求同时还能发送数据给服务器。
其他方法:HEAD,TRACE,PUT,DELETE,OPTIONS,CONNECT.

其实GET可以携带少量数据,用?将路径和参数隔开,参数之间用&,形如/somepath.../demo.jsp?x=1&y=2&z=3
还得用POST的原因:

  • 参数有限制,视服务器而定
  • 明文
  • 相对POST,GET不能将表单数据添加到书签

GET:请求=request line (参数在此,name/value pair) + request header
POST:请求=request line + request header + message(payload)(参数在此)

Response

  • header :协议版本 HTTP/1.1,状态码200 OK,内容类型Content-Type …
  • body:内容

GET 全过程:

输入URL->发送请求->服务器接受请求->找到资源->发送相应->浏览器接响应->渲染页面。

URL(Uniform Resource Locators)
Protocal+Server+Port+Path+Resource
http://www.wickedlysmart.com:80/beeradvice/slect/beer1.html

TCP 端口号(Port),一个16-bit的数字(0~65535),标识了一个运行在服务器硬件上的特定软件程序,而非物理插口。

协议 端口
FTP 21
Telnet 23
SMTP 25
Time 37
HTTP 80
POP3 110
HTTPS 443

0~1023 TCP 端口为知名的服务保留,不能用于自定义的服务器程序。
使用不同协议的多个应用可以使用同一个端口。

所谓静态网页,就是存在目录里,等着被服务器交接给浏览器的网页,中途不做任何更改,每一个浏览器得到的网页都一样。
比如需要网页上显示当地时间,静态网页显然就做不到了。

Web Server App 只可以serve,不能在 serve 的东西上 do computation,但是服务器上的其他 App 可以。
故,可以将请求交给别的程序帮忙处理。

动态创建的页面(dynamically-created pages)意味着其在被 request 之前是不存在的。request来,程序创建网页,response回去。

光靠Web Server 不能完成:

  • 动态内容
  • 在服务器存储数据

web server 将请求参数交给 生成 response 的 app 来处理。

这些帮忙处理请求的 app 在没有 Java 的世界里,叫做 CGI (Common Gateway Interface)程序。通常是 Perl 脚本写的,也可以是 C,Python, PHP.

请求来,web server app 接受,启动CGUI程序并将参数转给它,CGI程序构建一张新的网页交给web server app后关闭,web server app将网页返回给浏览器。
从web server app 的角度看,网页始终是静态的。

Perl Servlet
语言晦涩 Java流行
性能差 性能好
CORBA J2EE

Servlet 必须将所有内容print到HTTP response stream 中,为了不让 Java Class 塞满 HTML 和字符串变量(否则HTML中的回车换行和双引号会把人逼疯),于是有了JSP,将一些Java代码移动到HTML中,就像在HTML中插入了变量。(把Java放进HTML而不是反之)

JSP让Java 开发者不用写HTML了,但是会让网页设计师多写一点额外的“Java”,不是真的Java代码,而是JSP标记语言。

Bullet Point

  • HTTP TCP/IP
  • HTTP Request/Response
  • GET/POST
  • MIME
  • URL
  • Web Server , CGI
  • Servlet/JSP

Head First ServletJSP 1.Why use Servlets JSPs相关推荐

  1. Why use Servlets JSPs: an introduction(Head First Servlets and JSP)

    ? A GET request appends form data to the end of the URL. ? A POST request includes form data in the ...

  2. APACHE TOMCAT INTERVIEW QUESTIONS ANSWERS【转】

    原文地址:https://www.wisdomjobs.com/e-university/apache-tomcat-interview-questions.html Question 1. What ...

  3. Introduction to the Peer-to-Peer Sockets Project

    http://onjava.com/lpt/a/4421 ------------------------------------------------------------      Publi ...

  4. eclipse插件说明

     Properties Editor Properties Editor 编辑java的属性文件,并可以自动存盘为Unicode格式 更多Properties Editor 信息  Colorer T ...

  5. Eclipse插件大全 (下)

     Quigen Quigen这个插件利用Velocity模板引擎来快速生成任何类型的文本内容.它不需要进行配置,所要做的只是利用它自带Velocity编辑器编写一个velocity 模板文件. 更多Q ...

  6. Portal产品对比分析报告

    目录 1概述 2Portal相关产品介绍 2.1商业Portal 2.1.1Bea weblogic portal 2.1.2IBM websphere portal 2.1.3Oracle port ...

  7. 【历史】 tomcat mysql server 端本地部署完美方案

    1 介绍 HTTP Server: E.g., Apache HTTP Server, Apache Tomcat Server, Microsoft Internet Information Ser ...

  8. JXCZT网络管理系统建设方案

    1.      背景 随着近年来XXXX业务要求的不断提升和对IT系统的快速建设,IT建设已经初具规模,业务开展也越来越依赖IT系统,IT系统和业务数据对XXXX的重要性越来越显现出来. 不论是5×8 ...

  9. portlet 2.0_Java Portlet规范V2.0(JSR 286)中有哪些新功能?

    Portlet是组件化的面向用户的应用程序,可创建某种标记. 该标记旨在与其他标记片段聚合到一个更大的应用程序中,例如,如图1所示的门户页面. 图1.一个样本门户页面 因此,可以将Portlet视为基 ...

最新文章

  1. MacOS中安装python-jekins失败解决方法
  2. [ZJOI2008][BZOJ1036] 树的统计count
  3. python绘制一个圆_Python在网格上绘制一个填充的“圆”
  4. 8 种常见SQL错误用法,你千万别犯!
  5. checksum linux 命令_linux常用命令总结
  6. Java黑皮书课后题第5章:**5.28(显示每月第一天是周几)编写程序,提示用户输入年份和代表概念第一天是周几的数字,然后在控制台显示该年各个月份的第一天是周几
  7. jvm timezone
  8. [转]通过创建一个位图的XY Chart来学习Android绘图类Rect,Paint,Bitmap,Canvas(附源码)...
  9. python允许无止境的循环吗_Python第一天 - 思想永无止境的个人页面 - OSCHINA - 中文开源技术交流社区...
  10. CAP 原则与 BASE 理论
  11. java连接符_使用java流将两个集合的元素与分隔符连接起来
  12. [从零开始]HelloWorld——第一个应用程序
  13. 使用 jsfl 发布flash IDE 插件
  14. mysql视图子查询_MySQL:FROM子句限制中的带有子查询的视图
  15. gambit软件license文件
  16. adb的环境搭建,下载和卸载app
  17. 管家婆系统怎么创建提醒服务器,管家婆辉煌Ⅱ++10.1 -管家婆软件官方网站
  18. AHCI和IDE区别,和在目前系统中设置 AHCI - 摘自网络
  19. 中国无线VOC检测器行业市场供需与战略研究报告
  20. Android控件——TextView与EditText

热门文章

  1. 对手方最优价格和本方最优价格
  2. linux dialog详解
  3. element table复选框禁用
  4. 再见 RPM/DEB/TAR,是时候拥抱下一代全平台安装程序 AppImage 了!
  5. ArcGIS 10.2安装教程 (Win10 环境下)
  6. Excel编程——复制WorkSheet
  7. 信大捷安校招过程以及java岗位笔试+面试题(2019秋招回忆)
  8. node.js+uniapp计算机毕业设计安卓天然气地域数据管理APP(程序+APP+LW)
  9. mysql错误18456_解决sql server 2008 18456 用户登录失败的方法
  10. nacos注册中心(三)服务订阅