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