Tomcat是一个HTTP服务器,在开发或调试Servlet代码时应用广泛;使用Tomcat,实际就是将用户浏览器输入的http请求经Tomcat进行转发到目的服务器,再由Tomcat将目的服务器的响应信息返回给浏览器。
对于一些使用html,css等超文本标记语言编写的代码,可以直接通过浏览器使用Tomcat来查看效果;
Tomcat大抵就是充当一个中转站的效果,解析用户的http请求发给目的服务器,再将服务器的请求返回。
直接去到tomcat的官网https://tomcat.apache.org/选择自己需要的版本,然后点击下图所示的压缩包进行下载即可:
下载完成之后,对压缩包进行解压,可以得到如下所示的目录结构:
这里简单介绍tomcat的目录结构,实际细节不必深究;
bin:该目录下主要存放一些可执行程序,像tomcat的启动就是使用该目录下的某个文件完成的;
conf:这里主要是有关tomcat的一些配置文件;
lib:该目录下是存放tomcat运行过程中所依赖的库;
logs:这里存放tomcat的运行日志;
temp:这里主要存放的是tomcat在运行过程中产生的一些临时文件;
webapps:该目录下就是存放业务代码(即自己写的代码),像html、css等
work:tomcat的工作目录;
双击tomcat文件夹下bin目录中的文件startup.bat即可启动tomcat:
启动成功以后的效果图:
这里启动过程中出现乱码的原因是,tomcat默认使用UTF-8的编码方式来处理中文,但windows的cmd默认是使用GBK编码,两种编码方式的不同引起了这里启动时的乱码,但实际并不影响使用~
下面我们可以通过浏览器来尝试访问tomcat自带的页面:
127.0.0.1是一个环回ip,表示当前主机,而8080代表tomcat默认的端口号;
将一个静态文件(像html)拷贝到tomcat的webapps/root目录下,就可以使用浏览器进行访问:
相比于页面内容固定的静态页面,我们更多时候见到的都是根据用户操作不同而显示内容不同的动态页面,这就需要借助到Tomcat提供的API,即Servlet;
下面就是使用Servlet来完成一个简单代码,同时使用Tomcat通过浏览器来访问,整个过程需要这样7个步骤来完成:
Tomcat自身是基于Java来实现的程序,因此它的正确运行是离不开Java的,这里创建项目就是使用Java的开发工具IDEA来创建一个Maven项目;
注意:如果是首次创建Maven项目,一定要等待项目的所有依赖加载成功(通过网络自动加载),这个过程可能会比较缓慢,需要耐心等待,但如果这里项目本身的依赖加载失败,后续势必会出现更多更加棘手的问题,当这里的目录结构如下图时,代表加载完成;
选择第一个即可
然后根据自己的Java版本和Tomcat版本选择servlet的版本(可以在http://tomcat.apache.org/whichversion.html)查询三者对应的版本要求,这里我选择了servlet3.1的版本,然后复制如下面图所示的内容到maven项目的pom.xml文件中;
粘贴之前首先需要在pom.xml文件中写入一个标签 < dependencies > dependencies >,将复制的内容粘贴在标签内:
然后可以再次点击界面右侧的maven按钮,再次加载依赖,防止依赖加载失败而后续带来问题;
在main目录下创建如下所示的目录结构,一定要保证与图上目录一致,因为这是tomcat方识别程序的要求,遵守是必须的;
然后在我们所创建的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 Applicationdisplay-name>
web-app>
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;
/**
* Created with IntelliJ IDEA.
* Description:
* Date: 2023-03-13
* Time: 19:21
*/
//添加路径注解
@WebServlet("/hello")
public class ServletDemo1 extends HttpServlet {
//重写doGet方法
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//简单打印一句代码到服务器的控制台
System.out.println("hello,servlet!");
//这句代码将在浏览器页面显示
resp.getWriter().write("Hello,Servlet!");
}
}
注解表示在tomcat收到的众多请求中,路径为/hello的请求才会调用ServletDemo1这个类中的代码,如果路径不对。tomcat就无法正确访问到代码;
doGet方法的两个参数分别表示收到的http请求和需要构造的http响应,这里的响应参数最初是一个空对象,后续调用方法以后返回的响应数据将被填充到此处;这个方法在tomcat收到get请求时才会被触发;
resp.getWrite()是将我们后面写入的数据作为响应数据的body,写回给浏览器;
这段代码不需要main方法作为程序的入口,因为在tomcat中就包含了main方法;
<packaging>warpackaging>
<build>
<finalName>ServletDemo1finalName>
build>
packaging标签就是用来设置打包格式;
build标签下的finalName标签用来设置生成包的名字;
重新进行打包~
jar包中包含一些.class文件,是普通的Java程序打包的结果;
war包中包含.class文件,同时包含html、css、其他的jar包等;
然后,启动tomcat~
over!