Servlet开发

    • 打包为war文件;
    • 复制到Tomcat的webapps目录下;
    • 启动Tomcat。 这个过程是不是很繁琐?如果我们想在IDE中断点调试,还需要打开Tomcat的远程调试端口并且连接上去。

    javaee-newbee

    许多初学者经常卡在如何在IDE中启动Tomcat并加载webapp,更不要说断点调试了。

    我们需要一种简单可靠,能直接在IDE中启动并调试webapp的方法。

    • 加载war并初始化Servlet;
    • 正常服务。 启动Tomcat无非就是设置好classpath并执行Tomcat某个jar包的main()方法,我们完全可以把Tomcat的jar包全部引入进来,然后自己编写一个main()方法,先启动Tomcat,然后让它加载我们的webapp就行。

    我们新建一个web-servlet-embedded工程,编写pom.xml如下:

    其中,<packaging>类型仍然为,引入依赖tomcat-embed-coretomcat-embed-jasper,引入的Tomcat版本<tomcat.version>9.0.26

    不必引入Servlet API,因为引入Tomcat依赖后自动引入了Servlet API。因此,我们可以正常编写Servlet如下:

    然后,我们编写一个main()方法,启动Tomcat服务器:

    通过main()方法启动Tomcat服务器并加载我们自己的webapp有如下好处:

    • 启动简单,无需下载Tomcat或安装任何IDE插件;
    • 使用Maven创建war包后,也可以正常部署到独立的Tomcat服务器中。 对SpringBoot有所了解的童鞋可能知道,SpringBoot也支持在main()方法中一行代码直接启动Tomcat,并且还能方便地更换成Jetty等其他服务器。它的启动方式和我们介绍的是基本一样的,后续涉及到SpringBoot的部分我们还会详细讲解。

    从下载练习:使用嵌入式Tomcat运行Servlet (推荐使用快速下载)

    开发Servlet时,推荐使用main()方法启动嵌入式Tomcat服务器并加载当前工程的webapp,便于开发调试,且不影响打包部署,能极大地提升开发效率。