01web概述




1、web概述
静态web资源:内容是静态的,不一样的人在不一样的时间来访问时都是相同的内容。HTML、CSS、JS
动态web资源:内容是由程序生成的,不一样的人在不一样的时间访问的内容极可能是不一样的。
常见的动态web资源开发技术:
ASP、PHP、JSP/Servlet
C/S B/S之争:
云、移动互联网、html五、物联网
web服务器软件
一、WebLogic是BEA公司的产品,是目前应用最普遍的Web服务器,支持J2EE规范,并且不断的完善以适应新的开发要求,启动界面如图 商用付费、企业经常使用、持续更新
二、 另外一个经常使用的Web服务器是IBM公司的WebSphere,支持J2EE规范,启动界面如图
三、在小型的应用系统或者有特殊须要的系统中,可使用一个免费的Web服务器:Tomcat,该服务器支持所有JSP以及
  Servlet规范,启动界面如图
2、TOMCAT服务器的安装与配置
1.常见服务器:WebLogic(BEA)、webSphere(IBM)、Tomcat(Apache)
2.Tomcat 的下载与安装
下载地址:http://tomcat.apache.org/
安装目录不能包含中文和空格
JAVA_HOME环境变量指定Tomcat运行时所要用的jdk所在的位置,注意,配到目录就好了,不用指定到bin
端口占用问题:netstat -ano命令查看端口占用信息
Catalina_Home环境变量:startup.bat启动哪一个tomcat由此环境变量指定,若是不配置则启动当前tomcat,推荐不要配置此环境变量
启动:双击bin目录下的startup.bat
输入 http://localhost:8080/验证是否启动成功
端口占用问题:
netstat -ano命令:查看占用端口的进程pid,在用任务管理器关闭

1.tomcat的安装配置
tomcat5要求jdk1.4以上
tomcat6要求jdk1.5以上
tomcat7要求jdk1.6以上
JAVA_HOME环境变量: 指定tomcat启动时使用的jdk所在的位置
Catalina_Home环境变量:指定tomcat在启动时启动哪一个tomcat,通常不推荐配置
localhost:127.0.0.1 浏览器默认端口:80
修改tomcat/conf/server.xml 修改默认端口为80
3.Tomcat的目录结构
bin--存放tomcat启动关闭所用的批处理文件
conf--tomcat的配置文件,最终要的是server.xml
*实验:修改servlet.xml,更改tomcat运行所在的端口号,从8080改成80
lib--tomcat运行所需jar包
logs--tomcat运行时产生的日志文件
temp--tomcat运行时使用的临时目录,不须要咱们关注
webapps--web应用所应存放的目录
work--tomcat工做目录,后面学jsp用到
4.虚拟主机(一个真实主机能够运行多个网站,对于浏览器来讲访问这些网站感受起来就像这些网站都运行在本身的独立主机中同样,因此,咱们能够说这里的每个网站都运行在一个虚拟主机上,一个网站就是一个虚拟主机)
虚拟主机: 一个tomcat能够认为是一台真实主机.在一台真实主机中能够配置多个站点,这些站点在访问者看来访问他们就像在访问各自独立的主机同样,因此咱们能够认为这些站点都运行在tomcat这台真实主机当中的各自的虚拟主机当中.一个网站就能够认为是一个虚拟主机。
web应用: 一个虚拟主机中会有不少的web资源,可是web资源不能直接交给虚拟主机管理,须要按照必定方式 组织成web应用虚拟主机 才能使用.通常来讲咱们会按照功能将某一功能相关的全部的web资源组织成一个web应用后再交给虚拟主机。
4.1 为 虚拟主机 配置web应用:
一、在server.xml中<Engine>标签下配置<Host>,其中name属性指定虚拟主机名,appBase指定虚拟主机所在的目录
<Context path="" docBase="F:\news"><!-- path是虚拟路径,docBase是真实路径-->
引出一个概念:web应用的虚拟目录映射(在下面5.3)
二、只在servlet.xml中配置Hosts,还不能是其余人经过虚拟主机名访问网站,还须要在DNS服务器上注册一把,咱们可使用hosts文件模拟这个过程
三、默认虚拟主机:在配置多个虚拟主机的状况下,若是浏览器使用ip地址直接访问网站时,该使用哪一个虚拟主机响应呢?能够在<Engine>标签上设置defaultHost来指定
4.2 配置 虚拟主机
        一种:在conf/server.xml中<Engin>标签下配置<Host>标签就能够为tomcat增长一台虚拟主机了 一、name -- 指定虚拟主机的名称,浏览器经过这个名称访问虚拟主机 二、appBase -- 虚拟主机管理的目录,放置在这个目录下的web应用当前虚拟主机能够自动加载
