java程序员第八课 tomcat与web程序结构与Http协议

day08

1、上节内容回顾
* jdk 5.0新特性

2、WEB内容的概述
* web:网页,javaweb是使用java开发网页(动态网页),
* 使用什么技术开发动态网页:sun公司提供了两种技术 jsp servlet

* web(网站)的结构:
    - c s: client server
        * 常见的应用 qq 迅雷 :需要安装在本地硬盘

        * 优点:把一些程序放在本地运行,可以减轻服务器的压力
        * 缺点:服务器如果更新了,客户端软件跟着更新

    - b s: broswer server
        * 常见的应用 网银 支付宝 

        * 优点:如果服务器更新了,浏览器直接访问
        * 缺点:服务器的压力大
            ** 提供一种技术 ajax,使用js,js代码也是放在客户端浏览器运行,也可以减轻服务器的一些压力

***  要学习是使用java开发b s结构的动态网站

* 静态网站:使用 html css js

* 动态网站:
    - sun公司提供: jsp servlet
    - php: phpcms
    - asp
    ........

*** 如果单纯的开发网站,java没有任何的优势

* java适合做什么?
    - 适合实现一些大型的程序(企业级的应用) oa  erp  crm  

3、web服务器的通信和常见的web服务器
* 比如浏览器 http://www.baidu.com 可以显示出来百度的页面

* 过程:使用ip+端口号,进行访问

* 默认的端口号:80  - 不需要写(可以省略)

* 在你的浏览器里面,输入一个地址,可以访问我的本地文件夹里面的一个文件
* 使用socket网络编程 

* 服务器:
    1、硬件:一台电脑
    2、软件:在电脑安装了一个服务器软件,这个时候,这个电脑就可以作为服务器了。

* 常见的web服务器:
    1、tomcat服务器:
        - apache组织提供的,免费开源的服务器
    2、weblogic服务器
        - bea公司提供的,收费的
    3、websphere服务器
        - ibm提供的,收费的

