WEB开发的相关知识
Internet上供外界访问的WEB资源分为:
1.静态WEB资源:数据不变
2.动态WEB资源:指WEB页面中供人们浏览的数据是由程序产生的,不同时间点访问WEB页面看到的内容各不相同.
静态WEB资源开发技术
HTML CSS
常用动态WEB资源开发技术:
JSP/Servlet ASP PHP等
WEB服务器
常用WEB服务器
WebLogic 服务器--BEA公司
WebSphere服务器--IBM公司
Tomcat服务器--apache
Tomcat服务器
常见问题
1.端口被占用
两种解决方案
1.查看其他程序是否占用端口
2.改Tomcat服务器启动端口
Tomcat-conf--server.xml
--<Connector connectionTimeout="20000" port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" redirectPort="8443"/">
3.Catalina_home环境变量问题
4.Java_home环境变量的设置问题
5.只要在setclasspath.bat批处理文件第一次使用JAVA_HOME环境变量之前的任何地方,将JAVA_HOME环境变量设置为JDK主目录,就可以使用startup.bat文件启动Tomcat.
Tomcat--bin--startup--set CURRENT_DIR=%cd% 当前目录
CATALINA_HOME环境变量
cd..返回上一层目录
注意 在配置好Tomcat时会出现的错
问题 :
若两个盘符下都有Tomcat服务器
若想访问 WEB 文件 就会出现该文件找不到现像
两个Tomcat 路径服务器冲突
出现类似事况先查看catalina的设置
解决方法 不要设置catalina变量
Tomcat目录结构
bin--存放启动和关闭Tomcat的脚本文件
conf--存放Tomcat服务器的各种配置文件
lib--存放Tomcat服务器的支撑jar包
logs--存放Tomcat的日志文件
temp--存放Tomcat运行时产生的临时文件
webapps--web应用所在目录,即供外界访问的web资源的存放目录
work--Tomcat的工作目录
在WEB服务器中安装WEB项目
1.WEB项目通常也称之为WEB应用,或WEB应用程序.
2.通常开发人员开发好一个WEB项目后,这个WEB项目需要放在WEB服务器的WEBAPPS目录下
WEB程序的目录结构
webapps
Mail目录(存放静态)---web应用目录
HTML文件 WEB-INF目录
JSP文件
配置虚拟目录
1.映射虚拟目录也可理解为通知WEB服务器管理这个项目,以供外界访问
2.对Tomcat6而言,它会自动管理其webapps目录下放置的所有目录(web项目),并把它们映射成虚拟目录,所以tomcat6的webapps目录下安装的web项目可以被外界直接访问.
3.若用户不想把项目放到webapps目录中,而想让tomcat服务器管理,以便外界访问
则如下:
<Context path="/icast" docBase="c:/app">
service.bat中配置
在host元素里面配置一个context,即告诉web服务器
<Context path="/itcast" docBase="c:/abc"/>
将C盘中的abc映射到虚拟目录itcast
Context表示上下文(WEB应用)
查看tomcat关于context元素的文档
docBase:指定web应用程序的文档基目录或者WAR文件的路径名.可以指定目录的或WAR文件的绝对路径名,也可以指定相对于Host元素的appBase目录的路径名.该属性是必需的.
path:指定WEB应用程序的上下文路径.在一个特定的虚拟主机中,所有的上下文路径都必须是唯一的.如果指定一个上下文路径为空字符串"",则定义了这个虚拟主机的WEB应用程序,负责处理所有的没有分配给其他WEB应用程序的请求.
reloadable 自动加载更新后的文件.如果设置为ture,Tomcat服务器在运行时,会监视WEB-INF/classer和WEB-INF/lib目录下类的改变,如果发现有类被更新,Tomcat服务器将自动重新加载该web应用程序。建议在产品发布时不使用,该属性的默认值是false.
unpackWAR 如果为true,Tomcat在运行Web应用程序前将展开所有压缩的Web应用程序.默认值是true.
打JAR包
jar -cvf jar名 目录名
缺省WEB项目
在server.xml中配置缺省
<Context path"/" docBase="c:/abc"/>
web.xml文件
1.Web.xml文件为web应用的配置文件,它必须放在web应用目录/WEB-INF目录下.
2.Web.xml文件用于对web应用下的web资源进行配置。
3举例:通过web.xml文件配置网站首页。
WEB-INF--web.xml
是WEB项目里面WEB资源的配置文件
进入web.xml
抄conf--web.xml
<?xml version="1.0" encoding="ISO-8859-1">
<web-app>
配置主页
<welcome-file>2.html</welcome-file>
</web-app>
在一台WEB服务器中配置多个网站
1.在一台WEB服务器中配置多个网站的过程称之为配置虚拟主机,配置虚拟主机可以实现在一台WEB服务器上放多个网站.
2.如需在WEB服务器中创建WEB站点,需使用Host元素进行配置,例:
<Host name="site1" appBase="c:/app"></Host>
虚拟映射
<Context path="/news" docBase="c:/sina/news"/>
缺省映射
<Context path="" docBase="c:/sina/news"/>
3.配置的主机(网站)要相被外部访问,必须在DNS服务器或windows系统中注册.
缺省虚拟主机
一台服务器中只能指定一个缺省虚拟主机
appBase指定的目录是网站的根目录
配置https连接器
keytool-genkey-alias (取的别名)tomcat-keyalg RSA(算法)
生成数字证书(公钥私钥加密)
WEB开发的相关知识
1.B/S架构的优点:
1.1程序员将程序开发好后,安装到WEB服务器中,客户端只要有浏览器就可以访问程序,不需要安装其它任何软件,极大地方便了程序的部署和实施.
1.2由于用户访问的程序在服务器中,因些改动服务器中的程序,客户端访问得到的就是改动后的程序.方便软件的维护和升级.
2.B/S架构的缺点:
B/S架构唯一的缺点在于:程序结果的显示由客户端浏览器完成,浏览器功能的局限性,就限制了程序结果的示示效果.
HTTP协议
它是TCP/IP协议是一个应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据的过程.
HTTP有两个版本
HTTP 1.0 HTTP1.1
区别
1.在HTTP1.0协议中,客户端与WEB服务器建立连接后,只能获得一个WEB资源
2.HTTP1.1协议,允许客户端与WEB服务器建立连接后,在一个连接上获取多个WEB资源.
HTTP请求
一个完整的HTTP请求包括:
一个请求行,若干消息头,以及实体内容,其中的一些消息头和实体内容都是可选的,消息头和实体内容之间要用空行隔开
1.请求行 用于描述客户端的请求方式,请求的资源名称,以及使用的HTTP协议版本号
2.消息头用于描述客户端请求哪台主机,以及客端的一些环境信息等
请求行的细节
请求行中的GET称之为请求方式,请求有:
POST GET
不管POST 或GET,都用于向服务器请求某个WEB资源,这两种方区的区别主要表现在数据传递上,客户端通过这两种方式都可以带一些数据给服务器.
1.如请求方式为GET方式,则可以在请法语的URL地址后以?的形式带上交给服务器的数据,多个数据之间以&进行分隔
重点:GET方式的特点:在URL地址后附带的参数是有限制其数据容量不能超过1K.
POST方式的特点:传递的数据无限制
第一次打开浏览器时,浏览器默认是以GET方式提交的.
消息头
Accept:通知服务器浏览器所支持的数据类型
Accept-Charset:通知服务器浏览器所支持的字符集
Accept-Encoding:通知服务器浏览器所支持的数据解压算法.
Accept-Language:通知服务器客户端的语言环境.
Host:通知服务器,浏览器访问服务器上的哪台主机.
If-Modified-Since:告诉服务器,缓存网页的时间.
Referer:告诉服务器浏览器是从哪个网页来的(用于防盗链)
User-Agent:告诉服务器,浏览器的版本
Cookie
Connection:close(访问完网站后断开连接)/Keep-Alive(访问完后不断开连接)
HTTP响应
一个HTTP响应代表服务器向客户端回送的数据,它包括;
一个状态行,若干消息头,以及实体内容,其中的一些消息头和实体内容都是可选的,消息头
响应状态码:
100-199:表示成功接收请求,要求客户端继续提交下一次请求才能完成整个处理过程
200-299:表示成功接收请求并已完成整个处理过程,常用200
300-399:为完成请求,客户需进一步细化请求.例如,请求的资源已经移动一个新地址,常用302 307 和304(找缓存)
400-499:客户端的请求有错误,常用404(不存在的资源)
500-599:服务器端出现错误,常用500
0**:未被始化
1**:请求收到,继续处理
2**:操作成功收到,分析、接受
3**:完成此请求必须进一步处理
4**:请求包含一个错误语法或不能完成
5**:服务器执行一个完全有效请求失败
100——客户必须继续发出请求
101——客户要求服务器根据请求转换HTTP协议版本
200——交易成功
201——提示知道新文件的URL
202——接受和处理、但处理未完成
203——返回信息不确定或不完整
204——请求收到,但返回信息为空
205——服务器完成了请求,用户代理必须复位当前已经浏览过的文件
206——服务器已经完成了部分用户的GET请求
300——请求的资源可在多处得到
301——删除请求数据
302——在其他地址发现了请求数据
303——建议客户访问其他URL或访问方式
304——客户端已经执行了GET,但文件未变化
305——请求的资源必须从服务器指定的地址得到
306——前一版本HTTP中使用的代码,现行版本中不再使用
307——申明请求的资源临时性删除
400——错误请求,如语法错误
401——请求授权失败
402——保留有效ChargeTo头响应
403——请求不允许
404——没有发现文件、查询或URl
405——用户在Request-Line字段定义的方法不允许
406——根据用户发送的Accept拖,请求资源不可访问
407——类似401,用户必须首先在代理服务器上得到授权
408——客户端没有在用户指定的饿时间内完成请求
409——对当前资源状态,请求不能完成
410——服务器上不再有此资源且无进一步的参考地址
411——服务器拒绝用户定义的Content-Length属性请求
412——一个或多个请求头字段在当前请求中错误
413——请求的资源大于服务器允许的大小
414——请求的资源URL长于服务器允许的长度
415——请求资源不支持请求项目格式
416——请求中包含Range请求头字段,在当前请求资源范围内没有range指示值,请求也不包含If-Range请求头字段
417——服务器不满足请求Expect头字段指定的期望值,如果是代理服务器,可能是下一级服务器不能满足请求
500——服务器产生内部错误
501——服务器不支持请求的函数
502——服务器暂时不可用,有时是为了防止发生系统过载
503——服务器过载或暂停维修
504——关口过载,服务器使用另一个关口或服务来响应用户,等待时间设定值较长
505——服务器不支持或拒绝支请求头中指定的HTTP版本
响应头
状态行用于描述服务器对请求的处理结果.
消息头用于描述服务器的基本信息,以及数据的描述,服务器通过这些数据的描述信息,可以通知客户端如何处理等一会儿它回送的数据.
实体内容代表服务器向客户端回送的数据
Location:用于通知浏览器去找哪个资源(经常和302状态码和用)
Server:服务器是什么类型的服务器
Content-Encoding:用于告诉浏览器压缩类型.
流行的压缩算法GZIP
JAVA.API.GZIPOUT 压缩流
String content="abcd";
//把压缩数据写到一个缓冲中
ByteArrayOutputStream bout-new ByteArrayOutputStream();
GZIPOutputStream gout=new GZIPOutputStream();
gout.write(content.getBytes());
gout.close();
//从缓冲流中得到压缩后的字节数组
byte result[]=bout.toByteArray();
response.setHeader("Content-Encoding","gzip");
response.setHeader("Content-Length",result.length+"");
//得到与浏览器相关的输出流
OutputStream out=response.getOutputStream();
//把压缩后的字节数组写给浏览器
out.write(result);
压缩算法 数据越小 压缩后越大
Content-Length:用于告诉浏览器,服务器回送的数据大小
Content-Type:服务器回送数据的类型
Last-Modified:用于告诉浏览器,数据的最后更新时间.(用于缓存用的)
Refresh:用于告诉浏览器,刷新回送的数据.
Content-Disposition:通知浏览器,以下载的方法打开回送的数据.
Expires:-1 通知浏览器回送数据的缓存多长时间,如果值为0或为负数的话,就是不缓存.
Pragma no-cache:通知浏览器不要缓存数据.
Cache-Control:no-cache 通各浏览器不要缓存数据
通用信息头
通用信息头指既能用于请求,又能用于响应的一些消息头.