轻松使用TomCat、Maven和Servlet


Tomcat

Tomcat 就是基于 Java 实现的一个开源免费, 也是被广泛使用的 HTTP 服务器

Tomcat下载

Tomcat官网:https://tomcat.apache.org

进入官网后,会出现以下界面

在这里插入图片描述

统一版本很重要,否则可能会出现大大小小的问题

Tomcat的版本,会和JDK以及Servlet的版本密切绑定在一起,因为我用的是JDK8,所以我下载Tomcat 8,下载时一定要注意自己的JDK和Servlet版本(大版本要一致,小版本无所谓)

选择Tomcat 8后,点击第一个zip下载即可
在这里插入图片描述

下载好后,进行解压缩,里面会有以下内容

在这里插入图片描述

一般我们主要关注这其中的四个文件

在这里插入图片描述

正因为,一个Tomcat上可以同时部署多个Servlet程序,所以,也可以把Tomcat称为“Servlet的容器”,或者简称为“容器”

启动Tomcat

找到bin目录下的startup.bat,双击启动

在这里插入图片描述
只要有这句话,就表示Tomcat启动成功,最后面的849ms,表示本次启动Tomcat所用的时间

出现这么多乱码的原因:
Tomcat内部使用的编码方式是utf8(utf8是当下最主流的编码方式)
但是,我们的Windows是"简体中文版",默认的字符集是GBK,cmd这个程序也是跟随着系统的字符集
数据是按照utf8来构造的,但是cmd在显示的时候按照了GBK的方式来解析,因此出现乱码

解决乱码,就需要统一编码格式,但是不建议修改
可以使用其他方式来解决乱码问题

1.结合idea来使用
2.在Linux上使用

启动Tomcat失败的原因

启动时,cmd闪退

Tomcat要想运行,就需要找到JDK,至于你把JDK安装到什么位置了,Tomcat并不知道,此时就需要配置环境变量

在这里插入图片描述

如何解决这个问题?需要能看到报错提示。闪退了如何看到报错提示?

方案是把双击运行的脚本直接拖到cmd中来运行

在这里插入图片描述

出现这样的原因就是环境变量没配好,需要我们手动配置

在这里插入图片描述

端口号被占用

Tomcat是一个HTTP服务器,启动的时候要绑定端口,一般是绑定两个端口号: 8080,8005

如果这个端口已经被其他程序占用了,此时你启动肯定是失效的!! (闪退)
最典型的情况:你已经启动了一个tomcat,你再尝试启动第二个,第二个tomcat妥妥的失败

但也有启动第一个Tomcat时,也失败了,可能电脑上有别的程序占用了8080和8005端口
此时在cmd中使用命令:netstat -an | findstr 8080/8005 找到并关闭占用该端口号的程序

在这里插入图片描述

使用Tomcat

把tomcat启动完成之后,就可以使用浏览器来访问tomcat了

在浏览器url框中输入:localhost:8080 或者127.0.0.1:8080 进行访问

在这里插入图片描述

自己进行页面部署

在这里插入图片描述

虽然咱们部署了页面到tomcat,上但是这里还有个问题,当前如果页面简单还好直接放到ROOT就行了。如果当前页面比较复杂 (若干个HTML,还依赖了一些css,图片,js…),如果全都堆在这个ROOT目录里,就非常不优雅了。因此更好的做法,是在webapps里单独创建一个目录,把你的页面部署到这个目录中

出现状态码500或者404,如何解决?

有时候,Tomcat已经启动完成,页面也已经部署好,但是还是有差错,例如,出现状态码500或者404的错误

在这里插入图片描述

出现404的原因也可能是没有这个资源

在这里插入图片描述

出现这两个错误的原因大概率是文件的访问权限问题,只要进行以下修改后就能正常访问

在这里插入图片描述

Maven

maven是一个Java世界中,非常知名的 “工程管理工具”

工程管理工具的核心:
管理依赖,构建/编译(也是在调用JDK),打包(把java代码给构造成jar包(jar包是一个特殊的压缩包,类似与rar,里面就是把各种的.class文件放到了一起)或者war包)

什么是依赖?

