Web开发的相关知识


1WEB开发的相关知识

1WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问资源

2Internet上供外界访问的Web资源分为:

静态web资源(如html界面):指web页面供人们浏览的数据始终不变

动态webz资源:指web页面中供人们浏览的数据是由程序产生的,不同时间点访问web页面看到的内容是不一样的

3)静态web资源开发技术:Html

4)常用动态web资源开发技术:JSP/Servlet ASPPHP等,在Java中,动态web资源开发技术统称为JavaWeb

Web1.0:这个数据是让用户浏览的,主要用来传播信息

Web2.0:页面是用来交互的

JSP/Servlet优势:企业的前端开发

Asp-微软的解决方案 ——>.net(C#.net /asp.net/ vb.net)

Php——开源组织的 androidrubypythonhadoop

LampLinux+apache+mysql+php

2、常见Web服务器

1web服务器的模型 

  遵守请求-- 响应的模型

  a) 请求与响应必须成对的出现.

  b)必须先有请求,后有响应.

2常见的web服务器  

    

    j2ee --- javaee  ---- >> 一些技术规范的集合总共有 13 种技术 (jsp/servlet

   weblogic: Bea 公司的产品, javaee 规范全面 支持 这13种技术. BEA oracle公司   收购了

    这个服务器 网络上的资料 比较 多(全部 都是 英文的)

   websphere: 收费的(非常贵网络上资料非常少.  全面支持 javaee规范

   Jboss: 免费的网络资料比较多开源的全面支持 javaee规范 . redhat

   

   tomcat 服务器 : apache 基金会的产品小型的web 服务器.

   jsp/servlet. 免费的

   

   resin:  jsp/servlet. 免费的

   大名鼎鼎的红帽的产品,原来属于开源组织JbossAS,后被红帽收购。支持JavaEE规范,  免费。

补充:Tomcat服务器

Tomcat官方站点:http://tomcat.apache.org/

获取Tomcat安装程序包

tar.gz文件是Linux操作系统下的安装版本

exe文件是Windows系统下的安装版本

zip文件是Windows系统下的压缩版本 

安装Tomcat ==> 配置JAVA_HOME

我们后面的JavaWeb学习都是基于Tomcat服务器的

3、常见启动问题

1Java_home环境变量

windows中设置java_home环境变量

只要在setclasspath.bat批处理文件第一次使用JAVA_HOME环境变量之前的任何地方,将JAVA_HOME环境变量设置为JDK的主目录,就可以使用startup.bat文件启动Tomcat了。

2端口占用问题

WindoxXP 使用Fport工具 或  netstat ano

Win7 使用DOS命令 netstat ano  

services.msc( windows IIS 服务)

(3)Catalina_home环境变量的设置问题  

解决方案:

a) java_home环境变量没有设置:

指向的是 jdk的安装目录.

C:\Program Files\Java\jdk1.6.0_31 , 千万不要指向 bin目录配置环境变量时

java_home中间不能是-,  指向的jdk的目录不能够再最后加 ;

   b) tomcat 端口被占用. tomcat启动时默认的是占用 8080 端口.如果8080 端口已经被其他的应用程序占用

那么tomcat就启动不了了这时候

: cmd 进入 dos 命令行.  netstat -ano 可以查看到 所有的进程 运行在哪个端口上

然后找到占用了8080 端口的程序

进入到windows的 任务管理器找到 pid (第二个选项卡-进程勾选pid这个显示框.)

    然后就可以看到所有的进程pid.

:结束占用了8080 端口的应用程序

 直接启动tomcat.

   c) 如果把tomcat启动时的端口 改成80 之后 可能 重启服务器又 启动不了了怎么办?

      重复 b) 操作,找到 占用80 端口的应用程序然后把它干掉.

      如果 b)操作不好使,那么可能就是windowsIIS 占用了80 端口(系统级的服务.干不掉)

      进到windows的 服务列表中将其 干掉了.

Catalina_home环境变量的设置问题

用来指明tomcat 服务器 安装的目录但是呢一般都不会配置该环境变量.

因为配置正确了没有关系.但是一旦配置错误,那么tomcat就启动不了了.

4Tomcat目录结构

