• 轻松使用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 Applicationdisplay-name>
    web-app>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在这里插入图片描述

    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");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    在这里插入图片描述

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

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

    在这里插入图片描述

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

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

    5.程序打包

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

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

    <packaging>warpackaging>
    <build>
        <finalName>hello_servletfinalName>
    build>
    
    • 1
    • 2
    • 3
    • 4

    需要将这段代码放置到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已经启动成功了,此时再去访问页面

    在这里插入图片描述

  • 相关阅读:
    写docx
    9.7--prompt理论学习
    【Leetcode】189. 轮转数组
    第15章 - 垃圾回收相关算法
    CGAL 计算点云平均密度
    Java编程最常见的208道面试题,一文解析
    第十三届蓝桥杯省赛JavaA组 H 题,JavaC组 I 题—— 因数平分和 (AC)
    jmeter压力测试的辅助插件和实操技巧
    11_C++_《指针》_笔记整理
    前端建模基础
  • 原文地址:https://blog.csdn.net/qq_56044032/article/details/127954183