黑马第六天之web开发入门和HTTP协议

我们是服务器端编程人员。

 

浏览器向服务器发送请求,按照HTTP协议,流行使用1.1版本

 

掌握HTTP协议的响应消息头的意义和作用,并编写程序。

 

一、Web开发入门
1、web资源(服务器上的)的分类:
静态资源:html  css  js 图片等等
动态资源:servlet/JSP asp php等等
2、我们是服务器端程序的编写人员
3、常见WEB服务器
 概念:JavaEE,他是13种技术的总称。包括:JSP/Servlet、JDBC、JNDI、JPA、JTA、EJB等
  是规范,规范就是由接口或抽象组成的,由SUN公司指定(JCP.org)
  
 weblogic:他是JavaEE服务器
 WebSphereAS:Application Server 他是JavaEE服务器
 Tomcat:只支持JSP/Servlet规范。
 
 容器:实现了什么技术的服务器就叫做什么容器。
 http://www.apache.org
 
 1、安装TOmcat:推荐绿色安装
  a、解压到一个磁盘上或者目录中(目录不能有中文或者空格)
  b、在你的系统环境变量中配置  JAVA_HOME=C:\jdk1.7.0_02(你的)
 2、启动Tomcat:(默认使用8080端口)
  进入Tomcat的安装目录\bin\startup.bat(启动)    shutdown.bat(停止)
 3、验证:
  IE:http://localhost:8080
 
 4、如何更改Tomcat默认的端口号:
  修改Tomcat的安装目录\conf\server.xml  把69行的8080改了
 5、Tomcat的安装目录结构
  bin:运行和停止Tomcat服务器的一些命令startup.bat  shutdown.bat
  conf:存放运行Tomcat的一些配置文件
  lib:存放运行Tomcat的jar包(servlet-api.jar  jsp-api.jar)
  logs:运行日志
  temp:临时文件
  webapps:我们编写的JavaWeb应用就放在该目录下(有几个文件夹就说明有几个应用)
  works:Tomcat的工作目录

 

 

一、JavaWeb应用的标准目录结构(记住)
二、如何部署应用到服务器上
三、Tomcat的一些配置
 1、Tomcat的组成结构
 2、server.xml配置文件
  配置虚拟目录
  配置虚拟主机
  配置连接器
四、HTTP协议(记住,特别重要)

以下是具体笔记:

一、JavaWeb应用的标准目录结构(记住)
 MyApp
  index.html
  css
   main.css
  js
   main.js
  WEB-INF    固定写法。必须有,大小写要严格一致。存放在此目录中的资源外界(客户端)无法访问
   classes 固定写法。存放java的class文件的。com.itheima.Hello.class它的存放目录   classes\com\itheima\Hello.class
   lib 固定写法。存放当前应用需要的jar包。
       注意:Tomcat\lib存放jar包。此处的jar被所有的应用共享。
   web.xml 固定写法。当前应用的配置文件。
   
二、如何部署应用到服务器上:
 方式一:开放式目录部署。把你应用的文件夹拷贝到Tomcat\webapps目录下即可
 方式二:把应用打成war。把war文件拷贝到Tomcat\webapps目录下即可
 