bin——存放启动和关闭Tomcat的脚本文件

conf——存放Tomcat的各种配置文件

lib——存放Tomcat服务器支撑的jar

logs——存放Tomcat的日志文件

temp——存放Tomcat运行时产生的临时文件

webapps——web应用所在目录,即供外界访问的web资源的存放目录

work——Tomcat工作目录

Tomcat服务器与Servlet版本关系

5WEB应用程序

(1) WEB应用程序指供浏览器访问的程序,通常也简称为web应用

(2) 一个web应用由多个静态web资源和动态web资源组成

如:htmlcssjs文件

Jsp文件、Java程序、支持jar

配置文件等等。。。

组成web应用的这些文件通常我们会使用一个目录组织,这个目录称之为web应用所在目录

3Web应用开发好后,若想供外界访问,需要把Web应用所在目录交给web服务器管理,这个过程称之为虚拟目录的映射

6WEB应用组织结构

开发web应用时,不同类型的文件有严格的存放规则,否则不仅可能会使web应用无法访问,还会导致web服务器启动报错

Mailweb应用所在目录)

|-----html jspcssjs文件等【这些文件一般都存在web应用根目录下,根目录下的文件外界可以直接访问】

|-----WEB-INF目录【javal类,jar包、web应用的配置文件存在这个目录下,该目录文件外界无法非法直接访问,由web服务器负责调用】

|----classes目录——(java

|----lib目录------Java运行时所需的jar包)

|-----web.xml——(web应用的配置文件

虚似目录的映射方式

2、从tomcat6开始,apache 不再建议在server.xml文件中配置context元素,细节查看tomcat服务器关于context元素的说明

     在conf/Catalina/localhost/bb.xml 

3、tomcat自动映射: tomcat服务器会自动管理webapps目录下的所有web应用,并把它映射成虚拟目录。换句话说,tomcat服务器webapps目录中的web应用,外界可以直接访问

详细做法:

 a) 方式一:

conf/server.xml,在其host元素下配置一个 Context 元素.

<Context path="/itheima" docBase="d:\mail"/>

配置好了之后,由于改动了server.xml,所以呢需要重新启动 tomcat 服务器.

   b) 方式二:

进到 D:\tomcat\apache-tomcat-7.0.40\conf\Catalina\localhost 目录下.

然后建一个xml文件.  aa.xml

然后在xml 中写 :

<?xml version="1.0"?>

<Context docBase="d:\mail"/>

紧接着就可以访问了:

http://localhost/aa/1.html

这种方式的好处是配置完成后不需要重启服务器.

   c)方式三:  (**********重要)

直接将 开发好的web应用 放到 webapps目录下就可以了, tomcat 服务器会自动 管理 web应用.

web应用的对外访问路径也就是 文件夹的名称.

直接访问: http://localhost/mail/1.html

如何将自己的web应用弄成缺省的呢? 

两种方式

方式一:  直接在 server.xml中 的host元素里 配置 :

<Context path="" docBase="d:\mail"/>

这里不配置对外访问路径就表示把自己的web应用弄成缺省的了.

方式二在 D:\tomcat\apache-tomcat-7.0.40\conf\Catalina\localhost .

建一个 ROOT.xml文件 那么也可以弄成缺省的。

        如果是多级访问 目录, 可以 建一个 foo#bar.xml

如何给自己的web应用配置一个欢迎页面呢?

在自己的web应用文件夹下 建一个 WEB-INF 目录.

然后在这个目录下建一个 web.xml文件.

<?xml version="1.0" encoding="ISO-8859-1"?>

<web-app 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_3_0.xsd"

  version="3.0">

  <!--这是配置一个欢迎页面.-->

  <welcome-file-list>

<welcome-file>1.html</welcome-file>

    </welcome-file-list>

</web-app>

     访问 tomcat 刚刚配置好的欢迎页面需要 重启服务器

war包的制作与tomcat Manager的使用

war包的制作:

方式一:  使用rar压缩 工具 web 应用压缩成 一个zip 然后 更改扩展名为.war

方式二:  进入dos 命令行然后使用jar命令首先将web应用打成一个jar.

jar cvf news.jar news

生成了一个jar,但是要改成 扩展名为.war

