背景介绍

Apache Tomcat 是Java Servlet、JavaServer Pages (JSP)、Java表达式语言和Java的WebSocket技术的一个开源实现 ,通常咱们将Tomcat称为Web容器或者Servlet容器 。

tomcat各版本和相应标准的映射关系:

下载地址

https://tomcat.apache.org/dow...

下载到本地并解压:

进入主目录:

tomcat目录介绍

bin

启动,敞开和其余脚本。这些 .sh文件(对于Unix零碎)是这些.bat文件的性能正本(对于Windows零碎)。因为Win32命令行短少某些性能,因而此处蕴含一些其余文件。

比如说:windows下启动tomcat用的是startup.bat,另外Linux环境中应用的是startup.sh。对应还有相应的shutdown敞开脚本。

conf

tomcat的配置文件和相干的DTD。这里最重要的文件是server.xml。它是容器的次要配置文件。

catalina.policy:tomcat:安全策略文件,管制JVM相干权限,具体能够参考java.security.Permission。

catalina.properties:tomcat Catalina 行为管制配置文件,比方:Common ClassLoader。

logging.properties:tomcat日志配置文件。外面的日志采纳的是JDK Logging。

server.xml:tomcat server配置文件(对于我开发人员来说是十分重要)。

context.xml:全局context配置文件,监督并加载资源文件,当监督的文件产生发生变化时,主动加载 。

tomcat-user.xml:tomcat角色配置文件。

web.xml:Servlet规范的web.xml部署文件,tomcat默认实现局部配置 入内:

  • org.apache.catalina.servlets.DefaultServlet。
  • org.apache.jasper.servlet.JspServlet

logs

日志文件默认位于此处。

localhost有用,当你们的tomcat启动不了的时候,多看这个文件。比方:

  • NoClassDefFoundError
  • ClassNotFoundException

access最没用。

catalina.{date} 次要是控制台输入,全副日志都在这外面。

webapps

这是您的webapp所在的地位。其实这外面这几个都是一个我的项目。

简化web部署的形式。在线上环境中咱们的利用是不会放在这里的。最好的方法就是外置。

lib

tomcat寄存共用的类库。比方:

  • ecj-4.17.jar: eclipse Java编译器
  • jasper.jar:JSP编译器。

work

寄存tomcat运行时编译后的文件,比方JSP编译后的文件 。

temp

寄存运行时产生的临时文件。

启动tomcat

启动tomcat

咱们在windows下的就间接启动bin目录下的startup.bat,对应Linux环境中咱们应用的是startup.sh。

双击就能启动了。控制台会输8080端口,而后咱们拜访:

http://localhost:8080/

页面展现:

这就代表着咱们的tomcat启动胜利了。

此时,http://localhost:8080/申请到的是ROOT目录。

比方:咱们还能够http://localhost:8080/manager

Servlet我的项目部署到tomcat中

创立web我的项目

应用maven创立web我的项目,既然说tomcat是Servlet容器,那么在我的项目中创立一个Servlet类,而后打成war包,拷贝到tomcat中部署。

我的项目构造如下:

增加依赖

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven...d">
<modelVersion>4.0.0</modelVersion>
<groupId>com.tian.maven</groupId>
<artifactId>my-web-maven</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>my-web-maven Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
</dependencies>
<build>
<finalName>my-web-maven</finalName>
</build>
</project>

创立DemoServlet

package com.tian.maven;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet(urlPatterns = "/demo")
public class DemoServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String msg = req.getParameter("message");
String contextPath = req.getServletContext().getContextPath();
System.out.println("contextPath=" + contextPath);
resp.getWriter().println(msg);
}
}

web.xml什么都没有,仅仅就是为了打包。

<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
<display-name>Archetype Created Web Application</display-name>
</web-app>

index.jsp找那个也没什么内容:

<html>
<body>
<h2>Hello World!</h2>
</body>
</html>

应用mvn命令打成war包。

把打成的war包拷贝(其实拷贝my-web-maven文件夹也是一样的)到tomcat中webapps目录下:

而后到bin目录下,双击

我的项目运行起来后,拜访 http://localhost:8080/

证实咱们的我的项目曾经启动胜利了。

接下来咱们拜访咱们写的Servlet:

http://localhost:8080/demo?message=hello

报错,HTTP状态 404 - 未找到;

留神:这里拜访的时候,咱们须要把项目名称当做contextPath,即拜访形式应该是:

http://localhost:8080/my-web-maven/demo?message=hello

页面上输入

hello

轻松搞定,这样咱们的我的项目就胜利的部署到tomcat中。

IDEA中的我的项目部署到tomcat中

创立一个servlet我的项目,项目名称my-servlet。

新建一个类MyServlet

进入咱们刚刚装置的tomcat目录,进入到lib目录中,选中servlet-api.jar。

点击ok。

点击Apply,而后点击OK。

批改MyServlet内容:

package com.tian.servlet;

import javax.servlet.*;
import java.io.IOException;
import java.io.PrintWriter;

//实现接口Servlet,必须重写上面的这些办法
public class MyServlet implements Servlet {

private transient ServletConfig servletConfig;
@Override
public void init(ServletConfig servletConfig) throws ServletException {
this.servletConfig = servletConfig;
}

@Override
public ServletConfig getServletConfig() {
return servletConfig;
}

@Override
public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
String servletName = servletConfig.getServletName();
//网页响应类型,浏览器将其渲染为HTML格局
response.setContentType("text/html");
PrintWriter writer = response.getWriter();
writer.println("<html><head></head>" + "<body> Hello this is " + servletName + "</body></html>");
}

@Override
public String getServletInfo() {
return "my first Servlet";
}

@Override
public void destroy() {
}
}

批改web.xml文件内容:

<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"         version="3.1">    <servlet>        <servlet-name>myServlet</servlet-name>        <servlet-class>com.tian.servlet.MyServlet</servlet-class>    </servlet>    <servlet-mapping>        <servlet-name>myServlet</servlet-name>        <url-pattern>/demo</url-pattern>    </servlet-mapping></web-app>

另外咱们把index.jsp内容批改一下,次要是为了更好的演示:

<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><body><h1> hello world </h1></body></html>

IDEA集成tomcat

在咱们的IDEA中增加咱们装置的tomcat:

来到tomcat配置 的界面:

配置tomcat:

进入装置目录:

点击OK,

而后进入deployment栏目:

增加咱们创立的servlet我的项目:

主动就增加了咱们的我的项目:

而后点击Apply,再点击OK。

IDEA集成tomcat,以及把咱们我的项目给关联起来了。上面咱们就来运行一下:

启动tomcat

点击绿色三角:

证实咱们的我的项目在tomcat中曾经启动胜利。

拜访咱们的servlet

此时,咱们就能够来拜访咱们的servlet了。

拜访:http://localhost:8080/ 页面显示就是咱们后面批改的index.jsp的内容。

再拜访咱们本人写的Servlet:

http://localhost:8080/demo

胜利的把咱们的内容给输入来了。好了本文内容就这些,简略式tomcat入门。

总结

tomcat是什么,tomcat如何装置,如何启动tomcat,如何部署咱们本人的Servlet我的项目,咱们在IDEA如何集成tomcat以及如何启动tomcat。

人只有不失去方向,就不会失去本人