• B-S架构

架构的发展

1,c/s架构 (client客户端-server服务端)         (胖客户端:要求客户端运行业务;把业务放到服务器端,则是瘦客户端)         典型的c/s应用:ftp工具、QQ、邮件系统、杀毒软件...

        1.建立在tcp/ip协议之上,有自己的通信规则(建立业务) 

        2.需要相互配合才能完成一个完整业务逻辑

        3.允许多个客户端程序同时接入一个server程序(并发) 

        4.每一个client(机器)都必须安装客户软件

        5.修改了server程序,通常client程序都要修改(升级) 

优点:利用客户端的计算能力,分担服务器的负荷(大型网络游戏就利用这点) 

缺点:用户必须安装客户端程序;客户端需要升级(麻烦) 

2,b/s架构 (browser - web server(cluster集群))         (极瘦客户端:最低限度地减少客户端程序,只需要browser(浏览器))        
1.基于http协议(应用层) 

        2.几乎所有的业务逻辑处理都在server完成

        3.支持并发

        4.client要求很少,只需要安装browser(浏览器) 

        5.修改server之后,client不需要任何变化

        6.server端开发技术:html/js,xhtml,... php,asp,jsp,servlet

缺点:所有业务都在服务器端完成,服务器负荷大。

优点:支持高并发访问;不需另外安装软件(只需浏览器),免去更新的麻烦。

关于web中常见的名词或者概念,在我前面的博客里面有整理到,这里只是大致的罗列下复习一下。



  • 开发一个静态的Web应用

1,下载一个tomcat服务器

2,web服务器-Tomcat的启动和配置,运行新版本的(5之后)tomcat只需要配置上JAVA_HOME就可以。

    先进入Tomcat主目录下的bin目录      // %catalina_home%/bin

    window平台:启动---startup.bat               关闭---shutdown.bat

    Linux平台:    启动---startup.sh               关闭---shutdown.sh 或 Ctrl+C

    测试: 打开浏览器,访问 Tomcat 首页:http://localhost:8080 或者 http://127.0.0.1:8080/

    获取进程Id强行杀死tomcat进程:

       ps ef|grep tomcat ---查看tomcat的进程id

       kill -9 tomcat进程Id号 --- 强行杀死tomcat进程

3,介绍Web应用的结构,严格定义为两部分:

    ① Web应用的根目录下有一个特定的子目录称为WEB-INF,其中包含不能被客户访问的专用Web应用程序软件, 包括Servlet类文件、部署描述符web.xml、外部库以及其他任何由此应用程序使用的专用文件。

    ② 所有位于WEB-INF之外的文件都被看作是公共的,它们可以从客户端被访问。资源包括HTML页面、JSP页面和图像等。

    web.xml的模板(一个web.xml中可以配置多个Servlet):

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<servlet-name>servlet的名字1</servlet-name> //servlet的逻辑名
<servlet-class>servlet类全名1</servlet-class> //类的完全限定名
</servlet>
<servlet>
<servlet-name>servlet的名字2</servlet-name>
<servlet-class>servlet类全名2</servlet-class>
</servlet> <servlet-mapping>
<servlet-name>servlet的名字1</servlet-name> //要和servlet标签中的相同
<url-pattern>指定servlet相对于应用目录的路径</url-pattern> //servlet的访问路径
</servlet-mapping>
<servlet-mapping>
<servlet-name>servlet的名字2</servlet-name>
<url-pattern>指定servlet相对于应用目录的路径</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>//指定默认的欢迎页面
</welcome-file-list>
</web-app>
  • Web服务器的一些特点  

什么是静态内容?什么是动态内容?

静态:返回页面每个客户端都相同。  动态:各个客户端的页面各不相同。产生动态内容的Web辅助应用:CGI & Servlet

    

CGI(Common Gateway Interface): 可以产生动态内容,跨语言(C/C++, Perl, python...) 

1.本身是一个进程(数据共享,跨进程调用) --性能较差

2.可移植性很差(本地语言) 

3.安全性差--可以访问本地的操作系统,容易受黑客攻击

web server / servlet container

1.性能好 --多线程(而不是进程) 

2.可移植性 --相对好