tomcat manager 的使用

打开conf/tomcat-users.xml ,然后添加 还要重启服务器.

<role rolename="admin-gui"/>

<role rolename="manager-gui"/>

<user username="tomcat" password="123" roles="admin-gui,manager-gui"/>

7、配置虚拟主机

1)在一个Tomcat服务器中可以放置多个网站,所谓配置虚拟主机,就是在Tomcat服务器中配置一个网站

2)如需在WEB服务器中配置一个网站,需要使用Host元素进行配置,

例如:<Host name=”site1” appBase=”c:\app”></Host>

(3)配置的虚拟主机(网站)要想被外部访问,必须在DNS服务器或windows系统中注册

详细方法:

a)进入到 C:\Windows\System32\drivers\etc , 

b) 打开 hosts文件,在末尾添加 :

192.168.1.100 (这是本机IP,之前一定要把localhost端口改为80,默认是8080    www.google.com

192.168.1.100     www.sina.com

c)在 server.xml中添加一个host元素.

  <Host name="www.google.com" appBase="d:\google">

<Context path="/mail" docBase="d:\google\mail"/>

<Context path="/news" docBase="d:\google\news"/>

  </Host>

  <Host name="www.sina.com" appBase="d:\sina">

<Context path="/mail" docBase="d:\sina\mail"/>

<Context path="/news" docBase="d:\sina\news"/>

  </Host>

d)重启服务器,然后访问:

http://www.google.com/mail/1.html

补充:使用Eclipse开发动态web程序

8、web资源访问流程

1、 查询windows,获取主机名对应ip

2、 查询DNS,获取主机名对应ip

3、 用查询的ip连上服务器

4、 发送http请求

5、 从请求信息中获取客户机想访问的主机名

6、 从请求信息中获取客户机想访问的web资源

7、 从请求信息中获得客户机想访问的web应用

8、 读取相应主机下的,web应用下的web资源

9、 用读取到的web资源数据,创建出一个http响应

10、服务器回送http响应

11、浏览器收到http响应,解析出资源数据显示

9、什么是HTTP协议

1)客户机连上web服务器后,若想得到web服务器中的某个web资源,需要遵守一定的通讯格式,HTTP协议用于定义客户端与web服务器的通讯格式

2)使用Telnet程序连上web服务器,并使用HTTP协议获取某个页面。快速了解HTTP协议的作用

3)安装IE浏览器插件HttpWatch,查看IE浏览器通过HTTP协议获取某个页面

10HTTP协议简介

1HTTPhypertext transfer protocol(超文本传输协议)的简写,它是TCP/IP协议的一个应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据的过程

2HTTP协议是学习JavaWeb开发的基石,不深入了解HTTP协议,就不能说掌握WEB开发,更无法管理和维护一些复杂的WEB站点

3HTTP协议版本:HTTP/1.0 HTTP/1.1

4基于TCP连接的传输协议

5默认端口是80

6基于请求-响应模式的协议

实验一:通过telnet 连接程序

a)打开dos命令行窗口 : telnet localhost 8080

b) 解决乱码 

ctrl + ]  

c) 乱码解决后,去访问tomcat首页.

去按回车,

GET / HTTP/1.1

Host:

GET / HTTP/1.0

Host:

后面连续按两次回车

出结果~~~

 实验二:IE安装Httpwatch插件

重启 ie, 然后点击 查看 -- 浏览器栏就可以找到安装的HTTP watch插件了.

11HTTP1.0HTTP1.1的区别

HTTP1.0协议中,客户端与web服务器建立连接后,只能获得一个web资源,没有状态的.

HTTP1.1协议,允许客户端与web服务器建立连接后,在一个连接上获取多个web资源。

使用telnet举例说明。

一个好多同学搞不清楚的问题:

一个web页面中,使用img标签引用了三幅图片,当客户端访问服务器中的这个web页面时,客户端总共会访问几次服务器,即向服务器发送了几次HTTP请求。 答案:4次请求

Web 开发优化 原则 尽量减少 web 请求 次数

12HTTP请求

客户机连接上服务器后,向服务器请求某个web资源,称之为客户端向服务器发送了一个http请求,一个完整的HTTP请求包括如下内容:一个请求行,若干请求头,以及实体内容