三、Tomcat的一些配置(熟悉Tomcat,练一遍)
 0、Tomcat\conf\server.xml,该文件是Tomcat的核心配置文件
 

 1、Tomcat的组成结构
 2、server.xml配置文件
  2.1配置虚拟目录:server.xml的Context元素
   方式一:(不建议使用。因为需要重新启动Tomcat才会生效)
   在server.xml的Host元素内部配置如下内容
   <Context path="/abc" docBase="E:\MyApp"/>   path:虚拟目录的名称,一般以/开头。docBase:真实应用所在的目录
   方式二:(建议使用.因为不需要重启,比较方便)
   在Tomcat\conf\[enginname]\[hostname]\xml配置文件
   该配置文件的主文件名就是应用的虚拟目录名称,内容如下:
   <Context docBase="E:\MyApp"/>
   //访问的时候带上虚拟目录名称http://localhost:8080/abc/1.html,abc就是虚拟目录,在Tomcat\conf\[enginname]\[hostname]\下建立的XML文件名是abc.xml
   说明:
    [enginename]:表示<Engine>的name属性
    [hostname]:表示<Host>的name属性。
  小案例:
  配置默认应用:应用在外面硬盘,不是在tomcat的webapps 目录下
   http://localhost:9999/ABCD/0.html 访问的是/ABCD这个应用下的0.html
   http://localhost:9999/0.html  默认应用就是不指定应用名称的前提下,找一个应用,这个应用就是默认应用。
   
   如何做:
    在Tomcat\conf\[enginname]\[hostname]\ROOT.xml的配置文件
    该配置文件的主文件名就是应用的虚拟目录名称,内容如下:
    <Context docBase="E:\MyApp"/>
    注意:由于默认应用比较特殊,也需要重启
  配置默认的端口:HTTP协议的默认端口是80
   http://localhost/0.html应用在外面硬盘,不是在tomcat的webapps 目录下
   
   如何做:
    修改Tomcat\conf\server.xml的69行,端口改为80(前提是该端口没有被占用)
    注意:由于该了server.xml,也需要重启
  配置应用的默认主页:
   http://localhost/0.html
   http://localhost         就相当于访问了80端口上的MyApp的0.html
   0.html就是默认主页
   
   如何做:
    修改应用下的web.xml,在根元素下面添加以下内容:
     <welcome-file-list>
      <welcome-file>index.html</welcome-file>
      <welcome-file>0.html</welcome-file>
      <welcome-file>index.jsp</welcome-file>
     </welcome-file-list>
     
    说明:从第1个开始找
    
  2.2配置虚拟主机:server.xml的Host元素
   a、按照课堂的doc文档,建立对应的目录结构
   b、修改Tomcat\conf\server.xml,添加以下内容:
   </Host>
     <Host name="www.itheima.com"  appBase="heimaapps"
     unpackWARs="true" autoDeploy="true"
     xmlValidation="false" xmlNamespaceAware="false"/>
     <Host name="www.itcast.cn"  appBase="itcastapps"
     unpackWARs="true" autoDeploy="true"
     xmlValidation="false" xmlNamespaceAware="false"/>
   c、修改系统C:\Windows\System32\drivers\etc\hosts,添加以下内容
   127.0.0.1       www.itheima.com
   127.0.0.1       www.itcast.cn
   (说明:玩后改回去)
  2.3配置连接器:server.xml的Connector元素
   SSL:Servlet Socket Layer
   主要作用:加密数据传输和客户身份认证
   
   HTTPS = HTTP+SSL 使用的默认端口443
   
   a、使用jdk的keytool工具生成一个证书
   keytool -genkey -alias tomcat -keyalg RSA
   生成后的证书文件:.keystore(默认在当前登录的系统用户文件夹中)
   b、在Tomcat\conf\server.xml中建立如下的连接器:
    <Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol" SSLEnabled="true"
               maxThreads="150" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" keystoreFile="E:\.keystore" keystorePass="aaaaaa"/>
   c、重新启动Tomcat。日后访问https://localhost:8443/....
   
   
   
四、HTTP协议(记住,特别重要)
1、HTTP是HyperText Transfer Protocol(超文本传输协议)
2、作用:定义WEB浏览器与WEB服务器之间交换数据的过程及数据本身的格式
3、HTTP/1.0、HTTP/1.1(主流)
4、在html中,遇到以下情况,浏览器都会自动去请求响应的资源
<link href="xxxx.css"/>
<script src="xxxx.js"></script>
<img src="xxxx.jpg"/>
<iframe src="xxxx.html"/>