3.安全性

  • Http基础

HTTP(Hyper Text Transfer Protocol)是超文本传输协议的缩写,它用于传送 WWW 方式的数据。  HTTP 协议采用了请求/响应模型。基于 TCP/IP 之上的协议,在 Web 上广泛使用。无状态。  如果来自服务器的响应是 html 页面,那么 html 内容会嵌入到 Http 响应中。  Http 会话:是一个简单的请求-响应序列。

1)请求响应模型

    请求的关键要素:1.http方法(要完成的动作) 2.要访问的页面(URL请求) 3.表单参数

    响应的关键要素:1.状态码(请求是否成功) 2.内容类型(txt,img,html等) 3.返回内容(具体资源:html,图片等) 

2)URL的分析

    URL(Uniform Resoure Locator)统一资源定位器。Web 上的每一个资源都有唯一的地址,采用的就是 url 格式

3)使用Http Monitor截获http的请求与响应信息

    Http 请求方法包括:Get()方法;Post()方法; 其他方法:Head, Trace, Put, Delete, Connect 等

    Get()方法: Http 最简单的方法,其最主要的任务:从服务器上获取资源

    Post()方法:更强大的请求方法,不仅可以请求资源,还可以向服务器发送表单数据

4)分析http请求的信息

    客户端向服务器发送一个请求,请求头包含:1.请求的方法; 2.URI; 3.协议版本; 4.以及包含请求修饰符; 5.客户信息和内容的类似于 MIME 的消息结构

5)分析http响应的信息。截获内容:

HTTP/1.1 200 OK      // HTTP/1.1 是web服务器使用的版本;200 是状态码;OK 是状态码的文本版本
ETag: W/"472-1198101802343"
Last-Modified: Wed, 19 Dec 2007 22:03:22 GMT
Content-Type: text/html // MIME类型:告诉浏览器所要接收的是哪一类型的数据。以供浏览器显示。
Content-Length: 472
Date: Wed, 19 Dec 2007 22:05:44 GMT
Server: Apache-Coyote/1.1
//以上是Http响应的首部
//响应体中包含了Html以及其他要显示的内容
<html><head><title>User Login</title></head>
<body><center>……</center></body></html>

       

  • Http 响应状态码分析(具体代码含义参看 http 代码对照表):

1xx:信息响应类,表示接收到请求并且继续处理

        2xx:处理成功响应类,表示动作被成功接收、理解和接受

        3xx:重定向响应类,为了完成指定的动作,必须接受进一步处理

        4xx:客户端错误,客户请求包含语法错误或者是不能正确执行。 如:404——无法找到,表示无法找到指定位置的资源。

        5xx:服务端错误,服务器不能正确执行一个正确的请求