4、tomcat服务器的安装(*
* 安装tomcat之前,必须要安装jdk,同时配置JAVA_HOME环境变量
- JAVA_HOME: C:\Program Files\Java\jdk1.7.0_72
** 第一种使用安装文件 .exe文件

** 第二种,使用压缩文件(一般使用这种方式进行安装)
    **** 解压的时候,解压到的目录中不能带中文和空格

** 启动服务器:
    - 找到tomcat文件夹下的一个目录 bin,有一个文件.bat,文件名称 startup.bat
    - 点击之后,出现一个提示框,当看到里面没有exception,在下面有ms,这个时候表示tomcat启动成功了。

    - 测试服务器是否启动成功
        - tomcat的默认端口号是 8080
        ** 直接在地址栏输入 http://ip:8080 回车,如果出现一个猫的页面,表示启动成功了
            *** 因为现在访问的是本地,ip可以使用 localhost 或者 127.0.0.1
            *** http://192.168.33.26:8080/

        ** webapps文件里面 创建一个文件夹 aa ,在aa里面创建html页面,如果页面可以正常访问,tomcat启动成功
            *** http://192.168.33.26:8080/aa/1.html
    - 关闭服务器
        ** 直接把启动窗口关闭
        ** 在bin目录下 shutdown.bat,点击这个文件,也可以关闭

5、tomcat服务器常见的问题(**
(1)安装tomcat之前,必须要安装jdk,同时要配置JAVA_HOME环境变量
* 提示出错:Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
At least one of these environment variable is needed to run this program

(2)tomcat的端口冲突
    * 系统中可能启动了多个tomcat,这个时候出现端口冲突的问题
    ** 两种解决方式:
        1、找到tomcat端口是8080的进程,结束掉
            * 在cmd窗口下,使用doc命令 netstat -ano 
            * 列出当前所有启动的端口
            * 找到8080端口的PID
            * 启动任务管理器,找到pi对应的值,结束掉
        2、修改要启动的tomcat端口
            * 找到tomcat目录下的conf目录,找到文件server.xml
            * <Connector port="8088" protocol="HTTP/1.1"
                   connectionTimeout="20000"
                   redirectPort="8443" />
            * 重新启动服务器,才能生效

        ** 如果端口修改为80,不需要写端口号,直接通过ip就可以进行访问了

6、tomcat的目录结构(**
* bin(*): 里面放启动和关闭tomcat的文件
* conf(**):tomcat一些相关的配置文件 server.xml web.xml
* lib: 放入的是tomcat运行需要的jar包,tomcat支持功能的jar
* logs:放入一些日志信息
* temp:临时文件(缓存文件)
* webapps(*):放入开发项目,直接通过ip+端口号+文件名+文件就可以访问
* work:jsp编译成servlet的class文件的地方

7、动态网站的目录结构(*
* 静态网站:html css js 目录结构 aa/1.html 把他放入到webapps下就可以直接访问
* 动态网站的目录结构
website
- html,css ,js,jsp
-(必须要有的部分)
- WEB-INF
– web.xml

            --(可选部分,要么不写,如果写必须按照下面的名称命名)
            ** classes: java编译成class文件存放目录
            ** lib:放入一些额外的jar包
    ** 把webstie放入到webapps下面的

8、myeclipse中集成tomcat(*
* 为什么要集成:提高开发效果
* 集成过程
* 发布过程
* 会把项目发布到tomcat的webapps目录下
* 并不是把所有的内容都放进去,至是放入webroot目录下的内容
* webroot目录没有了,webroot目录变成了,部署到tomcat的项目名称了

9、tomcat的Manager管理(了解)
* 客户来使用的功能

10、tomcat中一些细节的问题(**
*创建web项目时候,最上面有 project name:这个名称是放到工作空间中的名称
* 最下面有一个content url,有一个名称,这个名称是 放到tomcat下面的项目的名称
** 如果想要访问这个项目,使用下面这个名称 (放到tomcat下面的项目的名称)

* 可以在myeclipse中修改部署到tomcat的项目名称
* 右键 属性 -- > 搜索 web ,进行修改

11、tomcat中虚拟路径的配置(**
* 把项目按照目录结构 放入到webapps下面就可以访问

通过配置虚拟路径的方式
* 第一种配置:使用Context来配置(*****)
    ** 找到tomcat的配置文件 在conf下面server.xml
    ** 在</Host>之前配置
    ** <Context docBase="c:\bb" path="/demo"></Context>
        - docBase: 本地的文件夹路径
        - path:通过什么地址访问 http://127.0.0.1/demo/2.html
    ** 找到tomcat配置文件中,在conf下面web.xml
    ** 找到名称是listings 把里面值设置成true: 列出文件夹下面的所有文件(通过列表来展现)

*第二种配置:(****)
    ** 到conf下面的server.xml中 [enginename]/[hostname]/ directory.
    ** [enginename]  <Engine name="Catalina"
    ** [hostname]     <Host name="localhost"
    ** 在这个路径下面,创建一个xml文件 haha.xml
        ** haha.xml: 文件内容,<Context docBase="c:\haha"></Context>

    ** 访问:直接使用xml的文件名进行访问 http://127.0.0.1/haha

12、访问网站的全过程分析(了解,作为扩展)
** 画图分析过程

13、tomcat虚拟主机(了解,扩展)
* hosts文件路径 C:\Windows\System32\drivers\etc

* 如何仿百度的效果
    1、下载百度的页面
    2、配置hosts文件  127.0.0.1  www.baidu.com
    3、在conf目录下面的server.xml进行配置,
        - <Host name="www.baidu.com"  appBase="I:\baidu"
                unpackWARs="true" autoDeploy="true">

                <Context docBase="\website" path="/"></Context>

              </Host>
           ** name:改成想要访问的域名地址
           ** appBase:页面所在的本地路径
           ** 配置 Context docBase="\website" path="/"
           ** 修改tomcat的端口号 80
           ** 设置首页面 在tomcat里面conf下面的web.xml中
            - 在下面的  <welcome-file-list>里面 增加 <welcome-file>baidu.htm</welcome-file>
           **** 最终可以通过www.baidu.com来访问本地百度的页面
** 可以配置多个虚拟主机
** 但是必须要有一个默认的虚拟主机(直接通过ip的访问的)
** 不是默认的虚拟主机不能直接通过ip访问的

14、http协议快速入门(**)
* 什么是http协议
** 协议:双方可以达成的共同的目标
** http:网络中发送请求和接受请求数据格式
- 请求和响应要遵循一定的格式,才能完成网络的操作

*http协议的特点:
    1、默认的端口 80
    2、基于tcp的传输协议
    3、请求和响应是成对出现(先有请求后有响应)

* 使用doc命令 telnet来模拟http协议的操作

** 首先打开cmd窗口
** 直接输入命令 telnet localhost 端口号 80
** 会有中文乱码问题,解决 ctrl+],直接点击回车
** 
请求:
GET /aa/1.html HTTP/1.1
host:localhost


服务器响应:
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Accept-Ranges: bytes
ETag: W/"21-1426298016838"
Last-Modified: Sat, 14 Mar 2015 01:53:36 GMT
Content-Type: text/html
Content-Length: 21
Date: Sat, 14 Mar 2015 07:07:46 GMT

<h1>hello world!</h1>

* 推荐多个工具
** httpwatch:这个工具只能在ie上使用,其他浏览器目前是不支持的
    - 安装完成之后,在ie的工具里面自带添加进去
    - 如果找不到,可以通过快捷键 shift+f2可以打开

** ie自带工具
    - 点击 f12 点击网络,开始捕获 ,可以看到当前请求和响应的信息
** 火狐自带工具
    - 需要安装一个firebug工具,也可以看到当前请求和响应的信息
** 谷歌自带工具
    - 点击f12,可以看到当前请求和响应的信息

15、http请求操作(*)
* 实现一个表单使用get和post提交

** 请求的内容
-      
GET /day082/request/form01.html HTTP/1.1
Accept: text/html,image/*    
Accept-Charset: ISO-8859-1
Accept-Encoding: gzip
Accept-Language:zh-cn 
Host: www.itcast.com:80
If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT
Referer: http://www.itcast.com/index.jsp
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)
Connection: close/Keep-Alive   
Date: Tue, 11 Jul 2000 18:23:51 GMT

** http请求的组成(***)
    1、http请求行 :提交方式 访问的地址 http的版本
    2、http请求头:使用key-value形式,一个key可以有一个value,也可以有多个value
    3、http请求体:通过post提交的数据   比如: username=zhangsan&password=aaaaaaaa

** http重要的请求头
    1、Referer:可以防盗链(得到当前访问的路径)
        * 演示防盗链的效果 - 使用 servlet来实现

        ** 所有的内容,只允许my文件夹下面的html才可以访问
        ** 如果不是从my文件夹下面访问的html文件,都不可以访问

    2、User-Agent: 可以获取当前使用的浏览器
        - ie浏览器: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; MAAU)
        - 火狐浏览器:Mozilla/5.0 (Windows NT 6.1; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0

    3、If-Modified-Since: 经常和响应里面的Last-Modified一起使用,用做本地缓存

16、HTTP/1.1和HTTP/1.0区别(面试题目)

GET /aa/1.html HTTP/1.1
host:localhost

GET /aa/1.html HTTP/1.0
host:localhost

* HTTP/1.1请求之后不会马上断开
* HTTP/1.0请求之后回马上断开

17、http的响应(**)
* HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Accept-Ranges: bytes
ETag: W/”625-1426321060991”
Last-Modified: Sat, 14 Mar 2015 08:17:40 GMT
Content-Type: text/html
Content-Length: 625
Date: Sat, 14 Mar 2015 08:18:15 GMT

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
.................

* 有三部分组成
    1、响应行
        - http版本 状态码 状态码描述
        - 状态码:(****)
        ** 常用的状态码
        1、200 表示请求成功 
        2、302:重定向
        3、304:查询本地缓存

        4、404:资源找不到
        5、500:服务器内部(代码错误)

    2、响应头
        - 采用key-value形式显示,一个key可以有一个value,也可以有多个value
        ** Refersh
            - 使用这个头可以实现页面的定时跳转(刷新)

        ** Location
            - 使用这个头可以和302完成重定向

        ** Last-Modified和请求里面 If-Modified-Since
            - 在请求头信息里面有一个If-Modified-Since,查找本地缓存

        ** 禁用缓存的头(如果想要所有浏览器都能禁用缓存,这三个头都要设置)
        Expires: -1
        Cache-Control: no-cache  
        Pragma: no-cache   

        ** (了解) Content-Disposition:
            ** 可以使用这个头实现文件的下载操作

    3、响应体
        ** 显示在页面上的内容
            - 响应头和响应体直接有空格(格式)

    ** 如何处理缓存问题(开发心得)
        1、清除ie的缓存文件
        2、修改ip地址(可以使用localhost或者127。0.0.1)
        3、访问一个错误的页面,然后再访问正确的页面
        4、在地址后面加一个随机数 比如 http://127.0.0.1/day08/my/my.html?id=1

        5、把项目移除,然后再部署
        6、到tomcat目录下面 I:\tomcat\apache-tomcat-7.0.53\work
         把work里面的所有内容都删除

    ** URL和URI区别(扩展)
        ** URI范围大于URL
        ** URL:网络地址 比如:http://www.sina.com  http://www.itcast.com.cn
        **URI地址包含网络地址,同时包含类似 zhangsan@163.com  thunder://1111  ed2k://qqqqq
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值