Servlet注解底层模拟

有时候,不是因为你没有能力,也不是因为你缺少勇气,只是因为你付出的努力还太少,所以,成功便不会走向你。而你所需要做的,就是坚定你的梦想,你的目标,你的未来,然后以不达目的誓不罢休的那股劲,去付出你的努力,成功就会慢慢向你靠近。

导读:本篇文章讲解 Servlet注解底层模拟,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

        我们知道在web开发中配置Servlet有2种方式,一种是xml,另外一种是注解开发,前面我们已经使用java读取过xml文件,xml配置方式的原理比较清晰了,但是注解一直比较模糊,下面我们就使用java程序来读取Servlet的注解,然后输出注解配置的相关信息。

        我们首先创建一个简单的Servlet,使用注解进行配置。代码如下

import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.IOException;

@WebServlet(urlPatterns = {"/ok1","/ok2"})
public class OkServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("注解get");
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("注解post");
    }
}

        这个Servlet配置了个url,分别是“/ok1”和“/ok2”,我们首先简单说一下Servlet注解配置的流程,tomcat在运行时会扫描所有包里面的类,看是否有注解配置,是不是应该Servlet,并且根据注解来进行不同操作。下面我们就使用程序来模拟tomcat扫描包并读取注解的过程。代码如下

import javax.servlet.annotation.WebServlet;
import java.util.HashMap;

public class TestAnnotationServlet {

    private final static HashMap<String, Object> HASH_MAP = new HashMap<>();

    public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException {
        //首先得到扫描包 路径,进而得到类的全路径
        String classAllPath = "com.clucky.servlet.annotation.OkServlet";
        //通过反射得到类的实例对象
        Class<?> aClass = Class.forName(classAllPath);
        //得到注解
        WebServlet annotation = aClass.getAnnotation(WebServlet.class);
        String[] urlPatterns = annotation.urlPatterns();
        //输出配置的url
        for (String urlPattern : urlPatterns) {
            System.out.println("urlPattern = " + urlPattern);
        }
        //如果匹配urlPattern 如果是第一次,tomcat就会创建一个该实列,放入hashmap,
        if (!HASH_MAP.containsKey("okServlet")) {
            Object newInstance = aClass.newInstance();
            HASH_MAP.put("okServlet", newInstance);
        }

    }
}

        我们运行这个测试,发现输出了我们OkServlet配置的url

Servlet注解底层模拟


         tomcat注解配置的原理大概就是这样,运行时扫描包,然后得到每个类的注解,根据注解来进行不同的操作,使用注解简化了开发,使得我们不再依赖于web.xml文件进行配置

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/146367.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!