Web应用基础的更多相关文章

  1. Web编程基础--HTML、CSS、JavaScript 学习之课程作业“仿360极速浏览器新标签页”

    Web编程基础--HTML.CSS.JavaScript 学习之课程作业"仿360极速浏览器新标签页" 背景: 作为一个中专网站建设出身,之前总是做静态的HTML+CSS+DIV没 ...

  2. web前端基础知识及快速入门指南

    web前端基础知识及快速入门指南 做前端开发有几个月了,虽然说是几个月,但是中间断断续续的上课.考试以及其它杂七杂八的事情,到现在居然一直感觉自己虽然很多前端的知识很眼熟,却也感觉自己貌似也知识在门口 ...

  3. [置顶] 提高生产力:Web开发基础平台WebCommon的设计和实现

    Web开发中,存在着各种各样的重复性的工作.为了提高开发效率,不在当码农,我在思考和实践如何搭建一个Web开发的基础平台. Web开发基础平台的目标和功能 1.提供一套基础的开发环境,整合了常用的框架 ...

  4. 从头编写asp.net core 2.0 web api 基础框架 (5) + 使用Identity Server 4建立Authorization Server (7) 可运行前后台源码

    前台使用angular 5, 后台是asp.net core 2.0 web api + identity server 4. 从头编写asp.net core 2.0 web api 基础框架: 第 ...

  5. 20155324《网络对抗技术》web安全基础实践

    20155324<网络对抗技术>web安全基础实践 实验内容 使用webgoat进行XSS攻击.CSRF攻击.SQL注入 实验问答 SQL注入攻击原理,如何防御 ①SQL注入攻击是攻击者在 ...

  6. #WEB安全基础 : HTML/CSS | 文章索引

    本系列讲解WEB安全所需要的HTML和CSS #WEB安全基础 : HTML/CSS | 0x0 我的第一个网页 #WEB安全基础 : HTML/CSS | 0x1初识CSS #WEB安全基础 : H ...

  7. #WEB安全基础 : HTTP协议 | 文章索引

    本系列讲解WEB安全所需要的HTTP协议 #WEB安全基础 : HTTP协议 | 0x0 TCP/IP四层结构 #WEB安全基础 : HTTP协议 | 0x1 TCP/IP通信 #WEB安全基础 : ...

  8. 2017-2018-2 20155228 《网络对抗技术》 实验九:Web安全基础

    2017-2018-2 20155228 <网络对抗技术> 实验九:Web安全基础 1. 实践内容 1.1 标理解常用网络攻击技术的基本原理 1.2 在Webgoat实验环境下实践相关实验 ...

  9. 20155208徐子涵《网络对抗》Exp9 Web安全基础

    20155208徐子涵<网络对抗>Exp9 Web安全基础 实验要求 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 实验过程 最后一次了,没有选择尝试免考项目 ...

  10. 20155312 张竞予 Exp9 Web安全基础

    Exp9 Web安全基础 目录 基础问题回答 (1)SQL注入攻击原理,如何防御 (2)XSS攻击的原理,如何防御 (3)CSRF攻击原理,如何防御 实践过程记录 WebGoat准备工作 1.XSS攻 ...

随机推荐

  1. mongodb 创建用户

    1.创建管理员 2.授权认证 3.给使用的数据库添加用户 普通连接(非授权连接)数据库 mongod -f /usr/local/etc/mongod.conf 授权连接数据库 mongod -f / ...

  2. ES6小点心第二弹——底部浮现弹窗

    小点心,顾名思义,开箱即食,拿来即用. 献上第二个小点心:SlidePopup. GitHub 在线演示 GitHub 上欢迎大家来找茬^_^ 前端朋友们,今天要介绍的这款小点心牛B了.相信是个前端都 ...

  3. 关于FPGA的一些你必须知道的概念

    前仿真也称为功能仿真,主旨在于验证电路的功能是否符合设计要求,其特点是不考虑电路门延迟与线延迟,主要是验证电路与理想情况是否一致.可综合FPGA代码是用RTL级代码语言描述的,其输入为RTL级代码与T ...

  4. ISE14.7兼容性问题集锦

    六.WARNING:iMPACT:923 - Can not find cable, check cable setup ! 这个错误是由于驱动没有安装或者驱动安装有问题,一般ISE会在安装的时候把驱 ...

  5. 洛谷 P1876 开灯(思维,枚举,规律题)

    P1876 开灯 题目背景 该题的题目是不是感到很眼熟呢? 事实上,如果你懂的方法,该题的代码简直不能再短. 但是如果你不懂得呢?那...(自己去想) 题目描述 首先所有的灯都是关的(注意是关!),编 ...

  6. Gym 100952I&&2015 HIAST Collegiate Programming Contest I. Mancala【模拟】

    I. Mancala time limit per test:3 seconds memory limit per test:256 megabytes input:standard input ou ...

  7. HDU 1005 Number Sequence【多解,暴力打表,鸽巢原理】

    Number Sequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)T ...

  8. BZOJ2004: [Hnoi2010]Bus 公交线路

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2004 状压dp+矩阵乘法. f[i][s]表示从第i位至前面的i-k位,第i位必须取的状态. ...

  9. 命运(经典dp)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=2571 命运 Time Limit: 2000/1000 MS (Java/Others)    Mem ...

  10. Linux /bin, /sbin, /usr/bin, /usr/sbin 区别

    在linux下我们经常用到的四个应用程序的目录是:/bin./sbin./usr/bin./usr/sbin    bin:  bin为binary的简写主要放置一些系统的必备执行档例如:cat.cp ...