此图为JSP格式的源代码的运行流程
Tomcat
Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。
诀窍是,当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。另外,Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。目前Tomcat最新版本为9.0。【来源于百度百科】
JAVA EE包含多个独立的API,Servlet和JSP就是其中的两个,而JAVA EE中著名的API中还包含如下的几个:
JAVA EE APIs:
EJB(Enterprise JavaBeans):JAVA相关的诸多高级功能的实现,如RMI(Remote Method Invocation), 对象/关系映射,跨越多个数据源的分布式事务等;
JMS(Java Message Service):高性能异步消息服务,实现JAVA EE应用程序与非JAVA程序的“透明”通信;
JMX(Java Management Extensions):在程序运行时对其进行交互式监控和管理的机制;
JTA(Java Transaction API):允许应用程序在自身的一个或多个组件中平滑地处理错误的机制;
JavaMail:通过工业标准的POP/SMTP/IMAP协议发送和接收邮件的机制;
Java SE APIs:
JNDI(Java Naming and Directory Interface):用于与LDAP服务交互的API;
JAXP(Java API for XML Processing):用于分析及转换XML(基于XSLT实现);
Java SE API + JDK
Tomcat版本:
所有的web contoiner基本上都会提供一个类似于http服务的程序
Tomcat支持远程部署和管理
Tomcat的核心组件:
catalina: servlet container
Coyote: http connection
Jasper: JSP Engine
Tomcat的开发语言:JAVA Tomcat运行在jvm上,所有的java代码都运行为java虚拟机进程
Tomcat Instance: 运行中的tomcat进程(java进程)
Server: 即一个tomcat实例;
Service: 用于将connector关联至engine组件;一个service只能包含一个engine组件和一个或多个connector组件;
Engine:Tomcat的核心组件,用于运行jsp或servlet代码;
Connector:接入并解析用户请求,将请求映射为Engine中运行的代码;之后,将运行结果构建成响应报文;
支持http协议, ajp协议
Host:类似httpd中的虚拟主机;
Context:类似于httpd中的alias; 把一个路径部署成一个单独的应用程序,因为java是比较重量级的
注:大多数情况下,一个server中只提供一个service
注意:每个组件都由“类”来实现,有些组件的实现还不止一种;
顶级类组件:server
服务类组件:service
容器类组件:即可以部署webapp的组件,engine, host, context
连接器组件:connector
被嵌套类组件:valve, logger, realm
把各种组件的组织形式定义成html格式:
Tomcat的运行模式:
standalone:通过内置的web server (http connector)来接收客户端请求;
proxy:由专门的web server服务客户端的http请求;把客户端的请求反代至tomcat
in-process: 两个组件部署于同一主机;
network: 两个部署于不同主机;
安装Tomcat:
官方站点:http://tomcat.apache.org
部署前提:
jdk:注:先安装jdk
Oracel JDK
OpenJDK
官网下载
jdk-8u151-linux-x64.rpm
# rpm -ivh jdk-8u151-linux-x64.rpm
jdk默认安装在/usr/java/
声明JAVA-HOME变量
# vim /etc/profile.d/java.sh
export JAVA_HOME=/usr/java/latest
export PATH=$JAVA_HOME/bin:$PATH
# . /etc/profile.d/java.sh 注:重读此配置文件
上图为java命令查看其版本,能看到上图的信息,说明环境变量配置成功
官网下载 apache-tomcat-8.0.23.tar.gz
#tar xf apache-tomcat-8.0.23.tar.gz -C /usr/local
#cd /usr/local
# ln -sv apache-tomcat-8.0.23 tomcat
# vim /etc/profile.d/tomcat.sh 注:指明tomat的环境变量
export CATALINA_HOME=/usr/local/tomcat
export PATH=$CATALINA_HOME/bin:$PATH
# . /etc/profile.d/tomcat.sh 注:重读此脚本生效
# catalina.sh start 注:启动tomcat,tomcat监听在8080端口上
部署Tomcat:
Tomcat的目录结构:
bin: 脚本及启动时用到的类
lib: 类库
conf: 配置文件
logs: 日志文件
webapps: 应用程序默认部署目录
work:工作目录
temp:临时文件目录
配置文件:
server.xml: 主配置文件
context.xml:每个webapp都可以有专用的配置文件,这些配置文件通常位于webapp应用程序目录下的WEB-INF目录中,用于定义会话管理器、JDBC等;conf/context.xml是为各webapp提供默认配置;
web.xml:每个webapp“部署”之后才能被访问;此文件则用于为所有的webapp提供默认部署相关的配置;
tomcat-users.xml:用户认证的账号和密码配置文件;
catalina.policy:当使用-security选项启动tomcat实例时会读取此配置文件来实现其安全运行策略;
catalina.properties:Java属性的定义文件,用于设定类加载器路径等,以及一些JVM性能相关的调优参数;
logging.properties:日志相关的配置信息;