Tomcat是提供一个支持Servlet和JSP运行的容器。Servlet和JSP能根据实时需要,产生动态网页内容。而对于Web服务器来说, Apache仅仅支持静态网页,对于支持动态网页就会显得无能为力;Tomcat则既能为动态网页服务,同时也能为静态网页提供支持。尽管它没有通常的Web服务器快、功能也不如Web服务器丰富,但是Tomcat逐渐为支持静态内容不断扩充。大多数的Web服务器都是用底层语言编写如C,利用了相应平台的特征,因此用纯Java编写的Tomcat执行速度不可能与它们相提并论。一般来说,大的站点都是将Tomcat与Apache的结合,Apache负责接受所有来自客户端的HTTP请求,然后将Servlets和JSP的请求转发给Tomcat来处理。Tomcat完成处理后,将响应传回给Apache,最后Apache将响应返回给客户端。
tomcat访问所有的资源,都是用Servlet来实现的。
在Tomcat看来,资源分3种:
运行应用程序的Web容器将会有一个或多个内建的Servlet,这些Servlet用于处理JavaServer Pages、显示目录列表(如果启用了该功能的话)和访问静态资源,例如HTML页面和图片。
JspServlet用于处理JSP页面,DefaultServlet是处理静态资源的Servlet,在tomcat的conf目录下web.xml:
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
<init-param>
<param-name>fork</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>xpoweredBy</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>3</load-on-startup>
</servlet>
<!-- The mapping for the default servlet -->
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<!-- The mappings for the JSP servlet -->
<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>*.jsp</url-pattern>
<url-pattern>*.jspx</url-pattern>
</servlet-mapping>
配置jdk环境变量
下载,解压,目录结构如下:

bin目录 可执行文件,如启动tomcat
conf目录 配置文件
lib目录 第三方依赖的jar包
logs目录 日志
temp目录 临时文件
webapps目录 部属的web应用
work目录 jsp翻译成servlet再翻译成class的文件
双击bin中的startup.bat可以启动tomcat
若已经启动一个tomcat应用,再启动同一个tomcat应用,会抛出端口占用异常
用bin中的shutdown.bat可以关闭tomcat
修改端口号
server.xml
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
创建的Web项目,必须有一个根目录,根目录下:
WEB-INF/目录中的文件是受到保护的,不能通过URL访问。
用eclipse创建一个普通java工程
创建com.aidata包,并创建Person类
package com.aidata;
public class Person {
public String getPersonInfo() {
return "person info...";
}
}
下面手工创建tomcat项目目录
创建WebContent根目录
创建WEB-INF目录
创建目录WEB-INF/classes,创建com文件夹,com下创建aidata文件夹,将eclipse的bin目录下生成的Person.class拷贝过来
创建目录WEB-INF/lib
从tomcat拷贝一个web.xml到WEB-INF目录下
在根目录下创建一个jsp页面
<%@page import="com.aidata.Person"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
Person person = new Person();
System.out.println(person.getPersonInfo());
%>
</body>
</html>
将根目录拷贝到tomcat的webapps目录下

启动tomcat
浏览器输入http://localhost:8080/WebContent/hello.jsp,命令行窗口会打印

Java Web项目的构成:
- 需要自己的代码和它依赖的第三方库
- 部属描述符,其中包含了部属和启动应用程序的指令
- 可以添加ClassLoader用于将自己的应用程序与同一台服务器上的其他Web应用程序隔离
- 通过某种方式将应用程序打包,生成WAR和EAR文件
Servlet
Servlet是JavaEE规范的一种,主要是为了扩展Java作为Web服务的功能,统一接口。由其他内部厂商如tomcat,jetty内部实现web的功能。Servlet就是一群人来制定java应用中使用web时的各种规范,统一接口,其他内部实现由厂商自己实现,tomcat jetty jboss等等应运而生。面向接口编程。
我们只需要创建servlet,实现servlet接口的方法就可以了,其他的都交给servlet容器就好了。


原文:https://www.cnblogs.com/aidata/p/11974648.html