IDEA使用两种方式实现第一个Servlet程序

本文介绍通过实现Servlet接口及继承HttpServlet两种方式创建Servlet,并详细说明了配置过程及Servlet生命周期。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一种方式:实现Servlet接口

1、新建一个普通的maven工程

首先新建一个普通的maven工程。记得不要勾选下面的webapp
BRwTmX-2020-11-12-09-49-47
这是新建好的目录结构
w5vcP0-2020-11-12-09-50-26
然后右键项目选择 Add Framework support 最后点击web Application即可
LwABK6-2020-11-12-09-52-36
05f6er-2020-11-12-09-54-32

2、编码

首先在pom.xml文件中加入下面的依赖

     <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.1</version>
            <scope>provided</scope>
        </dependency>

        <!-- https://mvnrepository.com/artifact/javax.servlet/jstl -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>

然后新建一个类去实现Servlet接口,为了方便在service方法中直接打印一句话表示成功相应请求

package top.educy;


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

/**
 * @Author 马小姐
 * @ClassName HelloServlet
 * @Date 2020-11-12 09:55
 * @Version 1.0
 * @Description:
 */
public class HelloServlet implements Servlet{
    public void init(ServletConfig config) throws ServletException {

    }

    public ServletConfig getServletConfig() {
        return null;
    }

    /***
     * @author MacbookPro
     * @param req: service方法专门是去请求和处理相应请求的 
     * @param res: 
     * @return void
     * @version V1.0.0
     * @date 10:02 2020/11/12
     */
    
    public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
        System.out.println("Hello Servlet被打印了");

    }

    public String getServletInfo() {
        return null;
    }

    public void destroy() {

    }
}

3、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">

<!--    配置tomcat服务器-->
    <servlet>
<!--        给servlet程序起别名  一般为类名-->
        <servlet-name>HelloServlet</servlet-name>

        <servlet-class>top.educy.HelloServlet</servlet-class>
    </servlet>

<!--    给servlet程序配置访问地址-->
    <servlet-mapping>
<!--        告诉服务器我当前配置的地址是给哪一个服务器使用-->
        <servlet-name>HelloServlet</servlet-name>
<!--        配置访问地址   /表示服务器访问的时候地址为ip+端口号/工程路径/hello  -->
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>
</web-app>

请仔细看下上述每个标签表示的含义是什么,我都有标注。

4、配置服务器

PeCCex-2020-11-12-10-07-59
yYKRqN-2020-11-12-10-09-06
可以看到成功启动了
在这里插入图片描述
然后在url后面加上我们刚才在web.xml中配置好的访问地址 /hello 再去观察控制台信息
仔细看好我用乃亮绿标注的。
K4wE7b-2020-11-12-10-13-00

第二种方式:继承HttpServlet

1、新建一个类继承HttpServlet并重写doGet doPost方法

package top.educy.servlet;

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;
import java.io.Writer;

/**
 * @Author 马小姐
 * @ClassName ResponseIo
 * @Date 2020-11-16 上午11:38
 * @Version 1.0
 * @Description:
 */
public class ResponseIo extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//        super.doPost(req, resp);

    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//        super.doGet(req, resp);
//        字节输入流和字符输入流只能同时存在一个 不然会报500错误
//        resp.getOutputStream();
//        没有的话会出现中文乱码
        resp.setContentType("text/html;charset=UTF-8");
        PrintWriter writer = resp.getWriter();
        writer.write("你是猪吗");
    }
}

2、配置web.xml

    <servlet>
        <servlet-name>response</servlet-name>
        <servlet-class>top.educy.servlet.ResponseIo</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>response</servlet-name>
        <url-pattern>/response</url-pattern>
    </servlet-mapping>

3、部署项目

在这里插入图片描述

4、输入web.xml配置的url-pattern访问servlet

在这里插入图片描述

结束!
Servlet生命周期:
执行Servlet执行器的构造方法
执行init()的初始化方法
执行service()方法
执行destory()销毁方法

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

2439644676

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值