这个不是:<a href="xxx.html">猛点</a>
5、HTTP协议的组成
 5.1请求部分
  GET / HTTP/1.1
  Accept: */*
  Accept-Language: zh-CN,en-US;q=0.5
  User-Agent: Mozilla/4.0
  Accept-Encoding: gzip, deflate
  Host: localhost:8080
  Connection: Keep-Alive

  5.1.1请求行:请求方式+请求资源的URI+客户端使用的协议
  请求方式:
   GET:默认的请求方式。
   POST:目前,可以借助于表单中的method属性来指定。
   
   对比:
   POST /app1/1.html HTTP/1.1  如果有表单数据,这些数据出现在了请求正文中
   GET /app1/1.html?name=abc&password=123 HTTP/1.1 如果有表单数据,这些数据紧跟请求URI地址后面给
  
   建议用表单提交数据时,使用POST方式。
   因为:1、数据不会被旁人看见 2、请求行是有大小限制,1kb,而请求正文则没有
   
   
   URL和URI的区别:
   http://localhost:8080/app1/2.html  URL:协议+IP:8080+资源地址  缺一不可
   /app1/2.html        URI
   
  5.1.2常用请求消息头
   *Accept:表示浏览器可以接受的MIME类型
    MIME类型:大类型/小类型   text/html  image/jpg  image/png image/bmp
     文件扩展名和MIME类型的对应关系,可以查阅Tomcat\conf\web.xml
   Accept-Charset: 浏览器通过这个头告诉服务器,它支持哪种字符集  
   *Accept-Encoding:浏览器能够进行解码的数据编码方式,比如gzip
   Accept-Language:浏览器所希望的语言种类
   *Referer:它是一个地址,改地址是当前页面是由哪个页面转过来的。(你从哪里来) 作用:防盗链和广告统计用
   *Content-Type:浏览器告知服务器,发送的请求正文内容的MIME类型。它与form的enctype属性一致的
       默认值:application/x-www-form-urlencoded   (name=aaaa&password=123)
       multipart/form-data  文件上传时用的
   If-Modified-Since:告知服务器,本地缓存的文件的最后修改时间
   User-Agent:告知服务器,客户端浏览器的类型
   Content-Length:告知服务器,请求正文的内容长度
   Connection:表示是否需要持久连接。如果服务器看到这里的值为“Keep -Alive”,或者看到请求使用的是HTTP 1.1(HTTP 1.1默认进行持久连接
   *****Cookie:向服务器传递小的文本信息(会话管理)
   
 5.2响应部分
  HTTP/1.1 200 OK
  Server: Apache-Coyote/1.1
  Accept-Ranges: bytes
  ETag: W/"7446-1367206570000"
  Last-Modified: Mon, 29 Apr 2013 03:36:10 GMT
  Content-Type: text/html
  Content-Length: 7446
  Date: Tue, 25 Feb 2014 06:23:29 GMT
  Warning: w1
  Warning: w2
  
  hello
  
  5.2.1响应行:服务器使用的协议+响应码+响应码描述
  响应码:保留500个,目前只用到了30个左右。
   常用的响应码(记住)
   200 一切OK
   302/307 临时重定向
   304 指服务器上的这个资源没有被修改过(文件的最后修改时间)
   404 找不到
   500 程序出错了
   
  响应码描述:
  5.2.2响应消息头(不仅要记住,要做到看到头,知道什么意思;要完成个什么功能,知道用哪个头)
   *Location:告诉客户端一个URL地址。配合302/307 实现请求重定向
   *Content-Encoding:告诉客户端,正文内容的编码方式(压缩格式)gzip
   *Content-Length:告诉客户端,正文内容的长度(字节长度)
   *Content-Type:告诉客户端,响应正文内容的MIME类型。
   *Refresh:告诉浏览器定时刷新
   *Content-Disposition:告诉浏览器,数据要用下载的方式打开。
    Content-Disposition=attachment;filename=1.jpg
   *****Set-Cookie:会话技术有关
   以下三个:告诉浏览器,不换缓存内容
    *Expires: -1
    *Cache-Control: no-cache (1.1) 
    *Pragma: no-cache   (1.0)
   

 

黑马第六天之web开发入门和HTTP协议,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。