一 web结构
1 常见的服务器
a. WebLogic: orcale公司的产品,支持JAVAEE规范,收费
b. WebsphereAS: IBM公司的产品 ,支持JAVAee规范, 收费
c. Jboss: red公司的产品,支持EJB, 免费
d. Tomcat: apache公司产品支持JavaEE规范,免费
2 三方协议(*)
注:
1) 因为Tomcat更加小巧,便捷,功能充足,所以成为了许多web开发人员的开发首选服务器
2) 开发人员所编写的web应用程序必须部署到服务器上才能供用户进行远程访问
3) 实现了什么规范,便成为什么容器
3 Tomcat相关知识(*)
a) 版本:
Tomcat 6.0.x是开发中比较常用的版本,(类似于JDK1.5在java中的地位)
但是,作为初学者,完全可以安装更高版本的。
b) 下载地址:
c) Tomcat的启动与关闭
启动
1 : win+R打开Dos窗口 —— 切换到Tomcat所在的盘符 —— 进入Tomcat的安装路径
—— 输入start.bat
在该路径下输入shutdown.bat即可关闭。
d) 常见的启动问题
1) 闪退:
一般需要设置 Java_Home环境变量
设置方式: 选择我的电脑,右键,属性 —— 高级系统设置 —— 环境变量 —— 系统变量
新建/编辑(如果已经存在的话) —— 将jdk的安装路径复制过来 —— OK
注:
建议我们安装的一切与开发有关的软件的路径都不要有中文和特殊字符!防止产生
意料之外的错误。
2) 端口号冲突:
比如,我们在启动Tomcat时出现了这样的问题
Several ports (8080, 8009) required by Tomcat v6.0 Server at localhost
are already in use. 说明(Tomcat默认的8080端口已经被电脑中的其它程序占用
了) 这时,我们就应该修改端口号,解决冲突问题。
修改方式:
进入Tomcat的安装路径 —— conf —— server.xml(69行左右 嘿嘿)
找到如下文字:
< Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
将端口号port的值由8080改为其它的即可(建议10000以上的 因为TCP/IP端口号范围
是 0-65535 而0-1023被知名端口所占用 1024-65535是其它程序所使用的范围 )
e) Tomcat目录结构
注:
bin - binary 二进制执行文件目录,存放一些 .bat文件(批处理文件 可以理解为一些小程序)
conf - configuration 配置 存放的是配置文件
lib - library 类库 存放一些使用到的jar包(jar包可以理解为 多个.class文件组成的压缩文件 是第三
方提供的一些供用户使用的类)
logs 日志(这个不是缩写 log有日志的意思 不光是我们所学的对数的意思哦 嘿嘿) 记录信息
的日志(如 启动信息 错误信息等等 基本上不用管)
webapps 这个文件夹很重要,我们编写的web应用程序都要复制到该文件夹下才能通过
浏览器进行访问
f) 应用程序的目录结构(非常重要!背也得背下来)
由上述我们知道了,我们编写的web应用程序需要复制到webapps这个目录下
一般我们都在该目录下创建一个名为app(可以改成自己喜欢的,但是要见名知意)的文件夹,里面来
存放项目。
我们的项目必须遵循一定的格式,否则会造成Tomcat启动错误,或是无法访问项目等错误
那么,我们的项目(web应用程序)里面的目录结构应该满足什么格式呢?
1 WEB-INF文件夹(注: 该文件夹规定就是如此书写,不可更改! INF是information的缩
写)
该文件夹应该包括:
a) classe (其中存放我们编写的java类的字节码文件)
b) lib(我们编写java类时所用到的jar包)
c) web.xml(作为配置文件 声明了相关信息)
web.xml书写方法:
进入conf中 - 找到其中的web.xml(22行之前 嘿嘿),复制其中的
<?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">
再加上 结束标签</web-app>,别忘了去掉多余的注释。
2 html(用于存放html文件)
3 css(用于存放css文件)
4 js(用于存放javascript文件)
5 images(用于存放图片文件)
二 HTTP协议(*)
1 定义: HTTP协议是规定了浏览器与服务器之间进行信息交流时所遵守的数据格式
2 版本及区别
a: HTTP1.0: 每次请求都需要建立一次连接,而且每次连接只能处理一次请求和响应
所以,只能等待一次请求完毕后才能进行下一次请求。而每次创建连接和关闭
连接都是很费时的。
b: HTTP1.1: 连接建立后,可以进行多次请求和连接,不用等待上一次请求的结果返回就可以进行
下一次请求。
综上,我们可以得知,HTTP1.0协议更加高效。
3 重要的信息
请求信息和响应信息
a) 请求信息的组成
1) 请求行
(I) 请求方式 (get/post)
(II) 资源地址(webapp目录下被请求的资源的路径 如: /app/html/1.html)
(III) 协议版本 (HTTP的版本)
注: get和post方式的区别
(I) get的发送的信息有限,最多为1k;post理论上没有限制
(II) get方式发送的表单数据会显示在地址栏上,不安全;而post不会
get: 快速但不安全 post: 安全但不够快
一般来说,我们不能同时保证效率和安全,所以两者相权取其重。
2) 请求头
由头名称和头值组成,声明了一些信息
需要知道的有
Accept: 声明了浏览器支持的MIME类型(可以理解为文件类型)
Refer: 告知该页面从哪个页面访问过来。
用处: 记录广告信息 和 防盗链(如果Refer为null,说明你是从我的官网直接访问过来的
否则,你是从其它途径访问过来的,我如果不想让你访问,可以屏蔽你)
3) 请求正文
只有post方式的提交的表单数据才有请求正文。get是没有的
记录了一些表单数据的值。
b) 响应头信息的组成
1) 响应行
由 协议版本 状态码 和 状态信息组成
状态码: 代表了当前服务器状态的码值
200: OK
302/307: 重定向
304: 未修改
404: 访问资源不存在(找不到)
500: 服务器端错误(Java代码出错了)
状态信息: 解释说明状态码所用的信息
如: 304 NOT MODEFIED
404 NOT FOUND
2) 响应头
头名称和头值组成
需要掌握的有
Location: 服务器告诉浏览器,请求必须重定向(必须配合 302状态码 使用)
重定向: 浏览器向服务器请求某资源(比如: 下载一个文件),服务器给出
响应状态码302和一个location对象(代表地址),浏览器解析出
状态码是302,于是发出新请求,访问地址就是location对代表
的地址。
Content-Encoding: 服务器告知浏览器,采用什么格式对数据进行压缩
注: 大多数网站都采用gzip方式对数据进行压缩,压缩是为了减少网络流量,提高速度
Content-Type: 服务器告知浏览器,以什么码表对数据进行解析
注:
一般来说,Encoding代表编码,而这里的Content-Encoding则代表压缩方
式,Content- Type代表的是编码方式,有些特殊,要注意了!Last-Modified: 服务器告知浏览器所访问资源的最后一次修改的时间。
Refresh: 服务器告知浏览器多长时间刷新一次。
注: 可以定时刷新到别的页面
Content-Disposiont: 服务器告知浏览器以下载的方式打开文件
(比如某些压缩文件,一点击图标就询问是否下载)
Expires: 服务器告知浏览器不许保存缓存。
注:
1 Expires是有效期,期限的意思。将它的值设为-1即可不保留缓存。
2 Cache-Control: no-cache(适用于HTTP1.1版本)
3 Pragma: no-cache(适用于HTTP1.0版本)
4 由于我们不知道客户端遵循哪个HTTP版本,所以一般在编写程序时,这三个
方式都会写上。
Set-Cookie: 服务端用来告诉浏览器,要存储的内容
的request对象和response对象,To Be Continued......
3) 响应正文
响应的资源的HTML(CSS等)代码
三 MyEclipse中Tomcat的配置和部署
1 MyEclipse中配置服务器:
a(推荐): 点击像两个小电脑似的图标上的三角号
(Run/Stop /Restart MyEclipse Servers) —— Configure Server —— 文本框中搜
Tomcat —— Configure Server —— 文本框中搜Tomcat
—— 配置JDK(推荐用自己的,不用MyEclipse自带的) 和 Tomcat的路径 —— 再次点击图标
的三角号 —— 点击Tomcat*7的start
这样就配置好了,以后再次启动时就自动启动Tomcat*7了。
b: window —— properties —— 文本框里搜Tomcat,之后的一样。
2 MyEclipse中部署项目
点击两个电脑的按钮 —— 选择想要部署的项目 —— Add(想要添加的服务器) —— 选择后确定
3 一个项目在MyEclipse中的文件夹和部署到Tomcat上后该项目在Tomcat安装目录中的文件夹的对应关系
在MyEclipse中,一个Web工程分为src 和 WebRoot两部分
src: 存放我们编写的java类
WebRoot: 存放Web应用程序
部署到Tomcat后,对应:
WebRoot被替换成了Web工程的名字
希望大家在阅读后多多提出意见和建议,指出错误和不足,在下愿与诸君共同进步,贯彻自己的忍道!
参考资料包括:
1) 黑马程序员许刚老师视频(我是看传智和黑马的视频自学的,挺感谢黑马的,就打个人情广告
吧。。。。。。)
2) http://blog.csdn.net/friendan/article/details/8117291(Tomcat的web应用程序目录结构)
4) http://www.cnblogs.com/yqin/archive/2010/06/07/1810454.html(请求转发与重定向)