举例:

GET/books/java/html HTTP/1.1(请求行)

Accept:*/*

Accept-language:en-us

Connection:Keep-Alive

Host:localhost

Referer:http://localhost/links.app

User-Agent:Mozilla/4.0

Accept-Encoding:gzip,deflate

(一个空行)

Xxxxxxxxxx

请求行:用于描述客户端的请求方式、请求资源名称,以及使用HTTP协议的版本号

消息头:用于描述客户端请求哪台主机,以及客户端的一些环境信息等

13HTTP请求的细节——请求行

请求行中的GET称之为请求方式,请求方式有:POSTGETHEADOPTIONSDELETE

TRACEPUT

用的有:GETPOST

用户如果没有设置,默认情况下浏览器向服务器发送的都是get请求,例如浏览器直接输入地址访问,点链接访问等都是get,用户想把请求方式改为post,可通过更改表单的提交方式实现。

不管POSTGET,都用于向服务器请求某个WEB资源,这两种方式的区别主要表现在数据传递上

GET:可以在请求的URL地址后以?的形式带上交给服务器的数据。多个数据以&进行分隔

例如:GET/mail/1.html?name=abc&password=xyz HTTP/1.1

POST:可以在请求的实体中向服务器发送数据,传送的数据量无限制

14HTTP请求的细节——消息头

用于http请求中的常用头

Accepttext/htmlimage/*

Accept-CharSet:ISO8859-1

Accept-Encoding:gzip.compress

Accept-Language:en-uszh-cn

Host:www.it315.org:80

If—Modified-Since:Tue,11 Jul 2000 18:23:51 GMT

Referer:http://www.it315.org/index.jsp

User-Agent:Mozilla/4.0(compatiable;MSIE 5.5;Windows NT5.0)

Cookie

Connection:close/Keep-alive

Date:Tue,11 jul 2000 18:23:51 GMT

Accept:用于告诉服务器,客户机支持的数据类型

Accept-CharSet:用于告诉服务器,客户机采用的编码

Accept-Encoding:用于告诉服务器,客户机支持的数据压缩格式

Accept-Language:客户机的语言环境

Host:客户机通过这个头告诉服务器,想访问的主机名

If-Modified-Since:客户机通过这个头告诉服务器,资源的缓存时间

Referer:客户机通过这个头告诉服务器,它是从哪个资源来访问服务器的(防盗链)

15GETPOST的区别

请求行中的GET称之为请求方式,请求方式有:

POSTGETHEADOPTIONSDELETETRACEPUT

常用的有: GET、 POST

用户如没有设置,默认情况下浏览器向服务器发送的都是get请求,例如在浏览器直接输地址访问,点超链接访问等都是get,用户如想把请求方式改为post,可通过更改表单的提交方式实现。

不管POSTGET,都用于向服务器请求某个WEB资源,这两种方式的区别主要表现在数据传递上:

如请求方式为GET方式,则可以在请求的URL地址后以?的形式带上交给服务器的数据,多个数据之间以&进行分隔,例如:

GET /mail/1.html?name=abc&password=xyz HTTP/1.1

GET方式的特点:在URL地址后附带的参数是有限制的,其数据容量通常不能超过1K

如请求方式为POST方式,则可以在请求的实体内容中向服务器发送数据,Post方式的特点:传送的数据量无限制。

注意:

  a) get方式的请求 :  GET /day02/1.html HTTP/1.1

     post方式的请求:  POST /day02/1.html HTTP/1.1

  b)数据的提交方式也不同: get的请求数据会跟在url地址后面

get: http://localhost:8080/day02/1.html?username=lijianqun&age=19

post: http://localhost:8080/day02/1.html ,那么post方式的数据是放在了请求体中

  c) get方式木有 请求体而 post方式有.

  

   一般都采用 post方式的请求.  如果表单提交就采用 post. 

除了表单提交的时候可以设置成post方式外,其他的请求都是get方式.

   d) 实际开发过程中,如果给用户一个超链接而用户点击的时候,又希望用户可以带一些数据过来.

<a href="/day02/img.html?name=wangpan">小样儿,来点我啊</a>

 注意: GET方式的特点:在URL地址后附带的参数是有限制的,其数据容量通常不能超过1K

       post方式请求的数据由于跟在请求体中的所以请求的数据就没有大小限制了.

16、HTTP响应

17HTTP响应行中的状态行

1xx: 请求信息不完整. informational

2xx: success , 成功处理请求

3XX: redirection. 请求"重定向".

4xx: client error , 客户端出现错误,资源不存在

5xx: 服务器端内部错误. server error

200 , 302 ,304,404,500

 200 : 表示一切OK, 服务器完美的完成了整个响应.

 302 : 一般会与location响应头一起实现请求重定向,  (重点)

 304 :请求的资源未改变,通知客户端直接到本地拿缓存.

 404 :请求的资源不存在一般 表示 请求的路径有问题.  401 ,403

 500 : 请求的时候服务器端出现了错误.

18、HTTP常用响应头

HTTP请求中的常用响应头

Location: http://www.it315.org/index.jsp 

Server:apache tomcat

Content-Encoding: gzip 

Content-Length: 80 

Content-Language: zh-cn 

Content-Type: text/html; charset=GB2312 

Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT

Refresh: 1;url=http://www.it315.org

Content-Disposition: attachment; filename=aaa.zip

Expires: -1

Cache-Control: no-cache  

Pragma: no-cache   

Connection: close/Keep-Alive   

Date: Tue, 11 Jul 2000 18:23:51 GMT

响应头解析:

Location: http://www.it315.org/index.jsp   302  一起实现请求重定向,

Server:apache tomcat         告诉客户端,服务器的类型.

Content-Encoding: gzip       服务器给客户机回写数据时采用的压缩格式 gzip

Content-Length: 80           服务器给客户机回写数据的大小

Content-Language: zh-cn       服务器给客户机回写数据采用的是什么语言.

Content-Type: text/html; charset=GB2312   服务器给客户机回写数据采用的是什么字符集

Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT  重点 : If-Modified-Since , 304 一起实现缓存

Refresh: 1;url=http://www.it315.org    通知客户端 定时刷新到某个页面.

Content-Disposition: attachment; filename=aaa.zip 文件下载的,(重要)

19、HTTP响应头应用

1) 302 + Location 完成请求重定向 

// 302 + location 实现请求重定向

response.setStatus(302);

response.setHeader("location""/day02/1.html");

2) refresh 自动刷新 

response.setHeader("refresh""3;url=/day02/img.html");

            //response.setHeader("refresh", "3");

     //response.getOutputStream().write("shit, so fuck hot!".getBytes());

3) gzip压缩 

a) 用程序代码实现压缩.

b) 通过配置tomcat 服务器来实现压缩.

server.xml中的connector中配置

compressableMimeType="text/html,text/xml,text/plain" compression="on"

压缩前:   00:00:00.0001.16311599GET200text/html;charset=ISO-8859-1http://localhost:8080/

压缩后: 00:00:00.0001.1502296GET200text/html;charset=ISO-8859-1http://localhost:8080/

4) Tomcat默认缓存策略 If-Modified-Since Last-Modified 结合304 实现 

http://localhost:8080/tomcat.css

第一次访问: Last-Modified:     Sun, 05 May 2013 00:55:08 GMT

第二次访问: If-Modified-Since: Sun, 05 May 2013 00:55:08 GMT

5) 禁用缓存

实现客户端禁用缓存.

Expires: -1 

Cache-Control: no-cache  

Pragma: no-cache   

20、HTTP实用头字段

1HTTP请求头字段

Range头指示服务器只传输一部分Web资源,这个头可以实现断点续传功能,Range字段可以通过三种方式设置传输的字节范围

Rangebytes=1000-2000

传输范围从10002000字节

Rangebyte=1000-

传输Web资源从1000个字节以后的所有内容

Rangebytes=1000

传输最后1000个字节

2HTTP响应消息头字段

Accept-Ranges:这个字段说明Web服务器是否支持Range支持,则返回bytes,,如果不支持,则返回Accept-Rangesnone

Content-Range:指定了返回Web资源的字节范围,这个字段的格式是:

例子:Cotent-Range1000-3000/5000

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值