一、tomcat&http协议
1.1 企业级开发简介
(1)JavaEE规范
- JavaEE规范是J2EE规范的新名称,早期被称为J2EE规范,其全称是Java 2 Platform Enterpris Edition,它是由SUN公司领导的、各厂家共同制定的并得到广泛认可的工业标准(JCP组织成员)。之所以改名为javaEE,目的是让大家清楚J2EE只是Java企业应用。在2014年底中国软件技术大会Ioc微容器(也就是jdon框架的实现原理)演讲中指出:我们需要一个跨J2EE/WEB/EJB的微容器,保护我们的业务核心组件,以延续它的生命力,而不是依赖J2SE/J2EE版本,此次改名,实际也反映了业界这种共同心声。
- JavaEE规范是很多Java开发技术的总称,这些技术规范都是沿用自J2EE的。一共包括了13种技术规范,例如:jsp、servlet,jndi,jaxp,jdbc,jni,jaxb,jmf,jta,jpa,EJB等。
- 其中,jcp组织的全称是Java community process,它是一个开放的国际组织,主要由Java开发者以及被授权者组成,职能是发展和更新。成立于1998年,官网是:JCP
- JavaEE的版本是延续了J2EE的版本,但是没有继续采用其命名的规则,J2EE的版本从1.0开始到1.4结束,而JavaEE版本是从JavaEE 5开始,目前最新的版本是JavaEE 8
详情请参考:JavaEE 8规范概览(https://www.oracle.com/technetwork/cn/java/javaee/overview/index.html)
(2)web概述
web在英文当中的含义是网状物,网络。在计算机领域,它通常指的是后者,即网络。向我们前面接触的www,它是由三个单词组成的,即world wide web,中文含义是万维网。而我们前面所学习的HTML,CSS和JS的参考文档《W3School全套教程》中的w3c就是万维网联盟。他们的出现都是为了让我们在网络的世界中获取资源,这些资源的存放之处,我们称之为网站。我们通过输入网站的地址(即网址),就可以访问网站中的资源。在网上我们能访问到的内容全是资源(不区分局域网还是广域网)。只不过,不同类型的资源展示的效果不一样。
首先,我们先来介绍一下资源的分类,分为静态资源和动态资源,其中:
- 静态资源是:网站中提供给人们展示的资源是一成不变的,也就是说不同的人或者在不同时期看到的内容都是一样的。例如:我们看到的新闻,网站的使用手册,网站的功能说明文档等等。而作为开发者,我们所编写的html、css、js、多媒体和图片等都可以称为静态资源。
- 动态资源是:网站中提供给人们展示的资源是由程序产生的。在不同时间或者不同的人由于不同的身份,所看到的内容是不相同的 。例如:我们在12306上购买火车票,火车票的余票数由于时间的变化会逐渐减少,直到最后没有余票。还有我们在csdn上下载资料,只有登录成功后,且积分足够是才能下载。否则就不能下载等等,这就是访客身份和会员身份的区别导致的结果不同。作为开发人员,我们编写的jsp、servlet、php、asp等等都是动态资源。
(3)系统结构
基础结构划分:
- C/S结构:它指的是客户端—服务器的方式。其中C代表的是client,S代表的是服务器。C/S结构的系统设计图如下:
- B/S结构:它指的是 浏览器—服务器方式。其中B代表的是Browser(浏览器),S代表的是服务器,B/S结构的系统设计图如下:
技术选型划分
区别
- 硬件环境不同,C/S结构通常是建立在专用的网络上的或者小范围的网络环境上的(即局域网),而且必须要安装客户端。而B/S结构是建立在广域网上的,适应范围强,通常有操作系统和浏览器就行。
- C/S结构比B/S结构更安全,因为用户群相对固定,对信息的保护更强。
- B/S结构维护升级比较简单,而C/S结构维护升级相对困难。
- 优略
- C/S:是能充分发挥客户端PC的处理能力的。很多工作可以在客户端处理后在提交给服务器,对应的优点就是客户端响应速度快
- B/S:总体拥有成本低、维护方便、分布性强、开发简单,可以不用安装任何专门的软件就可以实现在任何地方进行操作,客户端零维护,系统的扩展非常容易,只要有一台能上网的电脑就可以使用。
1.2 tomcat服务器
(1)关于服务器的介绍
- 服务器的概念非常的广泛,它可以指代一台特殊的计算机,一般这种计算机相比普通的计算机运行更快、负载更高、价格更贵、磁盘更大等等。也可以指代用于部署网站的应用。我们这里说的服务器,其实就是web服务器,或者是应用服务器。它本质就是一个软件,一个应用。作用是发布我们的应用(工程),让用户可以通过浏览器访问我们的应用。
- 常见的应用服务器有: | 服务器名称 | 说明 | | —- | —- | | weblogic | 实现了JavaEE规范,重量级的服务器。又称为JavaEE容器 | | websphereAS | 实现了JavaEE规范,重量级的服务器。 | | JBOSSAS | 实现了JavaEE规范,重量级的服务器。免费的 | | tomcat | 实现了jsp、servlet规范,是一个 轻量级的服务器,开源免费的。 |
(2)tomcat的下载与安装
- tomcat官网下载地址:tomcat.apache.org
(3)tomcat各版本所需支持
(4)tomcat目录结构详解
(5)tomcat的基本使用
- 启动与停止
- tomcat服务器的启动文件在二进制文件目录中的startup.bat(window系统)或者startup.sh(linux系统)
- tomcat服务器的停止文件也在二进制文档目录中shutdown.bat(window系统)或者shutdown.sh(Linux系统)
- 启动问题
- 启动一闪而过:没有配置环境变量,配置上Java_home环境变量即可
- Address already in use :JVM_Bind:端口被占用;找到占用该端口的应用,如果占用该端口的应用不重要,使用cmd命令:netstat-a-o 查看pid,在任务管理器中结束此应用;或者修改tomcat目录下的\conf\server.xml文件中的配置,如下图 :
(6)IDEA集成tomcat服务器
- 第一步
- 第二步
- 第三步
- 第四步
(7)Linux系统下安装tomcat
- 下载tomcat
- 上传到Linux系统
- 在crt上使用alt+p,将Windows系统上的软件拖到Linux系统即可(在root目录)
在/usr/local新建一个文件夹tomcat
mkdir /usr/local/tomcat
将tomcat…tar.gz移动到/usr/local/tomcat下
mv apache-tomcat-8.5.32.tar.gz /usr/local/tomcat/
进入/usr/local/tomcat目录,解压tomcat
cd /usr/local/tomcat tar -xvf apache-tomcat-8.5.32.tar.gz
进入/usr/local/tomcat/apache-tomcat-8.5.32/bin目录
cd /usr/local/tomcat/apache-tomcat-8.5.32/bin
启动 tomcat
#方式1: sh startup.sh #方式2: ./startup.sh
修改防火墙规则 ```shell 方式1:service iptables stop 关闭防火墙(不建议); 用到哪一个端口号就放行哪一个(80,8080,3306…)
方式2:放行8080 端口
修改配置文件
cd /etc/sysconfig
vi iptables
复制(yy , p)
-A INPUT -m state —state NEW -m tcp -p tcp —dport 22 -j ACCEPT
改成
-A INPUT -m state —state NEW -m tcp -p tcp —dport 8080 -j ACCEPT
重启加载防火墙或者重启防火墙
service iptables reload
或者
service iptables restart
<a name="AiSoL"></a>
## 1.3 tomcat发布Java web应用
- 方法一:只需要将web工程的目录复制到Tomcat的webapps下即可;
- 方法二:找到Tomcat下的conf目录下:Catalina\localhost\,创建如下xml配置文件
```xml
<!-- context表示一个工程的上下文,path表示一个工程的访问路径;docBase表示的是工程的真实目录 -->
<Context path="\donghuaxiangce" docBase="D:\study\web前端\web\Animation_Album"/>
(1)Javaweb工程的概述
- JavaWeb应用是一个全新的应用种类。这类应用程序指供浏览器访问的程序,通常也简称为web应用。
- 一个web应用由多个静态web资源和动态web资源组成,例如:html、css、js文件,jsp文件、java程序、支持jar包、工程配置文件、图片、音视频等等。
- Web应用开发好后,若想供外界访问,需要把web应用所在目录交给Web服务器管理(Tomcat就是Web服务器之一),这个过程称之为虚似目录的映射。
(2)Javaweb工程应用的目录结构详解
myapp--------------应用名称
1.html
css/css.css
js/demo.js
WEB-INF--------如果有web.xml或者.class文件时,该目录必须存在,且严格区分大小写。
--------该目录下的资源,客户端是无法直接访问的。
--------目录中内容如下:
classes目录----------------web应用的class文件(加载顺序:我们的class,lib目录中的jar包,tomcat的lib目录中的jar包。优先级依次降低)
lib目录--------------------web应用所需的jar包(tomcat的lib目录下jar为所有应用共享)
web.xml-------------------web应用的主配置文件
- Javaweb项目的创建
- 第一步
- 第二步
- 第三步
- 第四步
(3)Javaweb应用的部署
- IDEA部署
- 第一步
- 第二步
- 第三步
- war包的发布
- 第一步:使用jar-cvf war 报的名称 ;当前目录中哪些资源要打入war包中
- 第二步:将打好的war拷贝到tomcat的webapps目录中
- 第三步:启动服务器时,tomcat会自动解压
(4)tomcat配置虚拟目录(路径)
- 虚拟目录的配置,支持两种方式,第一种是通过在主配置文件中添加标签实现,第二种就是通过写一个 独立的配置文件实现。
- 第一种方式:在server.xml的
元素中 添加一个 元素。 - path:访问资源URI。URI名称可以随便起,但是必须在前面加一个/
- docBase:资源所在的磁盘物理地址。
- 第二种方式:是写一个独立的xml配置文件,该文件名可以随便起。在文件中写一个
元素。该文件要放在tomcat目录中的cof/Catalina/localhost/目录下。 - 注意:在使用了独立的配置文件后,访问的资源URI就变成了/+文件的名称。而Context的path属性就失效了。
(5)tomcat配置虚拟的主机
- 在
元素中添加一个 其中: - name:指定主机的名称
- appBase:当前主机的应用发布目录
- unparkWARs:启动时是否自动解压war包
- autoDeploy:是否自动发布。
```xml
<a name="cZGlS"></a>
### (6)tomcat的默认配置
- 配置默认的端口
- Tomcat服务器主配置文件中配置着访问端口,它在配置文件中写的值是:8080。但是它不是Tomcat的默认端口。我们此处说的默认端口是,当使用默认值的时候,端口号可以省略。Tomcat的默认端口是80。
- 配置默认端口如下:
```xml
<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
- 配置默认的应用
- 有两种方式配置默认应用。
- 第一种:把要作为默认应用的应用,名称改为ROOT。放到webapps目录中。
- 有两种方式配置默认应用。
- 第二种:写一个独立的配置文件,文件名称为ROOT.xml。注意:ROOT必须大写。当使用了独立的ROOT.xml文件时,webapps下ROOT应用就不是默认应用了。
- 配置默认的主页
- 首先要明确的是,配置默认主页是针对应用说的。是应用的默认主页。在应用的web.xml中配置:
<welcome-file-list> <welcome-file>默认主页</welcome-file> </welcome-file-list> <!--例如--> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> </welcome-file-list>
- 首先要明确的是,配置默认主页是针对应用说的。是应用的默认主页。在应用的web.xml中配置:
二、http协议
2.1 http协议的概述
(1)http协议的概念
- HTTP的全称是:Hyper Text Transfer Protocol,意为超文本传输协议。它指的是服务器和客户端之间交互必须遵循的一问一答的规则。形容这个规则:问答机制、握手机制。它规范了请求和响应内容的类型和格式。HTTP协议是由W3C组织管理和维护的。
- http协议的版本
- 目前HTTP协议主要是1.0版本和1.1版本。这两个版本的区别主要是两个方面。
- 第一:HTTP1.1版本比1.0版本多了一些消息头。
- 第二:HTTP1.1版本和1.0版本的执行过程不一样。执行过程如下: | http1.0 | http1.1 | | —- | —- | | 创建连接(TCP/IP) | 创建连接(TCP/IP) | | 发送请求 | 发送请求1 | | 得到响应 | 得到响应1 | | 关闭连接 | 发送请求2 | | 创建连接(TCP/IP) | 得到响应2 | | 发送请求 | ………. | | 得到响应 | ………. | | 关闭连接 | 连接超时或者手动关闭连接 |
- 目前HTTP协议主要是1.0版本和1.1版本。这两个版本的区别主要是两个方面。
(2)http协议相关的说明
- http协议概念是客户端浏览器和服务器一种一问一答的规则,那么必须要有问有答,而且要先问后答。但是我们使用