Servlet实例

Servlet实例


Servlet 是服务 HTTP 请求并实现 javax.servlet.Servlet 接口的 Java 类。Web 应用程序开发人员通常编写 Servlet 来扩展 javax.servlet.http.HttpServlet,并实现 Servlet 接口的抽象类专门用来处理 HTTP 请求。

Servlet创建方式

实现Servlet接口

因为是实现 Servlet 接口,所以我们需要实现接口里的方法。

下面我们也说明了 Servlet 的执行过程,也就是 Servlet 的生命周期。

package test;

import javax.servlet.*;
import java.io.IOException;

/**
 * 1.实例化----使用构造方法创建对象
 * 2.初始化----init()
 * 3.服务     service()
 * 4.销毁   destroy()
 */
public class ServletDemo1 implements Servlet {

    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
        //当Servlet第一次被创建对象时执行该方法,该方法在整个生命周期中执行一次
        System.out.println("-------------------init------------------");
    }

    @Override
    public ServletConfig getServletConfig() {
        return null;
    }

    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        //对客服端下ing赢得方法,该方法会被执行很多次,每次请求servlet都会执行该方法
        System.out.println("=========service===========");
    }

    @Override
    public String getServletInfo() {
        return null;
    }

    @Override
    public void destroy() {
        //当tomcat停止时也就销毁servlet
        System.out.println("--=-=-=-=-=destroy()-=-=-=-=-=-=-");
    }
}

继承GenericServlet类

它实现了Servlet接口除了service方法,不过这种方法并不常用

package test;

import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import java.io.IOException;

public class ServletDemo2 extends GenericServlet {
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("*******yohe******");
    }
}

继承HttpServlet类

创建servlet的第三种方法,也是最常用的

package test;

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 ServletDemo3 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("hehe");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("haha");
    }
}

创建第一个Servlet项目

创建一个maven项目

  • 项目结构

    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PxXRpJSG-1643014297733)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1643013039799.png)]
  • pom文件

    • <?xml version="1.0" encoding="UTF-8"?>
      <project xmlns="http://maven.apache.org/POM/4.0.0"
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
          <modelVersion>4.0.0</modelVersion>
      
          <groupId>org.top</groupId>
          <artifactId>ServletDemo</artifactId>
          <version>1.0-SNAPSHOT</version>
          <packaging>war</packaging>
      
          <properties>
              <maven.compiler.source>8</maven.compiler.source>
              <maven.compiler.target>8</maven.compiler.target>
          </properties>
      
          <dependencies>
              <dependency>
                  <groupId>junit</groupId>
                  <artifactId>junit</artifactId>
                  <version>4.12</version>
                  <scope>test</scope>
              </dependency>
      
      
              <dependency>
                  <groupId>javax.servlet</groupId>
                  <artifactId>javax.servlet-api</artifactId>
                  <version>3.1.0</version>
              </dependency>
      
              <dependency>
                  <groupId>javax.servlet.jsp</groupId>
                  <artifactId>jsp-api</artifactId>
                  <version>2.1</version>
              </dependency>
          </dependencies>
      
      </project>
      
    • Test.java文件

      • package com.top.ServletDemo;
        
        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;
        
        public class Test extends HttpServlet {
            //由于get或者post只是请求实现的不同方式,可以互相调用,业务逻辑都一样;
            @Override
            protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
                //响应流
                PrintWriter writer = resp.getWriter();
                writer.println("Hello,Servlet!!");
            }
        
            @Override
            protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        
                super.doPost(req, resp);
            }
        }
        
        
    • web.xml文件

      • <?xml version="1.0" encoding="UTF-8"?>
        <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                 xmlns="http://xmlns.jcp.org/xml/ns/javaee"
                 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">
            <!--注册servlet-->
            <servlet>
                <servlet-name>test</servlet-name>
                <servlet-class>com.top.ServletDemo.Test</servlet-class>
            </servlet>
        
            <!--Servlet请求路径-->
            <servlet-mapping>
                <servlet-name>test</servlet-name>
                <url-pattern>/test</url-pattern>
            </servlet-mapping>
        </web-app>
        
  • 然后配置tomcat

    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-M3JzMcOM-1643014297735)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1643013603023.png)]
    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NMEAJH8v-1643014297735)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1643013624736.png)]
    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HeQwNGQl-1643014297736)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1643013636318.png)]
  • 启动测试:

    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XGxqcwkM-1643014297736)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1643013650114.png)]
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值