Web应用基础

  • 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:服务端错误,服务器不能正确执行一个正确的请求

时间: 2024-11-06 08:22:27

Web应用基础的相关文章

20145225唐振远《网络对抗》 Web安全基础实践

20145225唐振远<网络对抗>Web安全基础实践 参考博客:20145215 卢肖明 基础问题回答 (1)SQL注入攻击原理,如何防御? SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意SQL命令的目的. 防御:利用输入规则限制进行防御,过滤输入的数据,不允许特殊字符输入. (2)XSS攻击的原理,如何防御? 跨站脚本攻击,允许恶意用户将恶意Script代码注入到网页上,当用户浏览网页时,嵌入其中Web里面的Script代码

exp9《网络对抗》web安全基础实践201453331魏澍琛

201453331魏澍琛web安全基础实践 一.实验过程 1.webgoat开启 2.Injection Flaws练习 Command Injection 原网页中没有注入的地方,那就用burpsuite(设置的相关步骤别人的博客写的很详细,不累述了),分析第一个包看他的数据提交的位置,找到后进行命令的注入,成功. 我注入的命令是AccessControlMatrix.help"&&ifconfig",执行了ifconfig命令,鉴于这个可以证明是本人操作,就把他截了

web入侵基础篇

基本的命令....最基础的,为以后提权做准备 入侵基础篇.zip:http://pan.baidu.com/s/1dDhAHwd web入侵基础篇,布布扣,bubuko.com

Android笔记之 Web Service 基础

一.Web Service是什么? 就是网络服务,根据W3C的定义,WebServices(Web服务)是一个用于支持网络间不同机器互操作的软件系统,它是一种自包含.自描述和模块化的应用程序,它可以在网络中被描述.发布和调用,可以将它看作是基于网络的.分布式的模块化组件.  Web Services是建立在通用协议的基础之上的,包括HTTP.SOAP.UDDI.WSDL等.其中Web Service三要素就是SOAP.WSDL和UDDI. SOAP用来描述传递信息的格式, WSDL用来描述如何访

20145317彭垚《网络对抗》Exp9 Web安全基础实践

20145317彭垚<网络对抗>Exp9 Web安全基础实践 基础问题回答 SQL注入攻击原理,如何防御? SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意SQL命令的目的. 对于SQL注入攻击的防范,我觉得主要还是应该从代码上入手: 采用预编译语句集PreparedStatement,它内置了处理SQL注入的能力,只要使用它的setXXX方法传值即可.它的原理就是sql注入只对sql语句的准备(编译)过程有破坏作用,而Prep

web开发基础--字节序

1.有效位 在谈字节序前需要先了解有效位,有效位分为两种:最低有效位(LSB: Least Significant Bit) 和最高有效位(MSB:Most Significant Bit).在二进制数中,LSB是最低加权位,与十进制数字中最右边的一位类似:MSB是最高加权位,与十进制数字中最左边的一位类似.通常,MSB位于二进制数的最左侧,LSB位于二进制数的最右侧.以一个十进制的数12345678为例,最高有效位就是1,最低有效位就是8. 2.字节序: 字节序,顾名思义字节的顺序,就是大于一

《web 前端基础到实战系列课程》

<web 前端基础到实战系列课程> 摘要: mod_expires&mod_headers可以减少10%左右的重复请求,让重复的用户对指定的页面请求结果都CACHE在本地,根本不向服务器发出请求. 在使用之前,首先要确认一下"mod_expires"模组是否有启用.如果是自己安装Apache来架设网页主机的话,这里我们可以透过编辑Apache的"httpd.conf"设定档来处理 一.浏览器缓存原理 将该行前面的"#"字号删除

20145326蔡馨熤《网络对抗》—— Web安全基础实践

20145326蔡馨熤<网络对抗>-- Web安全基础实践 1.实验后回答问题 (1)SQL注入攻击原理,如何防御. 原理: SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据,致使非法数据侵入系统. 根据相关技术原理,SQL注入可以分为平台层注入和代码层注入.前者由不安全的数据库配置或数据库平台的漏洞所致:后者主要是由于程序员对输入未进行细致地过滤,

web应用基础知识点

(一)WEB应用基础 (一)Web应用基础 1.什么是Web应用? 答:Web应用是指在B/S结构体系下的应用软件系统. ( 补充: B/S(Browser/Server,浏览器/服务器)结构:在服务器端安装一些应用程序,在客户端只要通过浏览器就能查看相关内容. C/S(Client/Server,客户端/服务器)结构:在客户端安装一个软件,通过该软件访问服务器端资源.) 2.Web是由谁发明的? 答:Tim Berners-Lee(蒂姆·伯纳斯-李). 3.Web应用经历了怎样的发展过程? 答

20145216史婧瑶《网络对抗》Web安全基础实践

20145216史婧瑶<网络对抗>Web安全基础实践 实验问题回答 (1)SQL注入攻击原理,如何防御 攻击原理: SQL注入攻击指的是通过构建特殊的输入作为参数传入web应用程序,而这些输入大都是SQL语法里的一些组合,程序通过执行SQL语句进而执行攻击者所要的操作.其主要原因是程序没有细致的过滤用户输入的数据,致使非法数据侵入系统. 防御方法: 对输入的数据进行过滤,将常见的sql语句的关键词:select or ' " 等字符进行过滤. 对在数据库中对密码进行加密,验证登陆的时