*因为浏览器访问地址时,须要将地址翻译成对应的ip才能找到服务器,这其中翻译的过程是由DNS服务器来实现的.咱们在作实验的时候没有办法去修改dns服务器,此时可使用hosts文件模拟dns的功能,从而完成实验. *缺省虚拟主机:若是来访者是经过ip来访问,这个时候服务器没法辨别当前要访问的是哪台虚拟主机中的资源,此时访问缺省虚拟主机.缺省虚拟主机能够在server.xml中engin标签上经过defaultHost属性进行配置.
5.web应用(web资源不能直接交给虚拟主机,须要按照功能组织用目录成一个web应用再交给虚拟主机管理)
配置虚拟主机的例子: =======================================================
配置一台虚拟主机,修改hosts文件模拟DNS的做用使其能够访问,用三种方式为其配置三个web应用,并配置其中一个web应用为缺省web应用, 并配置其主页。
十一、 baidu
|--game(ROOT)
|--1.html
|--WEB-INF
 |-- classes文件夹
           |-- lib文件夹
         |-- web.xml  
<?xml version="1.0" encoding="UTF-8"?>
     <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
<welcome-file-list>
  <welcome-file>1.html</welcome-file>
</welcome-file-list>
    </web-app>
2二、 配置tomcat/conf/server.xml:<Engin>标签下配置<Host>标签
       <Host name="www.baidu1.com" appBase="F:\webexample\baidu" />
   修改C:\Windows\System32\drivers\etc下的hosts文件:让本地能够访问。
       添加: 127.0.0.1 www.baidu1.com
此时 http://www.baidu1.com/能够访问 ,此时只能本地机器访问,其余机器访问的时候,须要在hosts文件中添加 : 本地机器IP地址 www.baidu1.com

4四、若是访问 http://127.0.0.1/时,仍然是:访问tomcat。
       缘由:tomcat/conf/下的server.xml文件中有一个缺省虚拟主机:若是来访者是经过ip来访问,这个时候服务器没法辨别当前要访问的是哪台虚拟主机中的资源,此时访问缺省虚拟主机。
       但:缺省虚拟主机能够在server.xml中engin标签上经过defaultHost属性进行配置.
            <Engine name="Catalina" defaultHost="localhost">
=======================================================================
 
5.1 web应用的目录结构
开发web应用时,不一样类型的文件有严格的存放规则,不然不只可能会使web应用没法访问,还会致使web服务器启动报错。
web应用目录
|
-html、css、js、jsp
|
-WEB-INF
|
-classes
|
-lib
|
-web.xml
web应用目录结构: 若是目录结构不合法可能会出现各类奇葩的问题.
news
|
|--静态资源和JSP文件均可以直接放置在web应用的目录下,直接放在web应用下的内容,浏览器能够直接访问到
|
|--WEB-INF -- 能够没有,可是最好有,若是有则必定要保证他的目录结构是完整的.放置在WEB-INF目录下的全部资源浏览器没有办法直接进行访问
|--classes -- 动态web资源运行时的class文件要放在这个目录下
|--lib -- 动态web资源运行时所依赖的jar包要放在这个目录下
|--web.xml -- 整个web应用的配置文件,配置主页/Servlet的映射/过滤器监听器的配置都须要依赖这个文件进行

5.2 web.xml文件的做用:
某个web资源配置为web应用首页
将servlet程序映射到某个url地址上
为web应用配置监听器
为web应用配置过滤器
但凡涉及到对web资源进行配置,都须要经过web.xml文件
*实验:配置一个web应用的主页
5.3 web应用的虚拟目录映射
(1)在server.xml的<Host>标签下配置<Context path="虚拟路径" docBase="真实路径">若是path=""则这个web应用就被配置为了这个虚拟主机的默认web应用
下面的不太好,每次改过都要重启服务器,不推荐(1):
*web应用的虚拟路径映射 -- 就是为web应用的真实存在的路径配置一个浏览器访问的虚拟路径
<Context path="/news" docBase="E:\news" />
*配置缺省web应用 -- 默认的web应用,当不写web应用名时就访问这个web应用
<Context path="" docBase="E:\news" />
(2)在tomcat/conf/引擎名/虚拟主机名 之下创建一个.xml文件,其中文件名用来指定虚拟路径,若是是多级的用#代替/表示,文件中配置<Context docBase="真实目录">,若是文件名起为ROOT.xml则此web应用为默认web应用
(21)E:\tomcat8\conf\Catalina\localhost下 新建news2.xml
<?xml version="1.0" encoding="UTF-8"?>
<Context docBase="E:\news"/>
好处:不用重启tomcat; 缺点:文件名不能包含符号“/”

