在网络程序创建选取端口时0-1023已经被本地占用,选取其他
doc下查看IP ipconfig
学习目标: tomcat 服务器的配置以及 HTTP 协议.
1.web的相关介绍
web表示网页的意思, 指internet上供外界访问的页面.
静态的页面: html(超文本标记语言(Hypertext Markup Language))+ css + js (cascading style sheet) (java script) , 任何时间点你去访问内容都是一样的.
动态的页面: 都是由程序产生.
不同时间点去访问这个页面,产生数据都是不一样.
web1.0: 这个数据都是让用户来浏览的. 主要是用来传播信息的
web2.0: 页面都是用来进行交互的. 微博.
============web 开发 主流三种技术===========
a.jsp/servlet 技术 : 网页开发. sun(standford university network) 公司的解决方案
jsp 收费的.
企业的前端开发
(OA office automation, CRM client relationship management,ERP enterprise resource planing)
b) asp -微软的解决方案. .net (c#.net, asp.net, vb.net...) 收费的.
c) php -- 开源组织的. android, ruby, python, hadoop .
lamp (linux + apache + mysql + php)
2.web服务器的模型
遵守请求-- 响应的模型
a) 请求与响应必须成对的出现.
b)必须先有请求,后有响应.
C/S client -- service ------------->> B/S
3.常见的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. 免费的
4.tomcat服务器
tomcat 是apache jarkata 项目的一个子项目.
针对不同平台有不同版本.
exe 和 zip 是针对window平台, tar.gz就是针对linux平台的
5.tomcat服务器启动时一些问题. (重点 )
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.
进入到 conf/server.xml , 将 connector 元素中的port 属性 更改为 80 端口,然后重启
就将tomcat启动的时候的端口更改为 80 了
c) 如果把tomcat启动时的端口 改成80 之后 可能 重启服务器又 启动不了了, 怎么办?
重复 b) 操作,找到 占用80 端口的应用程序, 然后把它干掉.
如果 b)操作不好使,那么可能就是windows的IIS 占用了80 端口(系统级的服务.干不掉)
进到windows的 服务列表中将其 干掉了.
=====
catalina_home环境变量: 用来指明tomcat 服务器 安装的目录. 但是呢, 一般都不会配置该环境变量.
因为配置正确了没有关系.但是一旦配置错误,那么tomcat就启动不了了.
6.tomcat服务器与Servlet版本的对应关系
Tomcat版本 Servlet/JSP版本 JavaEE版本 运行环境
4.1 2.3/1.2 1.3 JDK1.3
5.0 2.4/2.0 1.4 JDK1.4
5.5/6.0 2.5/2.1 5.0 JDK5.0
7.0 3.0/2.2 6.0 JDK6.0
7.tomcat的目录组织结构
tomcat
-bin 存放命令
-conf 存放tomcat启动的配置信息
-lib tomcat运行时一些依赖的jar包
-log tomcat运行的日志文件夹
-temp 运行时临时文件夹
-webapps web应用存放的目录
-work 工作目录, jsp 被翻译成的servlet就放在这个目录.
8.虚拟目录映射的三种方式
a) 方式一:
在conf/server.xml中,在其host元素下配置一个 Context 元素.
<Context path="/itheima" docBase="d:\mail"/>(还可以配置reloading属性)
http://localhost:8080/itheima/1.html
配置好了之后,由于改动了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文件 那么也可以弄成缺省的。
<?xml version="1.0"?>
<Context docBase="f:\mail"/>
如果是多级访问 目录, 可以 建一个 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 刚刚配置好的欢迎页面. 需要 重启服务器
http://localhost/
9.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"/>
10.配置虚拟主机
a)进入到 C:\Windows\System32\drivers\etc ,
b) 打开 hosts文件,在末尾添加 :
192.168.1.100 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
================================如何配置缺省的虚拟主机呢? ========================
<Engine name="Catalina" defaultHost="www.sina.com">
花生壳
11.web资源访问流程
12.web应用的目录组织结构(*重点)
-- .html ,.js, .css
-- WEB-INF
--classes java程序
--lib 存放jar包
--web.xml 用来做配置
=================
HTTP 协议:超文本传输协议(Hyper Text Transport Protocol)
1.什么是协议?
数据的格式.
2.HTTP协议.
Http协议是用来定义 web浏览器与web服务器之间交换数据的格式的专用的.
3.实验一:通过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插件了.
HTTP1.0 与 HTTP 1.1的区别
1.0 一次只可以连上一个web资源.
1.1 一次可以连上多个web资源, 并且保持一段时间不断开连接.
4.HTTP请求
请求行: GET /day02/1.html HTTP/1.1
请求体: key=value,value (一个key可以对应多个value)
=========get方式的请求与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方式请求的数据由于跟在请求体中的, 所以请求的数据就没有大小限制了.
请求头含义详解:
Accept: text/html,image/* 表示 客户端 接受的数据格式.
Accept-Charset: UTF-8 表示客户端采用的编码集
Accept-Encoding: gzip,compress 表示客户端支持的数据压缩格式. gzip压缩. (重点)
Accept-Language: en-us,zh-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 (compatible; MSIE 5.5; Windows NT 5.0) 客户端采用什么浏览器来访问的页面.
Connection: close/Keep-Alive 继续保持连接还是断开
Date: Tue, 11 Jul 2000 18:23:51 GMT 客户端访问服务器的时间.
5.HTTP响应
响应行: HTTP/1.1 200 OK
6.常用的响应状态码
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 : 请求的时候服务器端出现了错误.
7. 常用的响应头详解:
响应头:
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 文件下载的,(重要)
实现客户端禁用缓存.
Expires: -1
Cache-Control: no-cache
Pragma: no-cache
Connection: close/Keep-Alive 继续保持连接还是断开
Date: Tue, 11 Jul 2000 18:23:51 GMT 服务器回写数据的时间.
=======================重点======================================
1) 302 + Location 完成请求重定向
2) refresh 自动刷新
3) gzip压缩
a) 用程序代码实现压缩.
b) 通过配置tomcat 服务器来实现压缩.
在server.xml中的connector中配置
compressableMimeType="text/html,text/xml,text/plain" compression="on"
压缩前: 00:00:00.000 1.163 11599 GET 200 text/html;charset=ISO-8859-1 http://localhost:8080/
压缩后: 00:00:00.000 1.150 2296 GET 200 text/html;charset=ISO-8859-1 http://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