JavaEE & Tomcat
企业开发介绍
JavaEE 规范
JavaEE
规范是J2EE
规范的新名称,早期被称为 J2EE 规范,其全称是 Java 2 Platform Enterprise Edition,是由 SUN 公司领导、各厂家共同制定并得到广泛认可的工业标准(JCP 组织成员)。
其中,JCP 组织(官网)的全称是 Java Community Process,是一个开放的国际组织,主要由 Java 开发者以及被授权者组成,职能是发展和更新,成立于 1998 年。
JavaEE 规范是众多 Java 开发技术的总称。这些技术规范都是沿用自 J2EE 的,一共包括了 13 个技术规范,如jsp/servlet、jndi、jaxp、jdbc、jni、jaxb、jmf、jta、jpa、EJB 等。
JavaEE 的版本是延续了 J2EE 的版本,但是没有继续采用其命名规则。J2EE 的版本从 1.0 开始到 1.4 结束,而 JavaEE 版本是从 JavaEE 5 版本开始的,详情请参考:JavaEE8 规范概览。
Web 概述
Web 在英文中的含义是网状物、网络。在计算机领域,它通常指的是后者,即网络
。
像 WWW 是由 3 个单词组成的,即World Wide Web
,中文含义是万维网
;而 HTML、CSS 和 JS 的参考文档《W3School 全套教程》中的W3C
就是万维网联盟
。
他们的出现都是为了让我们在网络的世界中获取资源,这些资源的存放之处,我们称之为网站
。我们通过输入网站的地址(即网址),就可以访问网站中提供的资源。
在网上我们能访问到的内容全是资源(不区分局域网还是广域网)。只不过,不同类型的资源展示的效果不一样。资源可以分为静态资源和动态资源:
-
静态资源
指的是,网站中提供给人们展示的资源是一成不变的,也就是说不同人或者在不同时间,看到的内容都是一样的。例如:我们看到的新闻,网站的使用手册,网站功能说明文档等等。而作为开发者,我们编写的 html、css、js、图片、多媒体等,都可以称为静态资源。 -
动态资源
指的是,网站中提供给人们展示的资源是由程序产生的,在不同的时间或者用不同的人员由于身份的不同,所看到的内容是不一样的。例如:我们在12306上购买火车票,火车票的余票数由于时间的变化,会逐渐的减少,直到最后没有余票。还有,我们在 CSDN 上下载资料,只有登录成功后,且积分足够时才能下载。否则就不能下载,这就是访客身份和会员身份的区别。作为开发人员,我们编写的 JSP、servlet、php、ASP 等都是动态资源。
关于广域网和局域网的划分,广域网指的就是万维网,也就是我们说的互联网;局域网是指的是在一定范围之内可以访问的网络,出了这个范围,就不能再使用的网络。
系统结构简介
- 根据基础结构划分:C/S 结构,B/S 结构两类。
- 根据技术选型划分:Model1 模型,Model2 模型,MVC 模型、三层架构 + MVC 模型。
- 根据部署方式划分:一体化架构,垂直拆分架构,分布式架构,流动计算架构,微服务架构。
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:总体拥有成本低、维护方便、分布性强、开发简单,可以不用安装任何专门的软件就能 实现在任何地方进行操作,客户端零维护,系统的扩展非常容易,只要有一台能上网的电脑就能使用。
Tomcat
Tomcat 介绍
关于服务器
服务器的概念非常的广泛,它可以指代一台特殊的计算机(相比普通计算机运行更快、负载更高、价格更贵),也可以指代用于部署网站的应用。
以下说的服务器,其实是 Web 服务器,或者应用服务器,它本质就是一个软件,一个应用。作用就是发布我们的应用(工程),让用户可以通过浏览器访问我们的应用。
常见的应用服务器:
服务器名称 | 说明 |
---|---|
weblogic | 实现了 javaEE 规范,重量级服务器,又称为 javaEE 容器 |
websphereAS | 实现了 javaEE 规范,重量级服务器 |
JBOSSAS | 实现了 JavaEE 规范,重量级服务器,免费 |
Tomcat | 实现了 jsp/servlet 规范,是一个轻量级服务器,开源免费 |
Tomcat下载与安装
Tomcat 各版本所需支持
Tomcat 目录结构
Tomcat 基础使用
Tomcat 启停及问题
问题 1:启动一闪而过
-
原因:没有配置环境变量。
-
解决办法:配置上 JAVA_HOME 环境变量。
问题 2:报错信息 Address already in use : JVM_Bind
-
原因:端口被占用。
-
解决办法:找到占用该端口的应用。
- 已占的进程不重要:使用 cmd 命令:netstat -a -o 查看 pid,在任务管理器中结束占用端口的进程。
- 已占的进程很重要:修改 Tomcat 自己的端口号。在 Tomcat 目录下
\conf\server.xml
中修改配置:
问题 3:启动时很多异常,但能正常启动
-
原因:Tomcat 中部署着很多项目,每次启动这些项目都会启动。而这些项目中有启动报异常的。
-
解决办法:
- 能找到报异常的项目,就把它从发布目录中移除。
- 不能确定报异常的项目,就重新部署一个新的 Tomcat。
其它问题
-
例如启动产生异常,但是不能正常启动。此时就需要部署一个新的 Tomcat 启动,来确定是系统问题,还是 Tomcat 的问题。
-
此时就需要具体问题,具体分析,然后再对症解决。
IDEA 集成 Tomcat
Tomcat 配置虚拟目录
虚拟目录的配置,支持两种方式:第一种是通过在主配置文件中添加标签实现;第二种是通过写一个独立配置文件实现。
方式一:在server.xml
的<Host>
元素中加一个<Context path="" docBase=""/>
元素。
path
:访问资源 URI。URI 名称可以随便起,但是必须在前面加上一个“/”。docBase
:资源所在的磁盘物理地址。
方式二:是写一个独立的xml
文件,该文件名可以随便起,但在文件内写一个<Context/>
元素。
- 该文件要放在 Tomcat 目录中的
conf\Catalina\localhost\
目录下。 - 需要注意的是,在使用了独立的配置文件之后,访问资源 URI 就变成了
/+文件的名称
,而Context
的path
属性就失效了。
Tomcat 配置虚拟主机(域名)
在<Engine>
元素中添加一个<Host name="" appBase="" unparkWARs="" autoDeploy="" />
,其中:
name
:指定主机的名称。appBase
:当前主机的应用发布目录。unparkWARs
:启动时是否自动解压 war 包。autoDeploy
:是否自动发布。
配置示例如下:
<Host name="www.itcast.cn" appBase="D:\itcastapps" unpackWARs="true" autoDeploy="true"/>
<Host name="www.itheima.com" appBase="D:\itheimaapps" unpackWARs="true" autoDeploy="true"/>
Tomcat 默认项配置
配置默认端口
Tomcat 服务器的主配置文件中配置着访问端口,它在配置文件中写的值是:8080。配置方式如下:
<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>
Java Web 应用
Java Web 工程概述
JavaWeb
应用是一个全新的应用种类,这类应用程序指供浏览器访问的程序,通常也简称为 Web 应用。
一个 Web 应用由多个静态 Web 资源和动态 Web 资源组成,例如有 html、css、js 文件,jsp 文件、java 程序、支持的 jar 包、工程配置文件、图片、音视频等等。
Web 应用开发好后,若想供外界访问,需要把 Web 应用的所在目录,交给 Web 服务器管理(Tomcat 就是 Web 服务器之一),这个过程称之为虚似目录的映射。
Java Web 应用目录结构
myapp -------- 应用名称
demo.html
css/demo.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 应用的主配置文件
IDEA 创建 Java Web 应用工程
Java Web 应用部署
IDEA 部署
war 包发布
步骤一:使用命令jar -cvf war [需要打包的目录路径]
打包 war 包。
步骤二:把打好的 war 包拷贝到 tomcat 的 webapps 目录中。
步骤三:Tomcat 在启动时,会自动解压 war 包。