Tomcat 学习笔记

1 Tomcat的使用

下载安装

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

sudo chmod 755 *.sh

启动

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

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

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

关闭

sudo sh ./shutdown.sh

配置

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

<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />

部署

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

2 Idea创建tomcat工程

1 选择moven工程

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

2 输入工程名

在这里插入图片描述

3 配置pom.xml

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

<?xml version="1.0" encoding="UTF-8"?>

<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.0</modelVersion>

  <groupId>org.example</groupId>
  <artifactId>Tomcat-Test</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>

</project>

4 补全目录结构

在这里插入图片描述

5 安装Maven Helper插件

在这里插入图片描述

6 启动tomcat

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

http://localhost:8080/tomcat-demo

3 Servlet

3.1 Servlet的使用

1 引入Servlet依赖

<dependencies>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version>
        <scope>provided</scope>
    </dependency>
</dependencies>

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() {

    }
}

3 启动tomcat,然后访问资源

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

可以看到控制台输出了在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()");
    }
}

2 在ternimal中运行命令

mvn tomcat7:run

遇到如下报错

[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

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

http://localhost:8080/demo1

此时,控制台输出日志

init()
service()

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

destroy()

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");
    }
}

此时访问

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

将会输出日志doGet

2 doPost请求
创建html文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <form action="/tomcat-demo/demo2" method="post">
        <input name="username"/>
        <input type="submit"/>
    </form>
</body>
</html>

访问html资源

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

将会看到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);
    }
}

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

2 精确匹配

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

对应的url

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

3 目录匹配

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

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

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

4 任意匹配

@WebServlet(urlPatterns = "/*")

访问的url可以填任意内容

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

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()");
    }
}

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>
  <servlet>
    <servlet-name>demo3</servlet-name>
    <servlet-class>com.test.tomcat.Servlet3Demo</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>demo3</servlet-name>
    <url-pattern>/demo3</url-pattern>
  </servlet-mapping>
</web-app>

访问此接口的url

http://localhost:8080/tomcat-demo/demo3
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值