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
    评论
### 回答1: 在创建Maven项目时,如果没有添加servlet-api依赖,可能会出现无法编译和运行Web应用程序的问题。这是因为servlet-api是一组Java类和接口,用于开发Servlet程序。如果没有这些类和接口,Java编译器将无法识别HttpServletRequest和HttpServletResponse等Servlet相关的类和方法。 要解决这个问题,可以手动添加servlet-api依赖。在pom.xml文件中,添加以下依赖: ``` <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> </dependency> ``` 这将让Maven自动下载并包含所需的servlet-api JAR文件。如果使用了其他本的servlet-api,则需要相应地更改本号。 另外,可以选择使用Web项目模板来创建Maven项目。这将自动包括servlet-api依赖项,从而避免了手动添加依赖项的步骤。在Eclipse和IntelliJ IDEA等现代IDE中,都提供了Web项目模板来简化Web应用程序的创建和管理。 总之,为了顺利编译和运行Web应用程序,需要在Maven项目中添加servlet-api依赖项。可以手动添加依赖项,也可以使用Web项目模板来自动添加依赖项。 ### 回答2: 在使用IDEA创建Maven项目时,可能会出现没有servlet-api的情况。这是因为servlet-api不是Maven中默认依赖的部分。如果需要在项目中使用servlet相关的API,需要手动添加servlet-api的依赖。 解决此问题的步骤如下: 第1步:在pom.xml文件中添加servlet-api依赖。 在pom.xml文件中添加以下依赖: ```xml <dependencies> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> <scope>provided</scope> </dependency> </dependencies> ``` 第2步:更新项目 在Maven项目中,应该从Maven Projects面板中更新项目以让Maven解析新依赖项。 第3步:重新构建项目 在更新项目之后,应该重新构建项目以确保servlet-api包已包含在项目中。重新构建可以通过执行以下操作完成: - 选择“Build”菜单; - 选择“Rebuild Project”选项。 第4步:使用servlet API 在添加依赖和重新构建项目后,可以在项目中使用servlet API了。 总结:在使用IDEA创建Maven项目时,如果需要使用servlet API,需要手动添加servlet-api的依赖。添加依赖项、更新项目、重新构建项目后,即可使用servlet API了。 ### 回答3: 当我们使用IDEA创建一个Maven项目时,会发现servlet-api并没有被包含在项目中。这是因为servlet-api是JavaEE的标准,而Maven项目入门模板是基于JavaSE的,没有包含这一扩展。 那么,如何解决这个问题呢?下面是具体的解决方案: 1. 手动添加servlet-api依赖 可以在项目的pom.xml文件中手动添加servlet-api依赖,如下所示: ``` <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>{servlet-api本号}</version> </dependency> ``` 其中,servlet-api本号可以根据自己的需要进行设置。 2. 通过Maven导入servlet-api 在Maven的仓库中,servlet-api是可以找到的。因此,我们可以通过在项目中添加如下依赖,直接从Maven仓库中导入servlet-api: ``` <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>{servlet-api本号}</version> <scope>provided</scope> </dependency> ``` 其中,scope为provided,表示该依赖只在编译和测试时使用,在运行时会由应用服务器提供。 3. 使用webapp Maven archetype创建项目 webapp Maven archetype是一种特殊的Maven模板,它已经包含了servlet-api和其他Web相关依赖。因此,使用这个模板创建的项目就不会有缺少servlet-api的问题了。 以上是关于解决IDEA创建Maven项目没有servlet-api的三种方法。不同的方法适合不同的场景,在使用中要根据实际情况进行选择。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

我爱布朗熊

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

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

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

打赏作者

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

抵扣说明:

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

余额充值