在进行A操作之前,必须完成B操作
比如今天中午,冯同学想吃面条(A操作),那么就得先去食堂(B操作),如果不去食堂的话,就吃不到面条

我们写代码,也有很多的依赖,比如经常会依赖标准库,经常依赖一些第三方库,这会导致代码的依赖关系非常复杂。
如果是手动管理这个依赖,整个过程相当令人头疼,不光你得研究清楚,每个库都依赖哪些其他库
而且还得研究清楚,这些依赖之间的版本是怎么关联的

为了解决这些问题,java中引入了maven,maven存在的意义就是能够直接把这些操作串起来,一气呵成

创建Maven项目

IDEA内置了现成的maven,因此我们不需要去官网中下载

搭配idea来使用maven

新建项目,选择maven,一路next

在这里插入图片描述

在这里插入图片描述

创建好的目录结构:

在这里插入图片描述

src/main/java这个目录用来放咱们的java代码
src/main/resources这个目录用来放一些依赖的资源
src/test/java这个目录用来放单元测试的代码
pom.xml是maven项目的核心配置文件,一个maven项目的司令部,文件是使用xml这种格式来组织

项目创建好了,使用maven
按照以下方式打开maven的控制面板

在这里插入图片描述
我们用得最多的就是package打包,打包不仅仅只是完成打包,还会将clean,validate,compile,test都执行完,打包的结果一般是jar包或者war包

Maven依赖管理

使用maven帮我们下载并安装第三方库

以mysql驱动包为例
1.去中央仓库上,找到mysql驱动包
链接:https://mvnrepository.com/

在这里插入图片描述
我的mysql版本是5,因此随便找一个就行

在这里插入图片描述


2.把这里的Maven 标签页下的这个 xml 配置复制下来
在这里插入图片描述


3.把内容粘贴到刚刚创建项目的 pom.xml里面
在这里插入图片描述


4.上述过程完成后,一般来说maven就会自动从中央仓库那里下载依赖,如果没有下载,就需要我们手动刷新
在这里插入图片描述
右下角的状态栏中,可以看见下载进度,第一次使用的时候,可能会下载的比较旧,一旦下载好后,后续就可以直接使用了
在这里插入图片描述
由于中央仓库,服务器在国外,下载速度可能会比较慢!!
慢到啥程度?尤其是首次使用maven,下载的依赖是很多的,花个半个小时,一个小时之类的,都是属于正常情况大家还是尽量在网络环境比较好的情况下,去首次使用maven


因为源在国外,是不太稳定的,可能会出现连接超时的现象
在这里插入图片描述
此时就需要我们等一会儿后再去下载,如果还是不行,可以把maven仓库给配置成使用国内的源(使用国内的中央仓库)
如果需要配置,可以看看这篇文章:https://zhuanlan.zhihu.com/p/71998219


6.如果看到了这个库,就说明引入依赖成功,如果没有这个库,尝试点击右上角的刷新按钮,同时也要注意右下角的下载进度条
在这里插入图片描述

Servlet

Servlet 是一种实现动态页面的技术,是一组 Tomcat 提供给程序猿的 API,帮助程序猿简单高效的开发个 web app

接下来我们创建一个Servlet项目

1.创建Maven项目

按照创建Maven的步骤,创建一个名为servlet_project的maven项目

2.引入依赖

需要在代码中引入Servlet api,这个api不是JDK内置的,而是第三方(Tomcat提供的)
Tomcat相对于Java官方来说,仍然属于第三方
借助maven直接就能引入

在中央仓库 https://mvnrepository.com/ 中搜索 “servlet”,一般第一个结果就是

在这里插入图片描述

Servlet 的版本要和 Tomcat 匹配
可以在 http://tomcat.apache.org/whichversion.html 查询版本对应关系

在这里插入图片描述

在这里插入图片描述

把它复制到 pom.xml中

在这里插入图片描述

如果其中的字体是标红的,那么说明依赖还没下载好,需要我们等待一下,或者进行手动刷新

找到maven仓库,如果存在这个jar包,说明已经下载好了

在这里插入图片描述

3.构建目录结构

