07 JavaWeb
软件开发的两种架构:c/s和b/s
* C/S client/server 客户端/服务器 例子:QQ 快播 暴风影音...* 优点:交互性非常好,服务器压力小。
* 缺点:客户端软件,下载客户端软件。
* B/S Browser/server 浏览器/服务器 例子:购物网站 12306购票 淘宝
* 缺点:交互性不好(ajax),服务器压力大。
* 优点:服务器端进行更新,打开浏览器刷新。
Web开发的相关知识
* 静态的WEB资源
* HTML CSS JAVASCRIPT
* 动态的WEB资源
* Servlet/JSP SUN提供了
* ASP 微软
* PHP 模板(mysql php )
* RUBY 日本
* JAVA: 处理大数据。淘宝。
* 服务器的概念:
* 底层原理:网络编程。
* 硬件:一台主机。
* 软件:安装服务器软件。
* 访问:
* ip+端口号
* 119.75.217.56 -- 域名
* 常见的服务器
* WebLogic BEA的公司开发 但收费 支持JAVAEE的所有规范。被oracle收购(sun(java) mysql(数据库) WebLogic)
* WebSphere IBM的公司开发 但收费 支持JAVAEE的所有规范。
* Tomcat apache(开源组织,非常伟大)支持Servlet/JSP的规范。
使用tomcat的6.x的版本
* 前提条件:安装JDK,配置JAVA_HOME
* 安装tomat,(解压版),启动服务器:tomcat/bin/startup.bat。双击启动了。C:\Program Files (x86)\Java\jdk1.6.0_16
* 如果黑色窗口一闪而过,需要配置JAVA_HOME。
* 常见的启动问题
* 安装JDK,配置JAVA_HOME
* 端口占用的问题。
* 端口被占用。
* java.net.BindException: Address already in use: JVM_Bind
* 解决问题:
* 在dos窗口中输入 netstat -ano命令,查找8080端口,找到PID
* 任务管理器结束PID就OK了。
* 修改tomcat服务器的端口号。修改tomcat的配置文件。
* tomcat/conf/server.xml修改tomcat的端口号。
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
* 重新启动服务器。
* 带 World wide web publish IIS服务。
* tomcat的目录结构
* bin(**) 存放批处理的文件
* conf(*****) tomcat配置文件
* lib(***) 存放jar包
* logs(***) 日志
* temp(**) 临时文件
* webapps(*****) web applications存放项目的
* work(*****) jsp的时候,翻译serlvet
* 开发一个动态的WEB资源,固定的目录结构
* 在webapps的目录下,创建一个目录。
website
| --- 静态的页面(HTML CSS JAVASCIPT JSP)
| --- WEB-INF
| --- web.xml 配置文件 必须有的
| --- lib (文件夹,第三方的jar包) 可选的
| --- classes (文件夹,存放.class文件) 可选的
myeclipse配置tomcat
* window -- 选择 -- (搜索servers)MyEclipse -- Servers -- tomcat -- 选择tomcat6.x的版本
* 选择Enable -- 配置tomcat的路径 -- 选择tomcat的根路径
* 配置JDK(点tomcat的+号) -- 配置JDK -- 选择JDK就ok了。
* 新建的WEB项目,部署tomcat服务器中,启动服务器。
* 虚拟路径:访问路径(项目名称)。
* 直接复制web项目,修改虚拟路径。
* 右键 -- 属性 -- MyEclipse -- web -- 修改虚拟路径。
* tomcat管理员的配置(了解)
* 在tomcat/conf/tomcat-user.xml
<role rolename="manager"/>
<user username="admin" password="admin" roles="manager"/>
* 部署web应用程序(三种方式)(重点)
* 直接复制项目到webapps目录下。
* 通过conf/server.xml中配置虚拟路径的方式(开发中使用,但是tomcat不推荐使用)
* 标签<Context docBase="项目的真实路径" path="访问路径" ></Context>
* Context需要配置Host标签下。
* 在指定的文件夹下编写 xxx.xml,把xxx作为访问路径。(推荐使用的)
* 在哪个文件夹下:($CATALINA_HOME/conf/[enginename]/[hostname]/ directory.)
* tomcat/conf/Catalina/localhost/xxx.xml
* 编写的xml:
* <Context docBase="项目的真实路径" ></Context>
//访问时直接http://localhost/xxx/
* 通信
* 百度的ip:119.75.217.56
* 翻译ip,先去自己的电脑hosts文件,如果找不到,网络上。
* 了解配置虚拟主机。
* 先找到hosts文件。C:\WINDOWS\system32\drivers\etc\hosts 修改为: 127.0.0.1 www.baidu.com
<Host name="www.taobao.com" appBase="C:\taobao"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context docBase="\mytaobao" path="/" ></Context>
</Host>
* 通信
* 百度的ip:119.75.217.56
* 翻译ip,先去自己的电脑hosts文件,如果找不到,网络上。
* 了解配置虚拟主机。
* 先找到hosts文件。C:\WINDOWS\system32\drivers\etc\hosts 修改为: 127.0.0.1 www.baidu.com
<Host name="www.taobao.com" appBase="C:\taobao"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context docBase="\mytaobao" path="/" ></Context>
</Host>
接下来配好index.html页面即可直接www.taobao.com访问
HTTP的协议
* 协议:遵循一定规范的数据格式。
* 特点:
* 基于请求和响应的模式。(先有请求再有响应)
* 基于tcp的链
* 默认端口是80
* 使用telnet命令完成http入门
* 开启telnet命令。
* telnet localhost 80
* 会产生乱码,解决问题:ctrl+],回车。
* telnet命令,不支持删除。
* 服务器发送一次请求
GET /aa/1.html HTTP/1.1
host:localhost
* 服务器做出了响应
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
ETag: W/"20-1413703905727"
Last-Modified: Sun, 19 Oct 2014 07:31:4
Content-Type: text/html
Content-Length: 20
Date: Sun, 19 Oct 2014 07:37:51 GMT
<h1>hello world</h1>
* HTPP协议的版本(面试题)
* HTTP/1.0
* 发送一次请求,拿到web资源后,链接会自动断开。
* HTTP/1.1
* 发送一次请求,拿到web资源后,链接不会断开,如果长时间不操作,会自动断开。
GET /aa/1.html HTTP/1.0
host:localhost
GET /aa/1.html HTTP/1.1
host:localhost
* 请求:
* 请求行:
* 请求方式
* POST、GET、HEAD、OPTIONS、DELETE、TRACE、PUT、CONNECT
* 常用post和get
* 区别:....
* 请求路径
*
* 协议版本
* 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
* 重点的头
* If-Modified-Since 可以控制缓冲,需要和响应的头一起来使用。
* Referer 记住当前网页的来源。(防止盗链)
* User-Agent 判断当前的浏览器类型
* 空行
* 请求体:就是post提交时,保存参数列表的。
* 响应:
* 响应行
* 协议版本
* 状态吗
200 :请求成功处理,一切OK
302 :请求重定向
304 :服务器端资源没有改动,通知客户端查找本地缓存
404 :客户端访问资源不存在
500 :服务器内部出错
* 状态码描述
* 响应头
Location: http://www.it315.org/index.jsp
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
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
* 重点:
* Location 可以与302完成重定向的操作
* Content-Type
* Last-Modified 根请求头一起来完成控制缓冲的操作
* Refresh 完成页面的定时刷新
* Content-Disposition 做下载功能时,必须使用该头。
Expires: -1
Cache-Control: no-cache
Pragma: no-cache
* 禁用浏览器的缓冲。
* 空行
* 响应体:服务器向客户端响应的所以内容。
* 协议:遵循一定规范的数据格式。
* 特点:
* 基于请求和响应的模式。(先有请求再有响应)
* 基于tcp的链
* 默认端口是80
* 使用telnet命令完成http入门
* 开启telnet命令。
* telnet localhost 80
* 会产生乱码,解决问题:ctrl+],回车。
* telnet命令,不支持删除。
* 服务器发送一次请求
GET /aa/1.html HTTP/1.1
host:localhost
* 服务器做出了响应
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
ETag: W/"20-1413703905727"
Last-Modified: Sun, 19 Oct 2014 07:31:4
Content-Type: text/html
Content-Length: 20
Date: Sun, 19 Oct 2014 07:37:51 GMT
<h1>hello world</h1>
* HTPP协议的版本(面试题)
* HTTP/1.0
* 发送一次请求,拿到web资源后,链接会自动断开。
* HTTP/1.1
* 发送一次请求,拿到web资源后,链接不会断开,如果长时间不操作,会自动断开。
GET /aa/1.html HTTP/1.0
host:localhost
GET /aa/1.html HTTP/1.1
host:localhost
* 请求:
* 请求行:
* 请求方式
* POST、GET、HEAD、OPTIONS、DELETE、TRACE、PUT、CONNECT
* 常用post和get
* 区别:....
* 请求路径
*
* 协议版本
* 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
* 重点的头
* If-Modified-Since 可以控制缓冲,需要和响应的头一起来使用。
* Referer 记住当前网页的来源。(防止盗链)
* User-Agent 判断当前的浏览器类型
* 空行
* 请求体:就是post提交时,保存参数列表的。
* 响应:
* 响应行
* 协议版本
* 状态吗
200 :请求成功处理,一切OK
302 :请求重定向
304 :服务器端资源没有改动,通知客户端查找本地缓存
404 :客户端访问资源不存在
500 :服务器内部出错
* 状态码描述
* 响应头
Location: http://www.it315.org/index.jsp
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
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
* 重点:
* Location 可以与302完成重定向的操作
* Content-Type
* Last-Modified 根请求头一起来完成控制缓冲的操作
* Refresh 完成页面的定时刷新
* Content-Disposition 做下载功能时,必须使用该头。
Expires: -1
Cache-Control: no-cache
Pragma: no-cache
* 禁用浏览器的缓冲。
* 空行
* 响应体:服务器向客户端响应的所以内容。