(22)网址 http://localhost:8080/news3/xxx/new1.html有“/”,文件名中不能有“/”,用“#”。  
文件名为代替。 news3#xxx.xml
(23) *配置 缺省web应用 -- 默认的web应用,当不写web应用名时就访问这个web应用
文件名为ROOT.xml(全大写)
每次改过都不用重启服务器,推荐。
(3)直接将web应用放置到虚拟主机管理的目录下,虚拟主机就能够找到这个web应用,从而管理这个web应用
放入 E:\tomcat8\webapps
只要将web应用文件夹的名称改成ROOT,这个web应用就是缺省web应用
~若是三处都配置默认web应用则server.xml > config/.../xx.xml > webapps

5.4杂项:开发一个网站,将开发好的web应用发给别人,须要网络传输,则:
(1)打web应用的war包:java提供的打包工具
方式一:jar -cvf news.war * 方式二:直接用压缩工具压缩为zip包,该后缀为.war
 
例如上面baidu的例子:
 
将ROOT.war拷贝到  F:\tomcat8\webapps中,几秒后出现一个ROOT文件夹,里面有:
(2) 疑问之处:1)、 本来的ROOT中未配置主页,为何会打开Tomcat主页呢?缘由是在conf文件夹下的其父类web.xml文件中有配置,其继承了父类。
通用context和通用web.xml的配置解释上述疑问:全部的<Context>都继承子conf/context.xml,全部的web.xml都继承自conf/web.xml
(3)配context元素的reloadable元素,让tomcat自动加载更新后的web应用,当java程序修改后不用重启,服务器自动重新加载。
reloadable让tomcat自动加载更新后的web应用,当java程序修改后不用重启,服务器自动重新加载,开发时设为true方便开发,发布时设为false,提升性能
l查看tomcat关于context元素的文档
(4)Tomcat管理平台,能够在conf/tomcat-users.xml下配置用户名密码及权限

6.做业
***************************************************************************************************************************************************************************************************************************************下
配置一台虚拟主机,修改hosts文件模拟DNS的做用使其能够访问,用三种方式为其配置三个web应用,并配置其中一个web应用为缺省web应用, 并配置其主页。
6.一、 google
|--game(ROOT)
|--1.html
|--WEB-INF
 |-- classes文件夹
           |-- lib文件夹
         |-- web.xml
  在conf/server.xml中<Engin>标签下配置<Host>标签: <Host name="www.google.com" appBase="F:\webexample\google" />
6.二、配置hosts文件:
6.三、配置三种web应用:
6.3.一、与google文件夹同目录文件夹:game,其中有一个1.html文件。
(1) 配置tomcat/conf/server.xml:<Engin>标签下配置<Host>标签以下:
<Host name="www.google.com" appBase="F:\webexample\google" > <Context path="game" docBase="F:\webexample\game"/> </Host>
  而后 重启Tomcat服务器,在浏览器中启动: http://www.google.com/game/1.html
(2) 将game改成缺省web应用:将 <Engin>标签下配置<Host>标签改成以下:
<Host name="www.google.com" appBase="F:\webexample\google" > <Context path="" docBase="F:\webexample\game"/> </Host>
而后重启Tomcat服务器 在浏览器中启动: http://www.google.com/1.html
                
  当同时配置三种缺省web应用6.3.3(2)和6.3.2(2)、6.3.1(2)的时候, 6.3.1(2) 方法起到做用。
6.3.二、与google文件夹同目录文件夹:mail,其中有一个1.html文件。
    <?xml version="1.0" encoding="UTF-8"?> <Context docBase="F:\webexample\mail"/>
