服务器原理和协议&Tomcat&Http协议
服务器原理和协议学习的思路:Servler Jsp 数据库1, Javaweb 服务器原理 HTTP协议2, 编程的API, 来学,应该先学Servlet ,比JSP 而言,更复杂,倾向底
服务器原理和协议
学习的思路:
Servler Jsp 数据库
1, Javaweb 服务器原理 HTTP协议
2, 编程的API, 来学,应该先学Servlet ,比JSP 而言,更复杂,倾向底层原理,JSP 主要是页面显示
3, Servlet 和Jsp 之间加上数据库课程,(Mysql Oracle),数据库语言Sql Java数据库编程JDBC
B/S 和C/S 的区别
Browser/Server 是一直特殊C/S结构,客户端采用浏览器实现:基于web 系统微博,网页游戏,云计算 Google Client/Server 客户端必须单独安装腾讯QQ 微软
WEB 系统是怎样通信的?
Web browser(客户端) →(客户端请求包含要访问的资源路径和名称)request →Server(服务端) →(服务端可以将页面、图片、媒体等很多的资源内容发送给客户端)response 如果客户端的请求没有得到正确处理,服务端的响应会包含一个错误的状态码返回
什么是WEB 应用?
Web 应用就是基于HTTP 协议在B/S结果中的服务端的应用程序,它接收客户端浏览器的请求并返回应答结果(通常是以页面的形式返回)
WEB 应用部分的组成:
什么是静态资源,什么是动态资源?
静态资源的数据是固定的
动态资源的数据随着程序的执行而改变的
静态资源技术:Html Css JavaScript -→ DHTML Dynamic Html
动态资源技术:ASP/PHP/JSP 用来开发网站
ASP →被 .net 取代,.net 代表的是很多微软技术综合(VB 、ASP 、C#)→开发网站(工具, 到运行平台都是收费的)俗称为网站开发技术贵族
PHP →网站开发第一技术,民间开发的,开源,免费–>开发网站(免费开源)网站开发 技术平民
JSP →开发成本太高(必须先学java ),效率太低,服务器性能,服务器少
JAVA →优点:开发企业级应用 ERP/CRM/OA 规范性强、更加标准
B/S 系统基于请求–>响应模型注意:必须现有请求才有响应,请求和响应是成对出现的; 访问网站基于一个协议的
输入网站----- 唯一域名----映射IP ----- 互联网一台服务器
服务器想被外界访问,必须开发端口
URL 格式:
协议:采用哪种协议进行进行本次网路访问;
JavaWeb 应用所包含的内容:
Sun 对JavaWeb 应用定义如下,Java Web 应用是由一组Servlet 、HTML 页、JSP 页、工
,具类以及其他可以绑定的资源构成,它可以在各种供应商提供的实现Servlet 规范的servlet 容器中运行
JAVAWeb 常用服务器
WebLogic(Oracle):收费,全面支持JavaEE 规范(Servlet,Jsp,Xml,EJb,Jms ) Oracle数据库
Websphere(IBM):收费,全面支持JavaEE 规范,
JBOSS :EJB 服务器,免费
Servlet/JSP和EJB 之间的关系:
Servlet/JSP用于解决请求响应数据,页面显示,EJB 用于复杂业务流程,数据处理 Tomcat :Apache 公司,jdkarta 子项目,免费的,只支持Servlet 和Jsp 轻量级,中小规模软件开发

Servlet 容器的概念:
Servlet 容器为JavaWeb 应用提供了运行时环境,它负责管理Servlet 和JSP 的生命周期,以及管理他们的共享数据
Servlet 容器也称为JavaWeb 应用容器,或者Servlet/JSP容器
本机IP 默认:127.0.0.1或者http://localhost配置hosts
JavaEE 版本和Jdk 区别?
JavaEE 是技术规范
JDK 是运行环境
Tomcat 目录结构
bin 运行程序(存放启动和关闭Tomcat 的脚本文件)
conf 配置文件(存放Tomcat 服务器的各种配置文件)
lib tomcat 需要类库(存放Tomcat 服务器和所有web 应用程序需要访问的jar 文件) Logs tomcat日志(存放Tomcat 的日志文件)
temp (存放Tomcat 运行时产生的临时文件)
Webapps 网站部署目录(当发布web 应用程序时,通常把web 应用程序的目录及文件放
到这个目录下)
Work 存放JSP 编译后文件(Tomcat 将JSP 生成的Servlet 源文件和字节码文件放到这个目
录下)
Tomcat 启动异常
1, 没有配置JAVA_Home:
Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
At least one of these environment variable is needed to run this program
,Doc 命令行最后加Pause 是暂停的意思
2,配置Java_Home配置值的时候多写;
3, 将Java_Home配置为JRE 路径
The JAVA_HOME environment variable is not defined correctly
This environment variable is needed to run this program NB: JAVA_HOME should point to a JDK not a JRE
查看日志要看当天最大的那个文件
端口占用启动问题:
发现Tomcat 端口被占用(查看logs )→用Fport 找到占用端口进程名称→用任务管理器杀
掉进程
8080是Tomcat 默认端口,Oracle Listener
开发中经常将默认端口修改为80 →conf/server.xml
运行Fport.exe 出现下列错误:Program too big to fit in memory
CATALINA_HOME环境变量:用来指定默认运行Tomcat 目录位置。不管运行那个Tomcat/bin/stattup.bat,都启动的是CATALINA_HOME配置的Tomcat
Tomcat 配置环境为什么配置JDK 环境
为了编译Servlet 和JSP 所以要配置JDK 目录,如果只是运行Tomcat 的话,只要配置jre 就
可以
在运行中输入services.msc 然后转到服务界面,在这里可以将占用8080端口这个程序禁止 WEB 应用程序
指供浏览器访问的程序,通常也简称为web 应用
一个web 应用由多个静态web 资源和动态web 资源组成,如
Html 、css 、js 文件
JSP 文件、Java 程序、支持jar 包、配置文件等,
组成web 应用的这些文件通常我们会使用一个目录组织,这个目录称为web 引用所在目录(网站的根目录)
Web 应用开发的好处,若想供外界访问,需要把web 应用所在目录交给web 服务器管理,
这个过程称之为虚拟目录的映射。
虚拟目录的映射方式(如何部署WEB 程序)
1, Tomcat/conf/context.xml里面的配置信息,将会用于所有的web 应用 2, Tomcat/conf/为每一个主机建立一个context.xml 用于所有该主机web 应用引擎, 主机部署web 应用三种方式
a) 配置server.xml 修改 在的根目录”> b) 配置$CATALINA_HOME/conf/[enginename]/[hostname]/ directory 在conf 下新建 Catalina ,在Catalina 里面新建localhost ,在localhost 中新建xx.xml c) 将整个web 应用目录拷贝到webapps 里面 缺省web 应用。 访问IP ,直接打开默认web 应用 ----→path 为Root 1, webapps 下面的ROOT 目录 2, 配置server.xml 用 3, 在conf/Catalina/localhost配置ROOT.xml 通过WAR 方式发布部署web 应用 War 文件是zip 格式。 先压缩成zip 格式,然后在将扩展名改成war WEB 应用的组成结构:不同类型的文件有严格的存放规则,否则会报错。 静态资源直接存放在网站根目录 动态放到WEB-INF 下 WEB-INT 的目录结构(不可以直接访问,) Classes 存放字节码文件 Lib 存放jar 包 Web.xml 存放配置文件(配置欢迎界面:找到conf 目录下的web.xml 文件进行简单修改) xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee version="2.5"> Mail |-→html 、 jsp 、css 、js 文件等 |-- |→WEB-INF 目录 |-- |--→classes 目录→(Java类) |-- |--→lib 目录→(Java类运行所需的jar 包) |-- |--→web.xml 文件→(web应用的配置文件) 配置虚拟主机 指的是在一台服务器中放置多个站点 如何架设一个站点? 1, 开发站点代码 2, 一台服务器(购买服务器或者,服务器托管。购买服务器空间,虚拟主机空间)。 →IP 地址 3, 购买域名 配置Tomcat 虚拟主机 1. 配置server.xml 添加 元素 2、配置hosts 文件将目标域名映射本机(WINDOWSSystem32driversetchosts) 用ping 网址在doc 命令行测试hosts 文件是否修改成功 3、提供默认缺省虚拟目录(网站) ---- ROOT 配置缺省虚拟主机 什么是缺省:只提供了IP 没有域名,所以只能访问默认的主机。 有什么用? ---- 当服务器DNS 瘫痪时,只有缺省虚拟主机能被访问! HTTP 协议 超文本传输协议 OSI 七层协议的分层 TCP/IP协议分层 TCP 传输层协议,IP 网络层协议 三次握手 发送方:你能收到我的数据吗? 接收方:我能收到,你能收到吗? 发送方:我也能收到 TCP 不丢包的数据传输 HTTP 请求: 1, 请求行,包括三部分1) 请求方式(GET/SET);2) 请求资源路径;3) 协议版本 2, 消息头 3, 消息体 GET 和POST 的区别? HTTP 请求头细节: HTTP 响应; 1, 响应行 a) 协议版本, b) 状态码, i. 1XX ;请求收到,需要继续处理 ii. 2XX ;请求处理完成 iii. 3XX ;重定向 iv. 4XX ;客户端错误,错误的语法或者不可能完成,服务器无法处理(页面找不 到) v. 5XX ;服务器错误,服务器内部错误,空指针、角标越界 200请求处理成功 302重定向,A 找B 借钱,B 告诉A 去找C 借去, 304和307 if-modified-since-modified 服务器通知客户段查看本地缓存。A 找B 借钱, B 说你自己有 404页面找不到错误 A 找B 借钱,B 说没有 500服务器内部异常 c) 状态信息 2, 头信息 Location: http://www.it315.org/index.jsp 结合302状态码使用,服务器通知客户端重定向→常见应用,未登录,自动跳转到 登录页面 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→表示1秒后,跳转到www.it315.org 自动刷新功能,案例:用户在登录后,显示5秒后自动跳转回主页 Content-Disposition: attachment; filename=aaa.zip 文件以附件格式下载 Set-Cookie:SS=Q0=5Lb_nQ; path=/search Expires: -1过期时间 Cache-Control: no-cache 不缓存 Pragma: no-cache 不缓存 以上3个头信息资源,用于通知客户端,响应数据不缓存,三个头一起使用是为了满足跨浏览器 Connection: close/Keep-Alive Date: Tue, 11 Jul 2000 18:23:51 GMT 3, 响应体 Socket 编程

