开发笔记

Tomcat手工编写第一个Servlet,了解其请求过程

2018-08-05  本文已影响0人  顾烟凉

新建一个类TestServlet.java

第一步:新建一个web项目,文件结构如下:
第二步:将classes设置为编译后文件输出目录:在settings->project structure->modules中如图所示选择patsh,按图将输出目录设置为你新建的classes目录 image.png

第三步:在main.com.guyanliang下新建类TestServlet
该类继承HttpServlet并且重写了doGet方法。

package main.com.guyanliang;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class TestServlet extends HttpServlet{

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("doGet");
        response.getWriter().write("<a href='http://guyanliang.club'>go</a>");
    }
}

编译TestServlet.java

如图所示编译 image.png
编译完成后,可以看到classes目录下多出了TestServlet.class也就是编译后的文件。 image.png

配置web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
            <servlet>
                <servlet-name>TS</servlet-name>
                <servlet-class>main.com.guyanliang.TestServlet</servlet-class>
            </servlet>
            <servlet-mapping>
                <servlet-name>TS</servlet-name>
                <url-pattern>/main.com.guyanliang.ts</url-pattern>
            </servlet-mapping>

</web-app>

如图所示配置,<servlet-mapping>是servlet的映射,注意:<servlet-class>和<url-pattern>中的配置文件路劲是相对于classes的,如果class文件时放在classes根目录下,则可以省略main.com.guyanliang。

部署调试Tomcat

部署好Tomcat并在浏览器地址输入http://localhost:8080/main.com.guyanliang.ts

image.png
部署成功

Tomcat请求过程

在如上这个简单的小程序中,我们仔细分析Tomcat时如何运作的。

  1. 浏览器输入地址,地址对应web.xml中<url-pattern>中main.com.guyanliang.ts
  2. tomcat根据<servlet-mapping>中的属性<servlet-name>TS<servlet-name>找到属性为<servlet-
    name>TS<servlet-name>所映射的servlet。
  3. 根据<servlet>中所对应的属性<servlet-class>寻找到编译后的class文件,并执行
上一篇下一篇

猜你喜欢

热点阅读