Servlet

Servlet是一种Java技术,用于构建Web应用程序,通过HTTP协议与客户端交互。文章介绍了Servlet的发展历程,从最初的ServletAPI到现在的Servlet4.0,包括接收和处理HTTP请求、响应、数据源访问以及与其他Web组件交互等功能。此外,还展示了如何创建一个简单的Servlet示例,强调了Servlet映射在Web应用中的重要性。

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

介绍servlet之前,先看看客户端向服务器请求资源,服务器怎么响应资源的,如下图:

用户输入一个地址从发起请求到接收响应,中间经过哪些服务,每个服务做什么事情的流程图_北京彭于晏的博客-CSDN博客

 

Servlet发展史

Servlet是一种用于Web开发的Java技术,最初是由Sun Microsystems开发,后来被Oracle收购。Servlet的发展史可以分为以下几个阶段:

  1. Servlet 1.0:1997年发布,它提供最基本的Servlet API,包括Servlet接口、ServletRequest接口、ServletResponse接口等。

  2. Servlet 2.0:1998年发布,这个版本引入了Session管理、Cookie等功能,并提供了更加灵活的Servlet配置方式。

  3. Servlet 2.1:2000年发布,这个版本加入了过滤器(Filter)功能,可以将请求传递给多个Servlet处理。

  4. Servlet 2.2:2002年发布,这个版本加入了JSP(JavaServer Pages)支持,使得Servlet和JSP可以结合使用。

  5. Servlet 2.3:2001年发布,这个版本加入了Web应用上下文组件和监听器等功能。

  6. Servlet 2.4:2003年发布,这个版本引入了标注(annotation)功能,使得开发人员可以更加方便地使用Servlet API。

  7. Servlet 2.5:2006年发布,这个版本引入了注解配置方式,使得Servlet应用程序的配置更加简单、灵活。

  8. Servlet 3.0:2009年发布,这个版本加入了异步处理、注解方式的安全控制、文件上传等功能。

  9. Servlet 3.1:2013年发布,这个版本加入了NIO2支持、Servlet和Web Socket的结合等新特性。

随着Servlet API的不断完善,Java Web开发变得越来越简单、方便。目前最新的Servlet规范是Servlet 4.0,它于2017年发布,其中包括了HTTP/2支持、HttpServletMapping注解、事件机制等新特性。

什么是Servlet?

Servlet是一种Java技术,通常用于构建基于Web的应用程序。Servlet在Web服务器上运行,并通过HTTP协议来与客户端进行通信。Servlet可以接收HTTP请求并生成HTTP响应,以便实现Web应用程序的功能。

Servlet可以执行以下操作:

  1. 接收HTTP请求:Servlet可以获取HTTP请求中的参数、头信息和请求体等内容。

  2. 处理HTTP请求:Servlet可以执行业务逻辑,对HTTP请求进行处理。

  3. 生成HTTP响应:Servlet可以发送HTTP响应,包括HTTP头信息和响应体。

  4. 访问数据源:Servlet可以连接到数据库或其他数据源,从而访问和处理数据。

  5. 与其他Web组件交互:Servlet可以与其他Web组件,如JSP、HTML页面、标准JavaBean等互动,以构建完整的Web应用程序。

了解了servlet是什么,我们现在看一下下面这个图:

话不多说,那下一步我们开始上手代码,创建一个servlet,这里需要导入servlet的jar包,servlet继承HttpServlet,然后重写doGet和doPost方法

package com.qcnel;

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 HelloServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        resp.setContentType("text/html;charset=UTF-8");
        resp.getWriter().write("进入了servlet");
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
       doPost(req, resp);
    }
}

pom.xml依赖

<dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>4.0.1</version>
      <scope>provided</scope>
    </dependency>

如果需要运行servlet项目,还需要在web.xml中配置servlet的映射路径,一个是servlet的注册,一个是servlet的请求路径

 

创建web项目,会默认有index.jsp,这里我除了创建servlet,还创建了html

 

 

 在运行项目之前,先看一下我项目的默认路径

 启动项目,会默认走index.jsp,要是想走servlet项目或者html就必须先写它,例如:http://localhost:8080/s1/hello

访问默认路径,结果如下:

http://localhost:8080/s1/

 访问servlet路径,结果如下:

 访问html,结果如下:

 总结:配置servlet和静态页面,在浏览器输入请求路径,然后跳转到该页面。在idea中,配置web项目,默认会有index.jsp页面,当配置好tomcat后,修复fix的时候,如果没有填写路径,进入浏览器就是该路径,运行tomcat就会跳转index.jsp页面,自己可以加页面,但必须在index.jsp这个页面路径的前提下,如果要配置servlet项目,servlet项目的路径就是index.jsp的路径加上servlet项目的路径

有人想过servlet为什么需要映射吗?

Servlet 需要映射,是为了让服务器能够正确地找到并处理客户端请求,并将响应返回给客户端。具体来说,通过映射,可以将客户端请求的 URL 映射到相应的 Servlet 类,并由该类处理请求,并生成响应结果。如果没有映射,服务器将无法知道客户端请求的是哪个 Servlet,也无法返回正确的响应。因此,映射对于 Servlet 的正常运行是至关重要的。

web.xml中是配置我们web的核心应用

拓展:

我们可以在servlet映射路径修改成/*,*是通配符,所以输入任何字符,都会走servlet这个页面

 Mapping问题

1.一个servlet可以指定一个映射路径

 

2.一个servlet可以指定多个映射路径

3.一个servlet可以指定通用映射路径

4.指定一些后缀或者前缀等等

 

优先级问题

指定了固有的映射路径优先级最高,如果找不到就会走默认的处理请求

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值