无需重启Tomcat服务器,在浏览器中启动: http://www.google.com/mail/1.html
(2) 将mail改成缺省web应用:将F:\tomcat8\conf\Catalina\www.google.com下的mail.xml文件重命名为ROOT.xml, 而后在浏览器中启动: http://www.google.com/1.html
当同时配置两种缺省web应用6.3.3(2)和6.3.2(2)的时候, 6.3.2(2) 方法起到做用。
6.3.三、与google文件夹同目录文件夹:ftp,其中有一个1.html文件。
将ftp文件夹拷贝到F:\webexample\google文件夹下
(1)无需重启Tomcat服务器,在浏览器中启动: http://www.google.com/ftp/1.html
  (2)若想变为 缺省web应用,只需将文件名ftp改成ROOT便可,而后在浏览器中启动: http://www.google.com/1.html

6.3.四、若想把6.3.3(2)中文件变为主页,在ROOT文件夹下添加以下文件夹和文件:
google
|--ROOT
|--1.html
|--WEB-INF
 |-- classes文件夹
           |-- lib文件夹
         |-- web.xml
web.xml 的内容为:
        <?xml version="1.0" encoding="UTF-8"?>
        <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"           version="3.1">
          <welcome-file-list>
          <welcome-file>1.html</welcome-file>
            </welcome-file-list>
          </web-app>
而后在浏览器中启动:http://www.google.com/
****************************************************************************************************************************************************************************************************************************************上
  Tip Tomcat 体系架构
 
 
===========================================================================================================================================
===========================================================================================================================================
2、HTTP协议

OSI网络七层协议:应用层(HTTP、FTP、SMTP、POP三、TELNET)-》表示层-》会话层-》传输层(TCP、UDP,简称为TCP/IP协议)-》网络层(IP,标识)-》数据链路层-》物理层css

 

1. HTTP协议概述
HTTP协议用于定义客户端与web服务器通迅的格式。
HTTP是hypertext transfer protocol(超文本传输协议)的简写,它是TCP/IP协议的一个 应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据的过程。
HTTP使用 请求-响应的方式进行传输, 一个请求对应一个响应,而且请求只能是由 客户端发起的。
HTTP协议的版本:HTTP/1.0、HTTP/1.1,其中1.0一次请求发起一次链接,响应事后链接自动断开。1.1里每次请求响应后链接将保持一段时间,这段时间内能够再执行请求响应。
HTTP几句话: 功能:规定客户端和服务器如何进行交互
基于TCP/IP协议的应用层协议
HTTP协议基于请求响应模型
一次请求对应一次响应
请求只能由客户端发出,服务器只能被动的等待请求作出响应
telnet/httpwatche
十一、HTTP使用请求-响应的方式进行传输,一个请求对应一个响应,而且请求只能是由客户端发起的。
2二、 利用Telnet演示请求与响应的过程(只是演示,不使用的,推荐用33)
  cmd运行--》输入telnet localhost 80,回车--》按键“ctrl+]”出现:
