当前位置: 移动技术网 > IT编程>开发语言>Java > Servlet与Tomcat运行示例

Servlet与Tomcat运行示例

2019年09月30日  | 移动技术网IT编程  | 我要评论
Servlet与Tomcat运行示例 本文将写一个servlet,然后将其部署到Tomcat的全过程。本文参考《深入拆解Tomcat_Jetty》内容。 一、基于web.xml开发步骤 1. 下载、安装 Tomcat。 2. 编写一个继承 HTTPServlet 的 Java 类MyServlet。 ...

servlet与tomcat运行示例

本文将写一个servlet,然后将其部署到tomcat的全过程。本文参考《深入拆解tomcat_jetty》内容。

一、基于web.xml开发步骤

  1. 下载、安装 tomcat。
  2. 编写一个继承 httpservlet 的 java 类myservlet。
  3. 将 java 类文件编译成 class 文件。
  4. 建立 web 应用的目录结构,并配置 web.xml。
  5. 部署 web 应用。
  6. 启动 tomcat。
  7. 浏览器访问验证结果。
  8. 查看 tomcat 日志。

1 下载、安装tomcat

去tomcat官网(https://tomcat.apache.org/download-90.cgi) 下载最新的tomcat(需下载对应系统版本,请根据实际情况选择,本文以macos系统为例)。下载完成之后解压即可。

file

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://www.lhsxpumps.com/_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 (欢迎沟通交流)

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网