第1章--Web应用开发概述

Web应用开发概述

浏览器-服务器架构(BS-architecture)

browser/ App    ---- request ---->    server (database)

<- response/data --

protocol: HTTP(Hyper-Text Transfer Protocol)

have a try:

cmd: sudo nc -l 80  -- listen at the port of 80(port 80 is used by HTTP)

browser: type "localhost" in the address bar

these are the info that sent to the server(localhost)

meanwhile, the browser is waiting for the request (from the server)

try to type "hello" and ctrl+c

"hello" will be displayed in the browser

If we enter the address of a website, such as "http://study.163.com"

it is called URL (uniform resource locator) (统一资源定位)

In this case: "http://study.163.com/smartSpec/intro.html?name=163"

http: protocol, such as ftp, mailto

smartSpec/intro.html: request sent to the server

?name=163: data that sent to the server via GET method

Let's see what info can be sent via GET method

[html] view plain copy

    1. <html> <body>
    2. <form action="http://localhost/form_action.html" method="get">
    3. <p>First Name: <input type="text" name="fname" /></p>
    4. <p>Last Name: <input type="text" name="lname" /></p>
    5. <input type="submit" value="Submit" />
    6. </form> </body> </html>

1. open .html in the browser

2. type sudo nc -l 80 in terminal

3. submit the info

4. result

GET /form_action.html?fname=Lin&lname=Matt

What if we use POST as the method?

same steps as GET

but different result:

POST /form_action.html (no extra data shown explicitly after "/form_action.html")

but "fname=Lin&lname=Matt" will be displayed at the end.

furthermore, new property "content-length" added, which means the number of characters (data) sent to the server, which is fname=Lin&lname=Matt in this case)

After those info/data/request(shown above) has been sent to the server,

the server needs to give the feedback(response) back to the client/ browser.

feedback:

1. 静态页面(such as .html file, .img file)

2. 动态数据  (data retrieved by programs running on the server side based on the input (like first name/ last name in the previous example))

HTTP protocol: connectionless 无连接的

After a series of actions has done (request --> response),the connection gets broken.

Advantages --> disconnect with those users who are not currently communicating with the server at that time, in other words, accessible to as many users as possible at the same time

Disadvantages: the server does not know who u r after one connection.

for example, after we log in, we expect that we do not need to log in again if we try to visit other relevant webpages.

--> solution: cookie

after the first-time connection, the client got a "number" from the server which identifies the client/ browser itself.

then the browser will store that number, and every time the client connects to the server, it will bring that number with it, and the server will know the client by checking that id number

that number in this example is called cookie.

Also, the cookie got its own expiry date, which is set by the server.

HTTP会话 (session) :connection, request, response, close.

HTTP protocol: how to deal with the data in the database

background: when the client sends a request to the server, the program in the server always try to retrieve the relevant data from its database system, and then the program is going to generate an HTML file (or other file that can be understood by the browser), and sends back to the client as a response.

problem 1: the limitation of the number of connections between the database and the web server is much smaller than that between the client and the web server.

in other words, minimising the number of the connections btw database and the web server is required.

--> solution1: connection pool

creates a connection pool between the web server and the database which has limited connections.

each time the web server requires a connection to the database, it will ask the connection pool for the access of connection

--> solution2: cache

different clients might search for the same data during a short period of time

there is no need to run the program to retrieve the same data from the database repeatedly.

-- lower the workload of the database and speed up the reaction from the server