虽然当下maven帮我们创建了一些目录,但是还不够还不足以支撑咱们写一个Servlet项目
因此需要手动的再创建一些目录和文件出来

1.在main中新建一个webapp目录

在这里插入图片描述

2.在刚刚建好的webapp下,再建一个WEB-INF目录

在这里插入图片描述

3.在WEB-INF中建一个web.xml

在这里插入图片描述

4.需要在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>

在这里插入图片描述

4.编写Servlet代码

在这里插入图片描述

在java这个目录中创建一个名为HelloServlet的类,继承HTTPServlet

在这里插入图片描述

这里标红了,说明代码中找不到HttpServlet这个类,依赖没有被正确引入
因此,将鼠标放在HttpServlet上,alt+回车,就能导入这个类了

在这里插入图片描述

现在需要重写HttpServlet中doGet方法

在这里插入图片描述

直接回车,补全代码

在这里插入图片描述

doGet方法要做的工作,就是根据请求,计算生成响应
一个服务器的工作流程,就可以分成三个典型的步骤:

1、接受请求并解析
2、根据请求计算响应
3、构造响应数据,并返回给客户端

步骤1和步骤3,Tomcat已经帮我们做好了
步骤2就是我们自己要实现的逻辑,也就是doGet要实现的内容

因此我们不需要调用父类的doGet方法,必须自己实现doGet方法

public class HelloServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //super.doGet(req, resp);

        //这个是让服务器在自己的控制台里打印
        System.out.println("hello Servlet");

        //在页面上也能打印hello Servlet
        //把hello Servlet字符串放在http响应的body中,浏览器就会把body的内容显示到页面上
        resp.getWriter().write("hello Servlet");
    }
}

在这里插入图片描述

到这里,代码还差一步就能运行了
需要在这个类上方添加一个注解

在这里插入图片描述
HttpServlet中除了有doGet方法之外,还有其他的方法,例如doPost,doDelete方法等

在这里插入图片描述

http有哪些方法,HttpServlet就有哪些方法,因此需要保证请求是什么方法,服务器就需要用对应的方式去处理

接下来,我们需要打包这个程序

5.程序打包

当前的代码,是不能单独运行的(没有main方法)
需要把当前的代码,打包,然后部署到Tomcat上,由Tomcat来进行调用

在打包之前,需要修改pom.xml

<packaging>war</packaging>
<build>
    <finalName>hello_servlet</finalName>
</build>

需要将这段代码放置到pom.xml文件中

在这里插入图片描述

jar和war都是java发布程序用的压缩包格式
war算是给Tomcat专门弄的。这里不光会包含一些.class,还可以包含配置文件,以及依赖的第三方的jar,还有html,css,js…

双击package进行打包

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

hello_servlet.war就是我们所需要的

6.程序部署

把war包拷贝到tomcat的webapps目录下

在这里插入图片描述

在这里插入图片描述
将这个war复制,然后放在tomcat的webapps目录下

在这里插入图片描述

启动Tomcat

在这里插入图片描述

启动完成后,
在这里插入图片描述

7.验证程序

在这里插入图片描述

可以这样认为:

一个Tomcat上可以同时部署多个网站,一个网站上又有多个页面
一个请求中的第一级路径,就告诉Tomcat,要访问的网站是哪个,第二级路径,就告诉Tomcat 要访问的页面是这个网站中的哪个页面

使用IDEA上Tomcat插件简化步骤5和步骤6

smart tomcat是idea的一个插件

安装smart tomcat

在这里插入图片描述
我这里已经安装过了,因此这个按钮是灰色的。
安装好后,一般要重启一下idea

在一个项目中,首次使用,需要进行简单的配置,后续就不必再配置了

这个按钮在右上角
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

都弄好后,点击这里的绿色小三角符号,就会自动完成打包,部署,重启Tomcat这一系列操作
在这里插入图片描述

在这里插入图片描述

这些文字在cmd中是乱码,但在idea中就不再乱码了

虽然这些信息是红色的,但是并不是报错,看一看最后一行,就知道Tomcat已经启动成功了,此时再去访问页面

在这里插入图片描述

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值