3.web开发入门知识
/*web入门*/
/*互联网上常用的协议以及它的端口*/
http 80 http://localhost/ 相当于 http://localhost:80/ http协议 默认是80
http://localhost:8080/ (启动成功后 可进入Tomcat主页)
smtp 25
pop3 110
ftp 23
https 443
WEB应用程序指供浏览器访问的程序,通常也简称为web应用,一个web应用由多个静态web资源和动态web资源组成,如:
html、css、js文件
Jsp文件、java程序、支持jar包
配置文件等等......
组成web应用的这些文件通常我们会使用一个目录组织,这个目录称之为 /*web应用所在目录*/
WEB 应用开发好后,若想供外界访问,需要把web应用所在目录交给web服务器管理, /*这个过程称之为虚拟目录的映射*/ /*把web应用交给服务器管理才能 让外界访问*/
虚拟目录的映射方式
/*一、在Server.xml中进行配置*/
在<Host>元素中添加子元素<Context path=" ... " docBase=" ... "/> 并重启服务器即可;
path表示虚拟目录,docBase表示真实的web应用所在目录;
比如在C盘中存在a这个web应用,则 <Context path="/test" docBase="C:\a"/>
则输入 http://localhost:8888/test/1.html 就能访问到a文件夹下的 1.html
注意:这种方法需要重启服务器才能够生效,所以不适用,因为每次添加一个web应用都需要重启服务器。
/*二、最佳配置方法*/
$CATALINA_BASE/conf/catalina/localhost/ 文件夹下创建一个xml文件,任意文件名都可以,但是此文件名是web应用发布后的虚拟目录;
比如创建一个test.xml ,在文件中添加 <Context docBase="C:\a"/>
不需要重启服务器,只需要在浏览器中输入 http://localhost:8888/test/1.html 即可访问C:\a\1.html ;
/*三、配置默认web应用*/
一般,输入 http://localhost:8080 后都会跳出 tomcat的主页,因为这个tomcat的web应用就是默认的web应用,如果想将自己的web应用配置成默认的web应用,
只需要在Server.xml中的<Context>元素中为 <Context path="" docBase="C:\a"/>
或者将test.xml改成 ROOT.xml 即可;输入 http://localhost:8080/1.html 就能访问C:\a\1.html ;
/*web应用组织结构和web.xml文件的作用*/
开发web应用时,不同的类型的文件有严格的存放规则,否则不仅可能会使web应用无法访问,还会导致web服务器启动报错
mail-----------------------web应用所在目录
|
|---1.html、jsp、css、js文件等 这些文件一般在web应用根目录下,根目录下的文件外界可以直接访问
|
|---2.WEB-INF 目录 (java类、jar包、web应用的配置文件存在这个目录下,该目录下的文件外界无法非法直接访问,由web服务器负责调用)
| |
| |--- classes目录 --(java类)
| |--- lib目录 ---(java类运行所需jar包)
| |--- web.xml(最重要) --- (web应用的配置文件)
| |
|
注:1.web.xml必须要写 (可以仿照tomcat的web.xml,,抄头抄尾)
2.web.xml文件是整个web应用中最重要的配置文件,它必须放在WEB-INF目录中。在开发web应用时,但凡涉及对web应用中的web资源进行配置,
通通是在web.xml文件中进行设置,例如:某个web资源配置为网站首页 ;将servlet程序映射到某个url地址上 ;为web应用配置监听器...
3.各文件层级 见上 (高低顺序)
配置虚拟主机 /*自己没有成功..*/
1.在一个tomcat服务器中可以放置多个网站,所谓配置虚拟主机,就是在tomcat服务器中配置一个网站
2.如需在web服务器中配置一个网站,需使用Host元素(serve.xml中)进行配置
例:<Host name="site1" appBase="c:\app"></Host>
3.配置的主机(网站)要想被外部访问,必须在DNS服务器或windows系统中注册
/*Web资源访问流程*/
1.在ie中输入了地址后,查询windows(hosts文件),获取主机名对应的ip
2.先查询hosts文件,windows查不到后,查询dns 获取主机名对应的ip
3.用查询的ip连接服务器
4.发送http请求
5.从请求信息中获取客户端想访问的主机名
6.从请求信息中获得客户机器访问的web应用
7.从请求信息中获得客户端访问的web资源
8.读取相应主机下的web应用下的 web资源
9.用读取到的web资源的数据,创建一个http响应
10.服务器回送http响应
11.浏览器收到http响应,解析出资源数据显示
将web应用打成war包
示例:在dos命令行中 转到相应路径下(有web应用的地方) 输入 /*jar -cvf news.war news*/ news 是一个例子
reloadable元素
配context元素的reloadable元素,让tomcat自动加载更新后的web应用 (小程序可以用,大程序不要用)
tomcat服务器的管理平台
1.在tomcat-users.xml 中 指定用户名 密码 以及权限
2.在localhost:8080中点击 manager APP 输入账号以及密码 完成登录
注:权限: 视频里面写的是manager 但是在我这里出现错误,后面改成 manager-gui 界面成功显示 (tomcat版本问题?)
manager-gui
允许访问html接口(即URL路径为/manager/html/*) *为通配符
manager-script
允许访问纯文本接口(即URL路径为/manager/text/*)
manager-jmx
允许访问JMX代理接口(即URL路径为/manager/jmxproxy/*)
上面三种包含下面这种
manager-status
允许访问Tomcat只读状态页面(即URL路径为/manager/status/*)*/
/*HTTP协议*/ (工作在TCP/IP协议之上的)TCP/IP 协议里 有 网络接口层,互联网层,传输层,应用层(HTTP协议就包含在应用层里的 一个协议)
HTTP1.0/HTTP1.1 允许客户端与web服务器建立连接后,在一个连接上获取一个/多个web资源 (HTTP1.1更好)
客户端连上web服务器后,若想获得web服务器中的某个web资源,需遵守一定的通讯格式,HTTP协议用于定义客户端与web服务器通讯的格式
使用telnet程序连上web服务器,并使用HTTP协议获取某个页面,快速了解HTTP协议的作用
安装IE浏览器插件HttpWatch,查看IE浏览器通过HTTP协议获取某个页面
一个web页面中,使用img标签引用了三幅图片,当客户端访问服务器中的这个web页面时,客户端总共会访问几次服务器,(向服务器发送了几次HTTP请求)
/*4次 1次请求拿到html中的数据 三幅图片各需要一次请求*/ /*做web开发时,需要尽可能减少HTTP的请求数*/
/*一种解决办法 将3幅图片搞到一幅图片上,控制image标签打开大图片的一部分 (两次请求)(CSS技术)*/
/*HTTP请求*/
客户端连上服务器后,向服务器请求某个web资源,称之为客户端向服务器发送了一个HTTP请求,一个完整的HTTP请求包括以下内容:
一个请求行
请求行用于描述客户端的请求方式,请求的资源名称以及使用的HTTP协议的版本号(例:GET/books/java.html HTTP/1.1) 请求方式->请求的URL地址->请求的协议
请求行中的GET称之为请求方式,请求方式有 /*POST,GET*/等
默认的都是GET 只有通过更改表单的提交方式才可以改为POST
如:<form action="/1.html" method="post"> </form>
GET和POST的区别:(体现在数据传递上)
GET方式的特点:在请求的URL地址后以?的形式带上交给服务器的数据,在URL地址后附带的参数是有限制的,其数据容量通常不能超过1K
POST方式的特点:在请求的实体内容中向服务器发送数据,传送的数据量无限制
若干请求头
请求头用于描述客户端请求哪台主机,以及客户端的一些环境信息等
Accept:用于告诉服务器,客户机支持的数据类型
Accept-Charset:用于告诉服务器,客户机采用的编码
Accept-Encoding:用于告诉服务器,客户机支持的数据压缩方式
Accept-Language:客户机的语言环境
Host:客户机通过这个头告诉服务器想访问的主机名
If-Modified-Since:客户机通过这个头告诉服务器,资源的缓存时间
Referer:客户机通过这个头告诉服务器,它是从哪个资源来访问服务器的(防盗链)
User-Agent:客户机通过这个头告诉服务器,客户机的软件环境
Cookie: 客户机通过这个头向服务器带数据
Range:Range头指示服务器只传输一部分web资源,这个头可以用来实现断点续传功能,Range字段通过三种格式设置要传输的字节范围:
bytes=1000-2000 bytes=1000- bytes=1000 (分别表示传输范围 1000-2000字节 1000字节以后 最后1000字节)
实体内容
/*HTTP响应*/
一个状态行 (用于描述服务器对请求的处理结果) 格式:HTTP版本号 状态码 原因叙述<CRLF>
状态码用于表示服务器对请求的处理结果,它是一个三位的十进制数
200(没有问题) 302(要你去找别人) 304(要你去拿缓存) 307(要你去拿缓存) 403(有这个资源,但是没有访问权限) 404(服务器没有这个资源) 500(服务器这边有问题)
若干响应头 (响应头用于描述服务器的基本信息,以及数据的描述,服务器通过这些数据的描述信息,可以通知客户端如何处理等一会儿它回送的数据)
Location:这个头配合302状态码使用,用户告诉客户找谁
Server:服务器通过这个头,告诉浏览器服务器的类型
Content-Encoding:服务器通过这个头,告诉浏览器数据的压缩格式
Content-Length:服务器通过这个头,告诉浏览器回送数据的长度
Content-Type:服务器通过这个头,告诉浏览器回送数据的类型
Last-Modified:服务器通过这个头,告诉浏览器当前资源缓存时间
Refresh:服务器通过这个头,告诉浏览器隔多长时间刷新一次
Content-Disposition:服务器通过这个头,告诉浏览器以下载方式打开数据
Transfer-Encoding:服务器通过这个头,告诉浏览器数据的传递方式
ETag:缓存相关的头
Expires:服务器通过这个头,告诉浏览器把回送的资源缓存多长时间,-1或0 则是不缓存
Cache-Control:no-cache
Pragma:no-cache
服务器通过这两个头,告诉浏览器不要缓存数据 (因为浏览器有很多种,所以执行不要缓存的头也有很多)
实体内容 (代表服务器向客户端回送的数据)