Java开发工程师(Web方向) - 01.Java Web开发入门 - 第1章.Web应用开发概述的更多相关文章

  1. Java开发工程师(Web方向) - 01.Java Web开发入门 - 第3章.Tomcat

    第3章--Tomcat Tomcat安装与运行 Tomcat:目前最常用的基于java的web应用服务器 本课程中所有的Java代码最终都需要部署到Tomcat中运行 Tomcat的配置文件是XML的 ...

  2. Java开发工程师(Web方向) - 01.Java Web开发入门 - 第6章.蜂巢

    第6章--蜂巢 蜂巢简介 网站开发完,就需要测试.部署.在服务器上运行. 网易蜂巢: 采用Docker容器化技术的云计算平台 https://c.163.com 容器管理:容器可被视作为云主机的服务器 ...

  3. Java开发工程师(Web方向) - 01.Java Web开发入门 - 第4章.Maven

    第4章--Maven Maven实战 Java Web应用的部署: 手动式: 编译:javac -cp $CATALINA_HOME/lib/servlet-api.jar web-inf/class ...

  4. Java开发工程师(Web方向) - 01.Java Web开发入门 - 第5章.Git

    第5章--Git 版本控制简介 VCS (version control system) 版本控制系统:记录若干文件的修订记录的系统,帮助查阅/回到某个历史版本 LVCS本地 CVCS集中式(Cent ...

  5. Java开发工程师(Web方向) - 01.Java Web开发入门 - 第2章.HTTP协议简介

    第2章--HTTP协议简介 HTTP协议简介 Abstract: HTTP协议的特性,HTTP请求/响应的过程,HTTP请求/响应的报文格式等知识,最后会演示如何通过Chrome提供的开发者工具,去跟 ...

  6. Java软件工程师面试题:Java运行时异常与一般异常有什么不一样?

    异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误.java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕 ...

  7. Android开发工程师面试题之handler详解。android程序员,android开发面试资料,详解

    Message:消息:其中包含了消息ID,消息对象以及处理的数据等,由MessageQueue统一列队,终由Handler处理 Handler:处理者:负责Message发送消息及处理.Handler ...

  8. 前端开发工程师 - 05.产品前端架构 - 协作流程 & 接口设计 & 版本管理 & 技术选型 &开发实践

    05.产品前端架构 第1章--协作流程 WEB系统 角色定义 协作流程 职责说明 第2章--接口设计 概述 接口规范 规范应用 本地开发 第3章--版本管理 见 Java开发工程师(Web方向) - ...

  9. Java后端开发工程师是否该转大数据开发?

    撰写我对java后端开发工程师选择方向的想法,写给在java后端选择转方向的人 背景 看到一些java开发工程师,对java后端薪酬太悲观了.认为换去大数据领域就会高工资.觉得java后端没有前途.我 ...

随机推荐

  1. mybatis映射文件参数处理 #{}取值与${}取值的区别

    #{}:是以预编译的映射,将参数设置到sql语句中,和jdbc的preraredStatement一样,使用占位符,防止sql注入. ${}:取出的值会直接拼装在sql中,会有安全问题. 大多数情况下 ...

  2. HDU 1789 Doing Homework again(非常经典的贪心)

    Doing Homework again Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Oth ...

  3. Java实现 lower_bound() 和 upper_bound()

    Java实现 lower_bound() 和 upper_bound() lower_bound() 函数 lower_bound() 在 [begin, end) 进行二分查找,返回 大于或等于 t ...

  4. Vertical-Align你应该知道的一切

    好,我们聊聊vertical-align.这个属性主要目的用于将相邻的文本与元素对齐.而实际上,verticle-algin可以在不同上下文中灵活地对齐元素,以及进行细粒度的控制,不必知道元素的大小. ...

  5. Unity 游戏框架搭建 (十八) 静态扩展 + 泛型实现transform的链式编程

    本篇文章介绍如何实现如下代码的链式编程: C# this.Position(Vector3.one) .LocalScale(1.0f) .Rotation(Quaternion.identity); ...

  6. tomcat端口被占用如何解决

    有时候我们在eclipse中启动项目时,Tomcat服务器会报错,显示8080.8009.8005这几个端口被占用,此时你用debug启动项目时会发现不管用,console控制台什么信息也没有,此时产 ...

  7. 『ACM C++』 Codeforces | 1005D - Polycarp and Div 3

    今天佛了,魔鬼周一,在线教学,有点小累,但还好,今天AC了一道,每日一道,还好达成目标,还以为今天完不成了,最近任务越来越多,如何高效完成该好好思考一下了~最重要的还是学业的复习和预习. 今日兴趣新闻 ...

  8. 消息队列MSMQ的使用

    1.MSMQ安装 控制面板-程序和功能-打开或关闭Windows功能-Microsoft Message Queue(MSMQ)服务器,选中所有,点击确定. 2.消息队列的应用场景(转载自http:/ ...

  9. React基本语法

    React 一.导入     0.局部安装 react 和 react-dom         npm install --save-dev react react-dom       1.react ...

  10. Oracle之多表查询

    -多表查询 1.交叉连接 select * from t_class for update; select * from t_student for update; select for update ...