Servlet与Tomcat运行示例
servlet与tomcat运行示例
本文将写一个servlet,然后将其部署到tomcat的全过程。本文参考《深入拆解tomcat_jetty》内容。
一、基于web.xml开发步骤
- 下载、安装 tomcat。
- 编写一个继承 httpservlet 的 java 类myservlet。
- 将 java 类文件编译成 class 文件。
- 建立 web 应用的目录结构,并配置 web.xml。
- 部署 web 应用。
- 启动 tomcat。
- 浏览器访问验证结果。
- 查看 tomcat 日志。
1 下载、安装tomcat
去tomcat官网(https://tomcat.apache.org/download-90.cgi) 下载最新的tomcat(需下载对应系统版本,请根据实际情况选择,本文以macos系统为例)。下载完成之后解压即可。
2 编写myservlet类
编写一个myservlet类,其继承httpservlet类,并复写其doget()和dopost()方法。
import javax.servlet.servletexception; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; import java.io.ioexception; import java.io.printwriter; /** * @version v1.0 * @description: myservlet 类 */ public class myservlet extends httpservlet { @override protected void doget(httpservletrequest req, httpservletresponse resp) throws servletexception, ioexception { system.out.println("myservlet 在处理 get()请求..."); printwriter out = resp.getwriter(); resp.setcontenttype("text/html;charset=utf-8"); out.println("<strong>doget my servlet!</strong><br>"); } @override protected void dopost(httpservletrequest req, httpservletresponse resp) throws servletexception, ioexception { system.out.println("myservlet 在处理 post()请求..."); printwriter out = resp.getwriter(); resp.setcontenttype("text/html;charset=utf-8"); out.println("<strong>dopost my servlet!</strong><br>"); } }
3 编译myservlet
因为这里我们不采用ide的方式,所以在编译myservlet.java类时,我们使用javac的命令。但是我们需要注意,因为我们在myservlet类中继承了httpservlet,而httpservlet并不是jdk自带的class,所以需要带上httpservlet所在的jar包一起进行打包!不然会出现以下错误信息:
我们先将tomcat解压目录 lib/下的servlet-api.jar拷贝到myservlet.java同级目录,然后执行以下命令,即可将myservlet进行编译:
javac -cp ./servlet-api.jar myservlet.java
4 建立 web 应用目录
创建文件夹,也就是项目工程 mywebapp, 其目录主要如下:
mywebapp/web-inf/web.xml mywebapp/web-inf/classes/myservlet.class
其中,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" metadata-complete="true"> <description> servlet example. </description> <display-name> myservlet example </display-name> <request-character-encoding>utf-8</request-character-encoding> <servlet> <servlet-name>myservlet</servlet-name> <servlet-class>myservlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>myservlet</servlet-name> <url-pattern>/myservlet</url-pattern> </servlet-mapping> </web-app>
5 部署 mywebapp 应用
将这个目录 mywebapp 拷贝到 tomcat 的安装目录下的 webapps 目录:
6 启动 tomcat
找到 tomcat 安装目录下的 bin 目录,如果是 windows 系统,执行 startup.bat;如果是 linux 系统,则执行 startup.sh
7 浏览器访问
在浏览器里访问这个 url: http://localhost:8080/mywebapp/myservlet
同样,post方式调用也会得到相类似的结果!
8 查看 tomcat 日志
我们可以看下tomcat/logs下的catalina.out文件,使用以下命令查看相应的日志:
tail -100f catalina.out
二、基于注解@webservlet开发
步骤基本上同上述基于web.xml一致,有以下几点不同之处!
1 不同之处1: myservlet类的代码
在myservlet上添加@webservlet代码,具体如下:
import javax.servlet.servletexception; import javax.servlet.annotation.webservlet; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; import java.io.ioexception; import java.io.printwriter; /** * @version v1.0 * @description: myservlet 类 */ @webservlet("/myannotationservlet") public class myservlet extends httpservlet { @override protected void doget(httpservletrequest req, httpservletresponse resp) throws servletexception, ioexception { system.out.println("myservlet 在处理 get()请求..."); printwriter out = resp.getwriter(); resp.setcontenttype("text/html;charset=utf-8"); out.println("<strong>doget my servlet!</strong><br>"); } @override protected void dopost(httpservletrequest req, httpservletresponse resp) throws servletexception, ioexception { system.out.println("myservlet 在处理 post()请求..."); printwriter out = resp.getwriter(); resp.setcontenttype("text/html;charset=utf-8"); out.println("<strong>dopost my servlet!</strong><br>"); } }
2 不同之处2: 去除web.xml配置
mywebapp项目下不需要再配置web.xml,因为在注解中已经对其进行了相关的配置。
3 不同之处3: 访问地址变化
因为在@webservlet中配置了的路径为/myannotationservlet,故而此处访问路径应为:http://localhost:8080/mywebapp/myannotationservlet
剩下步骤与基于web.xml配置基本一致,不再细述!后期将就本案例讲解分析tomcat是如何加载并运行此servlet的!
微信公众号: 源码湾
欢迎关注本人微信公众号: 源码湾。 本公众号将不定期进行相关源码及相关开发技术的分享,共同成长,共同进步~
blog:
- 简书: https://www.jianshu.com/u/91378a397ffe
- csdn: https://blog.csdn.net/zhiyouwu
- 开源中国: https://my.oschina.net/u/3204088
- 掘金: https://juejin.im/user/5b5979efe51d451949094265
- 博客园: https://www.cnblogs.com/zhiyouwu/
- 微信公众号: 源码湾
- 微信: wzy1782357529 (欢迎沟通交流)
推荐阅读
-
PHP中strtr与str_replace函数运行性能简单测试示例
-
Flink快速入门--安装与示例运行
-
Servlet与Tomcat运行示例
-
关于使用maven + Tomcat7-maven-plugin管理并运行web项目抛出cannot be cast to javax.servlet.Servlet的问题和解决
-
你一定看得懂的 DDD+CQRS+EDA+ES 核心思想与极简可运行代码示例
-
DDD+CQRS+EDA+ES 核心思想与极简可运行代码示例
-
F:大疆M300PSDKv2.1.0通过树莓派4B向pilot传输图片与视频。(只运行示例程序)
-
浅析Js(Jquery)中,字符串与JSON格式互相转换的示例(直接运行实例)_jquery
-
PHP中strtr与str_replace函数运行性能简单测试示例
-
超详细!!最新版基于tomcat在Intelij IDEA 2020.2 中运行servlet程序