Tomcat
Web应用的演变
C/S架构介绍
**客户端-服务器,即Client-Server([C/S])结构。**C/S结构通常采取两层结构。服务器负责数据的管理,客户机负责完成与用户的交互任务。
客户机通过局域网与服务器相连,接受用户的请求,并通过网络向服务器提出请求,对数据库进行操作。服务器接受客户机的请求,将数据提交给客户机,客户机将数据进行计算并将结果呈现给用户。服务器还要提供完善安全保护及对数据完整性的处理等操作,并允许多个客户机同时访问服务器,这就对服务器的硬件处理数据能力提出了很高的要求。
在C/S结构中,应用程序分为两部分:服务器部分和客户机部分。服务器部分是多个用户共享的信息与功能,执行后台服务,如控制共享数据库的操作等;客户机部分为用户所专有,负责执行前台功能,在出错提示、在线帮助等方面都有强大的功能,并且可以在子程序间自由切换。
C/S结构在技术上已经很成熟,它的主要特点是交互性强、具有安全的存取模式、响应速度快、利于处理大量数据。但是C/S结构缺少通用性,系统维护、升级需要重新设计和开发,增加了维护和管理的难度,进一步的数据拓展困难较多,所以C/S结构只限于小型的局域网
B/S架构介绍
随着网络技术的发展,特别随着Web技术的不断成熟,B/S 这种软件体系结构出现了。B/S(Browser/Server)架构也被称为浏览器/服务器体系结构,这种体系结构可以理解为是对 C/S 体系结构的改变和促进。由于网络的快速发展,B/S 结构的功能越来越强大。这种结构可以进行信息分布式处理,可以有效降低资源成本,提高设计的系统性能**。B/S 架构是有更广的应用范围,在处理模式上大大简化了客户端,用户只需安装[浏览器])即可**,而将应用逻辑集中在服务器和中间件上,可以提高数据处理性能。在软件的通用性上,B/S 架构的客户端具有更好的通用性,对应用环境的依赖性较小,同时因为客户端使用浏览器,在开发维护上更加便利,可以减少系统开发和维护的成本。面向未来,连排级单位可通过掌上电脑([安卓系统]),在训练场、演习场等环境下访问并使用该系统。
B/S 的特征和基本结构:在 B/S 结构中,每个节点都分布在网络上,这些网络节点可以分为浏览器端、服务器端和中间件,通过它们之间的链接和交互来完成系统的功能任务。三个层次的划分是从逻辑上分的,在实际应用中多根据实际物理网络进行不同的物理划分。
浏览器端:即用户使用的浏览器,是用户操作系统的接口,用户通过浏览器界面向服务器端提出请求,并对服务器端返回的结果进行处理并展示,通过界面可以将系统的逻辑功能更好的表现出来。
服务器端:提供数据服务,操作数据,然后把结果返回中间层,结果显示在系统界面上。
中间件:这是运行在浏览器和服务器之间的。这层主要完成系统逻辑,实现具体的功能,接受用户的请求并把这些请求传送给服务器,然后将服务器的结果返回给用户,浏览器端和服务器端需要交互的信息是通过中间件完成的。

Web服务器简介
Web服务器是运行及发布Web应用的容器,只有将开发的Web项目放置到该容器中,才能使网络中的所有用户通过浏览器进行访问。开发Java Web应用所采用的服务器主要是与JSP/Servlet兼容的Web服务器,比较常用的有Tomcat、Resin、JBoss、WebSphere 和 WebLogic 等

Tomcat 服务器
目前最为流行的Tomcat服务器是Apache-Jarkarta开源项目中的一个子项目,是一个小型、轻量级的支持JSP和Servlet 技术的Web服务器,也是初学者学习开发JSP应用的首选

Resin 服务器
Resin是Caucho公司的产品,是一个非常流行的支持Servlet和JSP的服务器,速度非常快。Resin本身包含了一个支持HTML的Web服务器,这使它不仅可以显示动态内容,而且显示静态内容的能力也毫不逊色,因此许多网站都是使用Resin服务器构建

