• Tomcat 学习笔记


    1 Tomcat的使用

    下载安装

    1 下载地址: https://tomcat.apache.org/download-90.cgi
    2 下载内容
    在这里插入图片描述
    3 下载后解压到/Library目录下
    4 修改目录权限

    sudo chmod 755 *.sh
    
    • 1

    启动

    1 cd到tomcat安装目录下启动tomcat

    cd /Library/apache-tomcat-9.0.68/bin
    sudo sh ./startup.sh
    
    • 1
    • 2

    2 启动后,在浏览器中输入localhost:8080即可访问到tomcat

    关闭

    sudo sh ./shutdown.sh
    
    • 1

    配置

    可以在conf/server.xml中修改端口号

    <Connector port="8080" protocol="HTTP/1.1"
    connectionTimeout="20000"
    redirectPort="8443" />
    
    • 1
    • 2
    • 3

    部署

    将html文件拷贝到webapps目录下,然后访问http://localhost:8080/test.html,将会访问到部署到webapps中的内容

    2 Idea创建tomcat工程

    1 选择moven工程

    点选创建骨架,选择webapp,最后选next
    在这里插入图片描述

    2 输入工程名

    在这里插入图片描述

    3 配置pom.xml

    选择next,finish,最后pom.xml中的冗余配置,最终配置如下

    
    
    <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/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0modelVersion>
    
      <groupId>org.examplegroupId>
      <artifactId>Tomcat-TestartifactId>
      <version>1.0-SNAPSHOTversion>
      <packaging>warpackaging>
    
    project>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    4 补全目录结构

    在这里插入图片描述

    5 安装Maven Helper插件

    在这里插入图片描述

    6 启动tomcat

    在这里插入图片描述
    启动成功后即可访问本地资源

    http://localhost:8080/tomcat-demo
    
    • 1

    3 Servlet

    3.1 Servlet的使用

    1 引入Servlet依赖

    <dependencies>
        <dependency>
            <groupId>javax.servletgroupId>
            <artifactId>javax.servlet-apiartifactId>
            <version>3.1.0version>
            <scope>providedscope>
        dependency>
    dependencies>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    2 添加实现Servelet接口的子类

    @WebServlet("/demo1")
    public class ServletDemo implements Servlet {
        public void init(ServletConfig servletConfig) throws ServletException {
    
        }
    
        public ServletConfig getServletConfig() {
            return null;
        }
    
        public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
            System.out.println("德玛西亚必胜!");
        }
    
        public String getServletInfo() {
            return null;
        }
    
        public void destroy() {
    
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    3 启动tomcat,然后访问资源

    http://localhost:8080/tomcat-demo/demo1
    
    • 1

    可以看到控制台输出了在service()方法中打印的日志

    3.2 生命周期

    1 在init(),service(), destroy()方法中添加日志

    @WebServlet("/demo1")
    public class ServletDemo implements Servlet {
        public void init(ServletConfig servletConfig) throws ServletException {
            System.out.println("init()");
        }
    
        public ServletConfig getServletConfig() {
            return null;
        }
    
        public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
            System.out.println("service()");
        }
    
        public String getServletInfo() {
            return null;
        }
    
        public void destroy() {
            System.out.println("destroy()");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    2 在ternimal中运行命令

    mvn tomcat7:run
    
    • 1

    遇到如下报错

    [ERROR] No plugin found for prefix 'tomcat7' in the current project and in the plugin groups [org.apache.maven.plugins, org.codehaus.mojo] available from the repositories [local (/Users/yl/.m2/repository), central (https://repo.maven.apache.org/maven2)] -> [Help 1]
    [ERROR] 
    [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
    [ERROR] Re-run Maven using the -X switch to enable full debug logging.
    [ERROR] 
    [ERROR] For more information about the errors and possible solutions, please read the following articles:
    [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/NoPluginFoundForPrefixException
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    这是因为当前的Terminal目录没有切换到真正的工程目录下
    切换到工程目录下后,访问资源地址

    http://localhost:8080/demo1
    
    • 1

    此时,控制台输出日志

    init()
    service()
    
    • 1
    • 2

    按control + c退出后,输出日志

    destroy()
    
    • 1

    3.3 doGet/doPost

    1 doGet请求

    @WebServlet("/demo2")
    public class Servlet2Demo extends HttpServlet {
    
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            System.out.println("doGet");
        }
    
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            System.out.println("doPost");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    此时访问

    http://localhost:8080/tomcat-demo/demo2
    
    • 1

    将会输出日志doGet

    2 doPost请求
    创建html文件

    DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Titletitle>
    head>
    <body>
        <form action="/tomcat-demo/demo2" method="post">
            <input name="username"/>
            <input type="submit"/>
        form>
    body>
    html>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    访问html资源

    http://localhost:8080/tomcat-demo/test.html
    
    • 1

    将会看到doPost()日志

    3.4 urlPattern配置

    1 配置多个urlPattern

    @WebServlet(urlPatterns = {"/demo3", "/demo4"})
    public class Servlet7 extends HttpServlet {
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            super.doGet(req, resp);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    此时访问
    http://localhost:8080/tomcat-demo/demo3
    http://localhost:8080/tomcat-demo/demo4
    都能匹配到

    2 精确匹配

    @WebServlet(urlPatterns = "/api/select")
    
    • 1

    对应的url

    http://localhost:8080/tomcat-demo/api/select
    
    • 1

    3 目录匹配

    @WebServlet(urlPatterns = "/api/*")
    
    • 1

    对应的url,api后可以填任意值

    http://localhost:8080/tomcat-demo/api/any
    
    • 1

    4 任意匹配

    @WebServlet(urlPatterns = "/*")
    
    • 1

    访问的url可以填任意内容

    http://localhost:8080/tomcat-demo/test
    
    • 1

    3.5 xml配置

    servlet

    public class Servlet3Demo extends HttpServlet {
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            System.out.println("Servlet3Demo#doGet()");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    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>
      <servlet>
        <servlet-name>demo3servlet-name>
        <servlet-class>com.test.tomcat.Servlet3Demoservlet-class>
      servlet>
    
      <servlet-mapping>
        <servlet-name>demo3servlet-name>
        <url-pattern>/demo3url-pattern>
      servlet-mapping>
    web-app>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    访问此接口的url

    http://localhost:8080/tomcat-demo/demo3
    
    • 1
  • 相关阅读:
    【无标题】
    XSS-labs靶场实战(四)——第9-11关
    基于Springboot的影城管理系统(有报告)。Javaee项目,springboot项目。
    【MySQL】初识数据库
    【xgtcp】Go TCP服务器框架 支持Hook、功能码函数
    接口自动化测试框架【reudom】
    TFX发展简史/《Towards ML Engineering: A Brief History Of TensorFlow Extended (TFX)》
    搜狗收录量易语言查询代码
    YOLOv8-seg改进:重新思考轻量化视觉Transformer中的局部感知CloFormer,提升上下文感知权重来增强局部特征 |2023清华
    CGI与FastCGI的区别在哪里,FastCGI的应用场景讲解
  • 原文地址:https://blog.csdn.net/SImple_a/article/details/127517683