Servlet基础详细版--手动实现Servlet(idea)

      在了解Servlet之前,我们需要先了解一下Tomcat 

z(113条消息) Tomcat服务器的使用_我爱布朗熊的博客-CSDN博客https://blog.csdn.net/weixin_51351637/article/details/126110360?spm=1001.2014.3001.5502

目录

一、了解Servlet

二、手动实现Servlet程序

1. 创建工程 

2.步骤及程序

3.URL地址到Servlet程序的访问(怎么访问到的程序)

 4.Servlet的生命周期


一、了解Servlet

1.Servlet是JavaEE规范之一,规范就是接口

2.Servlet是JavaWeb三大组件之一(三大组件分别是:Servlet程序、Filter过滤器、Listener监听器)

3.Servlet是运行在服务器上的一个java小程序,它可以接收客户端发送过来的请求,并响应数据给客户端。

二、手动实现Servlet程序

1. 创建工程 

2.步骤及程序

①编写一个类去实现Servlet接口

②实现service方法处理请求,并响应数据

③到web.xml中去配置Servlet程序的访问地址

程序

package com.company.web_tomcat;

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

public class HelloServlet2 implements Servlet {
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {

    }


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

    /**
     * service方法专门用来处理请求和响应的
     * @param servletRequest
     * @param servletResponse
     * @throws ServletException
     * @throws IOException
     */
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("hello servlet");
    }

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

    @Override
    public void destroy() {

    }
}
<?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">

<!--    servlet标签给Tomcat配置Servlet程序-->
    <servlet>
<!--    给Servlet程序起一个别名(一般是类名)    -->
        <servlet-name>HelloServlet2</servlet-name>
<!--    是Servlet全类名    -->
        <servlet-class>com.company.web_tomcat.HelloServlet2</servlet-class>
    </servlet>

<!--    servlet-mapping标签给Servlet程序配置一个访问地址,如果不加这个标签的话,上面标签servlet-name便会报错-->
    <servlet-mapping>
<!--     此标签的作用是告诉服务器是告诉服务器,我当前配置的地址是给哪个Servlet程序使用   -->
        <servlet-name>HelloServlet2</servlet-name>
<!--     配置访问地址
         /      斜杠在服务器解析的时候,表示地址为:http://ip:port/工程路径
         /hello  http://ip:port/工程路径/hello                                 -->
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>


</web-app>

下图中蓝色区域“Application context”就是工程路径(可以自行修改)

最终运行成功后,会弹出一个页面,如下图所示(下面访问的是工程路径结尾)

 至于为什么会弹出上图,原因就是我们在index.jsp中编写的内容

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
  <title>JSP - Hello World</title>
</head>
<body>
<h1><%= "Hello World!" %></h1>
<br/>
<a href="hello-servlet">Hello Servlet</a>
</body>
</html>

http://localhost:8080/web_Tomcat_war_exploded/  我们在此路径后面添加hello会发生下图现象

即访问 http://localhost:8080/web_Tomcat_war_exploded/hello

控制台输出了“hello servlet” (此原因就是在上面web.xml中配置的,可在上面仔细阅读xml文件)

3.URL地址到Servlet程序的访问(怎么访问到的程序)

  http://localhost:8080/web_Tomcat_war_exploded/hello

  为什么我们敲上面这个地址,就可以访问到我们的HelloServlet2程序呢? 

 4.Servlet的生命周期

    第一步:执行Servlet构造器方法

    第二步:执行init初始化方法

         第一二步是在第一次访问的时候创建Servlet程序会调用

     第三步:执行service方法(每次访问都会执行)

       

     第四步:执行destroy销毁方法(只有在web工程停止的时候才会执行)

package com.company.web_tomcat;

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

public class HelloServlet2 implements Servlet {
    public HelloServlet2() {
        System.out.println("1 构造器方法");
    }

    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
        System.out.println("2 初始化方法");
    }


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

    /**
     * service方法专门用来处理请求和响应的
     * @param servletRequest
     * @param servletResponse
     * @throws ServletException
     * @throws IOException
     */
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("3 service方法");
    }

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

    @Override
    public void destroy() {
        System.out.println("4 销毁方法");
    }
}

执行web工程

如果将页面一直刷新的话,会不断的执行service方法

 将程序停止

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

我爱布朗熊

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

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

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

打赏作者

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

抵扣说明:

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

余额充值