JBoss服务器
JBoss是一个种遵从JavaEE规范的、开放源代码的、纯Java的EJB服务器,对于J2EE有很好的支持。JBoss采用JML API实现软件模块的集成与管理,其核心服务又是提供EJB服务器,不包含Servlet和JSP的Web容器,不过它可以和Tomcat完美结合

WebSphere 服务器
WebSphere是IBM公司的产品,可进一步细分为 WebSphere Performance Pack、Cache Manager 和WebSphere Application Server等系列,其中WebSphere Application Server 是基于Java 的应用环境,可以运行于 Sun Solaris、Windows NT 等多种操作系统平台,用于建立、部署和管理Internet和Intranet Web应用程序。

WebLogic 服务器
WebLogic 是BEA公司的产品(现在已经被Oracle收购),可进一步细分为 WebLogic Server、WebLogic Enterprise 和 WebLogic Portal 等系列,其中 WebLogic Server 的功能特别强大。WebLogic 支持企业级的、多层次的和完全分布式的Web应用,并且服务器的配置简单、界面友好。对于那些正在寻求能够提供Java平台所拥有的一切应用服务器的用户来说,WebLogic是一个十分理想的选择
手动实现服务器代码【简单版本】:
原理就是用过ServerSocket监听一个固定端口,在通过web浏览器访问自己本机IP地址并使用这个端口
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
/**
* 自定义服务器
* @author wgy
*
*/
public class MyServer {
public static void main(String[] args) {
try {
//1创建侦听套接字
ServerSocket listener=new ServerSocket(8888);
//2接收客户端请求
System.out.println("客户端已启动....");
Socket socket=listener.accept();
//3获取输出流
OutputStream os=socket.getOutputStream();
//4创建FileInputStream
FileInputStream fis=new FileInputStream("当前工程下的.html文件");
byte[] buf=new byte[1024*4];
int len=0;
while((len=fis.read(buf))!=-1) {
os.write(buf,0,len);
os.flush();
}
//5关闭
fis.close();
os.close();
socket.close();
listener.close();
System.out.println("服务器执行完毕...");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Tomcat服务器搭建
Tomcat服务器介绍
Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用[服务器],在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选,目前Tomcat最新版本为9.0。
Tomcat安装
Tomcat压缩版,安装特别方便,只需要右键解压即可!
Tomcat服务器的安装
- 官网下载(http://tomcat.apache.org/),Tomcat8.0|8.5解压缩版本
- 解压到一个没有特殊符号的目录中(一般纯英文即可)
- 进入到解压的目录下找到bin\startup.bat双击启动即可
**注意:**不建议将服务器软件放在磁盘层次很多的文件夹中!
不建议放在中文路径下!
tomcat安装需要配置JAVA_HOME环境变量(有JRE亦可)
第一次启动服务器建议使用命名行打开,因为可以提示错误信息!
Tomcat目录介绍
Bin:该目录下是存放二进制可执行文件,只要是安装或压缩版本都会在目录下出现两个exe文件:
tomcat8.exe【在控制台下启动tomcat】 tomcat8w.exe【弹出GUI窗口启动Tomcat】
但是需要配置JDK和JRE环境,一般直接启动我们使用startup.bat 停止tomcat一定要执行shutdawn.bat
PS: 加入tomcat出现闪退,可以对bat进行编辑,在代码中end之前 添加【pause】保存执行,他就会出现报错界面
conf: 这个是一个非常重要的目录,这个目录下有四个重要的文件
server.xml 配置整个服务器信息使用,这个文件可以修改端口号等操作
web.xml 部署描述文件,这个文件中注册很多MIME(文档)类型,这个写MIME类型是客户端和服务器说明文档,如果用户请求一个HTML页面,那么服务器会告诉客户端浏览器响应的就是这个文件【text/html】,着就是这个类型做到使用
context.xml 对应所有应用的统一配置,通常不会修改
tomcat-users.xml存储tomcat用户文件,这里脑村是tomcat用户名和密码
lib 这个目录是Tomcat服务器使用到一些jar文件。tomcat都是依赖你这个jar文件执行
logs 这个目录中存储都是日志文件,主要是记录日常信息
temp 存放tomcat临时文件,这个目录下东西在tomcat停止会删除
webapps【重要】 存放的是web项目,我们可以将项目,部署到这个文件中进行执行,tomcat也提供了一些自己案例一共展示,ROOT文件是一个特殊项目,这个你文件不会再web页面中展示。examples它就是展示项目
work 运行时生成的文件夹,最终运行文件都在这里存储,通过webapps文件夹部署项目,最终生成都会存储到work文件夹中,这个文件可以删除,只要再次执行就会生成,
tomcat会用过JSP生成Java文件,然后编译Java文件生成和class,生成java和class文件都会存放这个目录中
启动tomcat服务器
tomcat安装文件/bin/startup.bat 启动程序 /bin/shutdown.bat 停止程序
如果tomcat启动的cmd界面乱码可以将 conf目录下logging.properties文件中
这行代码删除 java.util.logging.ConsoleHandler.encoding = UTF-8
或修改为 java.util.logging.ConsoleHandler.encoding = GBK
ps:这行代码说明tomcat控制台打印是UTF-8编码集
测试
打开浏览器!输入 http://localhost:8080
如果出现以下界面证明成功!

Tomcat其他配置:
1 修改端口号
可以在conf目录 server.xml文件中将por=8080 修改为其他端口但是不建议
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
通过URL访问服务器静态页面
PS:在深入的学习后,我们会将项目打包成war包,再将war部署到Web服务器上
现阶段我们打开HTML文件的时候,展示是下面地址

这个地址是一个file协议,file协议可以告诉浏览器去这个协议访问后面的路径,解析展示到浏览器即可
我们正常访问网站的时候,是以下面这种协议完成后,我们是否可以以这样方式进行进行访问:

可定可以,就需要将我们web项目部署到web服务其中【tomcat】
www.baidu.com 他是一个网站域名 ,我们在学习TCP的时候,曾经解析过这个网址得到时候一个IP地址
网站域名的作用是方便外界访问记忆这个地址,而在程序猿(媛)眼中其实就是一个IP地址
所以,需要访问我们自己写页面那么就需要提供一个协议并且加上一个【地址资源】才可以进行访问
如果写这个访问路径—》【http://ip:port/工程名/资源的名称】
这里的不同点就在于我们使用是【http协议】

部署项目
ps:现在是手动部署,以后可以智能
方式1:
步骤1:在webapps文件夹中创建一个文件夹【文件夹的名字最好是英文】
步骤2:把【静态资源】(图片、文本、网页)复制到这个这个文件夹
步骤3:通过浏览器访问统一资源定位符【URL】即可以访问到资源
例如:http://localhost:8080/文件夹名字/网页名称
ps:步骤3执行时候必须启动tomcat
方式2:
步骤1.先找到Tomcat目录中conf目录下Catalina\localhost目录下
步骤2:在这个目录下创建一个 xml配置文件,名字可以随意【你工程叫什么这个文件名就叫什么】
ps: 工程叫做bookstores 这个文件就叫 bookstores.xml
步骤3:在这个文件夹中添加如下操作
<Context path="/bookstores" docBase="C:\apache-tomcat-8.5.53\webapps\bookstores"/>
<!--Context 表示一个工程上文path表示工程访问的路径-->
<!--docBase 表示你工程目录在什么位置【工程存储在磁盘的位置-->
访问: http://ip:port/bookstores 就相当于访问C:\apache-tomcat-8.5.53\webapps\bookstores地址的目录
ps:这样做有一个好处,就是项目并不需要部署到webapps,在磁盘任意位置都可以【不要有中文】
Servlet应用
JavaWeb概念
JavaWeb是指,所有通过Java语言编写可以通过浏览器访问的程序总称,叫做JavaWeb,
JavaWeb是基于**【请求和响应】**来开发的
**什么请求?request【请求】**是之客户给服务器发送数据
**什么响应?response【响应】**是之服务器给客户端回传数据
请求和响应的关系? 请求和响应是成对出现,有请求就有响应
客户端(浏览器 ) -----------》客户端给服务器发送数据叫做请求【request】 -----------》服务器(tomcat)
服务器(tomcat) -----------》服务器给客户端回传数据叫做响应【response】 ----------》客户端(浏览器 )
web资源的分类
web资源按时限的技术和呈现的效果的不同,就分为静态和动态资源两种
静态资源: html、css、js、txt、音频、视频、图片
动态资源: JSP页面 、 servlet程序
HTTP协议
2.1 什么是HTTP协议
什么是协议?
协议是指双方,或多方,相互约定好,大家都需要遵守的规则,叫协议。
(HTTP,HyperText Transfer Protocol)超文本传输协议是互联网上应用最为广泛的一种网络协议,是一个基于请求与响应模式的、无状态的、应用层的协议,常基于TCP的连接方式。
ps:
HTTP:现在有两种 一种是http 另外一种是https
在以前https 只有 金融机构使用
http和https是web的传输协议,http是明文传送,数据没加密的。也就是说,局域道网里面谁都能看到你在网页上发送的数据,比如说邮箱密码。但是https是加密传送,别人就算能看到数据,也是加密的。
而现在基本上都在开始使用了,http现在协议有 HTTP1.0 、1.1(两者是共存关系)和最新的2.0(还没有普及,而且非常庞大复杂)
http协议基于请求与响应模式: 一个请求有一个相应
无状态的: 登录页面的时候都会进行状态保存,主要是为了下一次方便登录,但是这个保存在本地而非服务器端
协议是指双方,或多方,相互约定好,大家都需要遵守的规则,叫协议。
当浏览器发送请求给服务器的时候,服务器响应,但是同一个浏览器再发送请求给服务器的时候,他会响应,但是他不知道你就是刚才那个浏览器,简单地说,就是服务器不会去记得你,所以是无状态协议。
既然无法得知是哪个浏览器那数据怎么办?就需要使用到cookie和session了
应用层的协议,常基于TCP的连接方式: 满足网络的七层协议


HTTP协议的主要特点如下:
1.支持客户端(浏览器)/服务器模式。即B/S架构
2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
3.灵活:HTTP允许传输任意类型的数据对象。传输的类型由Content-Type加以标记。
4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
ps:如果要浏览器中查看页面展示一些请求和响应信息,可以使用F12进入浏览器调试模式
HTTP1.0规范
若请求的有N个资源,就需要建N次连接,发起N次请求,接收N次响应,并且需要关闭N次连接
每次请求的之间都要建立单独的连接,【请求和响应】响应完毕之后关闭连接
缺点: 每次请求一个资源都要单独的建立新的连接,请求完毕之后关闭
建议:能在一次连接,多次请求,多次响应,响应完毕之后在关闭
HTTP1.1规范
能在一次连接,多次请求,多次响应,响应完毕之后在关闭
特点: 在一个TCP连接上可以传送多个HTTP请求和响应,多个请求和响应过程可以重叠进行增加了更多的请求头和响应头
HTTP协议到底约束了
1.约束了浏览器以何种形式向服务器发送数据
2.约束了服务器应该以何种格式来接收客户端发送数据
3.约束了服务器应该以何种格式来反馈数据给浏览器
4.约束了浏览器应该以何种格式来接收服务器反馈的信息
所谓HTTP协议,就是指,客户端和服务器之间通信时,发送的数据要遵守规则,就叫做HTTP洗衣【HTTP协议中数据也叫做(报文)】
1452

被折叠的 条评论
为什么被折叠?