--》再回车( 时间过长,会提示:遗失对主机的链接 ),出现 (停留 时间过长,会提示:遗失对主机的链接
  (1)、在F:\tomcat8\webapps配置一个web应用:game文件夹,下面有个1.html文件;
(2)、重复 Telnet的过程,输入:下面图中前两行,回车出现以下图所示内容,最后一行是1.html文件中的内容;中间是HTTP响应消息
3三、安装IE浏览器插件HttpWatch,查看IE浏览器经过HTTP协议获取某个页面。
IE中,菜单栏--》查看--》浏览器栏--》HttpWatch Professional,出现:
单击Record,启动记录。在IE中地址栏输入 http://localhost/game/1.html,回车出现:

4四、 HTTP协议的版本:HTTP/1.0、HTTP/1.1,两者区别:
(1)在HTTP1.0协议中,客户端与web服务器创建链接后,只能得到 一个web资源。
(2)HTTP1.1协议,容许客户端与web服务器创建链接后,在一个链接上获取 多个web资源。
(3)利用telnet演示HTTP1.0和HTT1.1的区别
  后面有一个闪烁的“_”,即等待符,能够继续输入:GET......
(4)一个好多同窗搞不清楚的问题: 一个web页面中,使用img标签引用了三幅图片,当客户端访问服务器中的这个web页面时,客户端总共会访问几回服务器,即向服务器发送了几回HTTP请求。
 
 
2. HTTP请求
2.1请求行
GET /news/1.html HTTP/1.1
请求方式 请求的资源名 所遵循的协议
七种请求方式: POST、GET、HEAD、OPTIONS、DELETE、TRACE、PUT
(1)经常使用的有: GET、 POST
  (2) 用户如没有设置,默认状况下浏览器向服务器发送的都是get请求,例如在浏览器直接输地址访问,点超连接访问等都是get,用户如想把请求方式改成post,可经过更改表单的提交方式实现。
2.1.1请求方式:GET、POST:
GET请求方式和POST请求区别在于 请求参数在传递的过程当中方式不一样。
若是是GET提交, 请求参数将会附加在请求的URL后面做为 请求地址的一部分带到服务器端,能够传输的数据大小有限制通常 不容许超过1K。
若是是POST提交,请求参数 将会在http请求的实体内容中进行传输,这种方式传输的数据没有大小限制。
利用form表单提交数据时,form代表明确的声明要用POST提交,这时请求参数就是POST提交。 除此之外全部方式的请求参数都是GET提交。

 
 
即:其中GET方式在请求资源的URL后跟“?参数名=参数值&参数名=。。。”方式传递参数,传输的数据内容最大为1K。
其中POST方式在请求实体中传输数据。
除了用Form表单明确用method指定用post方式提交数据之外,其余的方式都是GET提交方式

2.2请求头
Accept: text/html,image/* 客户端能够接受的数据类型 */* 全部类型
Accept-Charset: ISO-8859-1 客户端接受数据须要使用的字符集编码
Accept-Encoding: gzip,compress 客户端能够接受的数据压缩格式
Accept-Language: en-us,zh-cn 可接受的语言环境
Host: www.it315.org:80 想要访问的虚拟主机名 localhost
If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT 这是和缓存相关的一个头,带着缓存资源的最后获取时间
Referer: http://www.it315.org/index.jsp 这个头表示当前的请求来自哪一个连接,这个头和防盗链的功能相关
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0) 客户端的一些基本信息
Cookie 会在后面讲会话技术的时候单讲
Connection: close/Keep-Alive 指定是否继续保持链接
Date: Tue, 11 Jul 2000 18:23:51 GMT 当前时间
2.3实体内容
3. HTTP响应
状态码 含义
100~199 表示成功接收请求,要求客户端继续提交下一次请求才能完成整个处理过程
200~299 表示成功接收请求并已完成整个处理过程,经常使用200
300~399 为完成请求,客户需进一步细化请求。例如,请求的资源已经移动一个新地址,经常使用30二、307和304
400~499 客户端的请求有错误,经常使用404
500~599 服务器端出现错误,经常使用 500
3.1状态行
HTTP/1.1 200 OK
格式: HTTP版本号 状态码 缘由叙述<CRLF>
状态码:用来表示本次请求的处理结果的代码。
200:请求处理成功
302:请求重定向——在其余地址发现了请求data。
30四、307:服务器通知浏览器使用缓存
304:发送附带条件的请求时,条件不知足时返回,与重定向无关。(GET)
307:临时重定向,与302相似,仅强制使用POST方法。
404:资源未找到——服务器没法找到对应的资源。
500:服务器端错误(内部)

3.2若干响应头
Location: http://www.it315.org/index.jsp 配合302实现请求重定向
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 通知浏览器进行定时刷新,此值能够是一个数字指定多长时间之后刷新当前页面,这个数字以后也能够接一个分号后跟一个URL地址指定多长时间后刷新到哪一个URL
Content-Disposition: attachment;filename=aaa.zip 与下载相关的头
Transfer-Encoding: chunked 传输类型,若是是此值是一个chunked说明当前的数据是一块一块传输的
Set-Cookie:SS=Q0=5Lb_nQ; path=/search 和cookie相关的头,后面课程单讲
ETag: W/"83794-1208174400000" 和缓存机制相关的头
Expires: -1 通知浏览器是否缓存当前资源 ,若是这个头的值是一个以毫秒为单位值就是通知浏览器缓存资源到指定的时间点,若是值是0或-1则是通知浏览器禁止缓存
Cache-Control: no-cache 通知浏览器是否缓存资源:缓存相关的头,若是为no-cache则通知浏览器不缓存;
Pragma: no-cache 通知浏览器是否缓存资源:缓存相关的头,若是为no-cache则不缓存
以上三个头都是用来控制缓存的,是由于历史缘由形成的,不一样的浏览器认识不一样的头,咱们一般三个一块儿使用保证通用性。
Connection: close/Keep-Alive 是否保持链接
Date: Tue, 11 Jul 2000 18:23:51 GMT 当前时间
3.3实体内容
*额外做业:重写学生信息管理系统的DAO,用Dom4j去实现
相关文章
相关标签/搜索