Web服务器

这篇具有很好参考价值的文章主要介绍了Web服务器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

什么是Web服务器?

Web容器

Servlet

Servlet 规范

Servlet 的API结构

编写Servlet

servlet生命周期(产生到销毁的过程)

服务器产生响应信息的两种格式


什么是Web服务器?

        Web服务器是一个程序,用于接收客户端的请求并将响应发送回客户端。它通常用于处理静态内容,例如HTML文件、图像和CSS样式表等。

缺陷

        传统 Web服务器 的缺陷:产生响应信息时,只能产生静态的html页面。一旦内容更改,就需要修改网页内容,极大影响了响应信息的灵活性。

辅助应用

        在Web服务器之后增加辅助应用,辅助应用可以在Web服务器接收到客户端请求以后,进行一大堆的业务处理,然后,以数据库为介质动态返回数据库中的信息。大大增加响应信息的灵活性。

        Java利用 Web容器+servlet 方式作为辅助应用的解决方案。由Web容器进行底层操作,然后预留servlet接口,交给开发者完成业务操作。

Web容器

        Web容器是Web服务器的一部分,用于处理动态内容。它们一起工作,为Web应用程序提供服务。常见的Web容器包括Tomcat、Jetty和WebLogic等。

        通常,Web服务器会将静态内容发送到客户端,而动态内容会通过Web容器进行处理,然后再将响应发送回Web服务器,并由Web服务器发送回客户端。

特点

通讯支持 按照http协议,将请求信息和响应信息,封装请求对象响应对象,以便更好的接收和发送数据。
Servlet 生命周期管理 Servlet接口的实现类,由Web容器产生、初始化、方法调用、销毁
线程支持 线程的创建、启动、运行、同步、销毁都由Web容器执行
JSP 支持 负责编写JSP引擎,对JSP页面进行翻译

好处

提供动态内容处理 Web容器可以处理动态内容,内容可以根据用户请求实时生成
提高性能 Web容器通过使用线程池和请求管道等技术,可以提高Web应用程序的性能吞吐量
提供安全性 Web容器可以提供对Web应用程序的安全性保护,例如通过对访问进行认证和授权,防止跨站点脚本攻击和SQL注入攻击等
简化开发 Web容器可以简化Web应用程序的开发和部署,提供基础设施和应用程序接口的实现,使开发人员可以更快速地构建Web应用程序
可扩展性 Web容器可以支持多个Web应用程序,这些应用程序可以在同一个Web容器中运行,从而实现共享资源和更高的可扩展性

Servlet

        Servlet是运行在Web服务器或应用服务器上的Java程序,是Web容器和开发者业务组件通信的标准。它可以处理来自Web客户端的请求并生成响应。

        开发者通过实现Servlet接口书写业务操作,Web容器通过Servlet接口调用方法,可以屏蔽开发者业务类的差异。

Servlet 规范

        java对辅助应用的实现,由 WEB 容器+servlet完成。各个厂商在完成具体实现时,各自有各自的标准。这样,对于不同的容器厂商,就会有 API、WEB应用程序结构、以及性能的差异。同一个 WEB应用程序,也就不能在不同厂商的WEB容器运行。

        为了规范不同厂家之间的差异,Sun公司制定了Servlet规范。该规范定义了一系列的标准和一系列的接口。由不同的厂商提供实现类开发者根据接口调用方法,就可以屏蔽不同厂家的差异。WEB应用程序也就有了移植性。

HttpServletRequest、HttpServletResponse 都是接口 ,实现类由 容器厂商提供

Servlet 的API结构

Web服务器

        

Servlet 定义Servlet的行为,包括生命周期方法和处理客户端请求的方法

ServletConfig

定义了Servlet的初始化参数和ServletContext对象的配置
GenericServlet 通用的Servlet实现,实现了Servlet和ServletConfig接口,并提供了一些通用的方法
HttpServlet GenericServlet的子类,专门用于处理HTTP请求,提供了处理HTTP请求的方法

        在Servlet 规范中,定义了Servlet业务接口,提供了service()业务方法交给开发者实现。同时,定义了ServletConfig配置接口,用于读取Servlet初始化信息

        GenericServlet同时实现了Servlet和ServletConfig两个接口,并且重写了大部分方法。但是,没有重写service()方法,该方法应该由子类根据协议的特点去重写。

        HtppServlet是GenericServlet的子类,根据http协议的特点重写了service方法。在service

方法中,根据不同的请求方式,分别去调用doXXX(),处理请求。

编写Servlet

一、继承HttpServlet接口,实现doxxx方法

public class TestServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //doGet()方法调用doPost()方法,以便在处理GET请求时也能响应相同的逻辑
        this.doPost(req,resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html;charset=utf-8");
        //向客户端 输出文本数据
        resp.getWriter().println("hello,world");
    }
}

二、创建tomcat容器,并且注册servlet,完成tomcat启动

 tomcat依赖
 <dependencies>
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-core</artifactId>
            <version>9.0.36</version>
        </dependency>
  </dependencies>
public class MainTomcat {
    public MainTomcat(){
        Tomcat tomcat = new Tomcat();
        //设置启动端口
        tomcat.setPort(8088);
        //引导http引擎
        tomcat.getConnector();
        //创建上下文对象
        Context context = tomcat.addContext("",null);
        //注册servlet
        Wrapper wrapper = Tomcat.addServlet(context,"testServlet",new TestServlet());
        //设置servlet访问路径
        wrapper.addMapping("/test");
        try {
            //启动tomcat
            tomcat.start();
        } catch (LifecycleException e) {
            throw new RuntimeException(e);
        }
    }

    public static void main(String[] args) {
        new MainTomcat();
    }
}

Servlet的URL映射路径有三种

一、精准匹配  /

  wrapper.addMapping("/test");

 客户端以/test 来请求服务器,就能找到对应的servlet

二、拓展匹配  *.

  wrapper.addMapping("*.test");

客户端以.test结尾的请求,都能找到对应的servlet

三、 路径匹配 / /*

  wrapper.addMapping("/test/* ");

客户端以/test/开始的请求,都能找到对应的servlet

servlet生命周期(产生到销毁的过程)

1.web容器加载并实例化servlet

2.调用 init() 方法 完成初始化

wrapper.setLoadOnStartup(0);
  • 如果设置了setLoadOnStartup,且值为0或正数。那么,web容器启动就初始化。(0,1,2为执行顺序,0优先执行)
  • 如果没有设置,或者值为负数。那么web容器会在第一次访问servlet时初始化。

3.当请求到达时,调用service方法,完成业务处理,产生响应信息(每次请求都会执行)

4.销毁阶段,调用destory方法,完成资源清理

服务器产生响应信息的两种格式

1、向客户端 发送文本数据

Witer w = resp.getWiter(); 
  • 得到打印字符流,向客户端输出文本数据

2、向客户端 发送二进制数据文章来源地址https://www.toymoban.com/news/detail-436718.html

OutputStream out = resp.getOutputStream();
  • 得到字节流,向客户端 输出二进制数据

到了这里,关于Web服务器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Servlet路径问题(“/“到底代表什么)-“web应用程序的根目录“与“web站点的根目录“

    JavaWeb——Servlet路径问题(\\\"/\\\"到底代表什么) 在JavaWeb中,使用路径时出现了大量的\\\"/“,而每次使用”“时都感觉其代表的含义是不同的,因此,本篇文章将汇总JavaWeb中的”\\\"出现情况及其所代表的含义。 了解这些\\\"/\\\"含义之前,先来了解绝对路径与相对路径的概念。 提前说一下

    2023年04月25日
    浏览(40)
  • 建站为什么需要服务器?(Web服务器与计算机对比)

    ​ 在部署网站时,底层基础设施在确保最佳性能、可靠性和可扩展性方面发挥着至关重要的作用。虽然大多数人都熟悉个人计算机 (PC) 作为日常工作和个人任务的设备,但 PC 和 Web 服务器之间存在显著差异。在这篇文章中,我们将讨论这些差异是什么,并解释为什么服务器对

    2024年01月20日
    浏览(75)
  • 什么是web服务器?有哪些作用?

    什么是web服务器? Web服务器一般指网站服务器,是驻留于因特网上某种类型计算机的程序,可以向请求终端提供服务,主要功能时存储、处理和传递网页给“客户”,传递内容一般是HTML文档、图像、样式表或脚本等,也可以放置网站文件以供浏览或下载。 Web服务器也称为

    2024年02月12日
    浏览(47)
  • 为什么web项目要打包才能部署到服务器上呢?

            在Web开发中,通常将项目部署到服务器的过程中,会将项目打包为一个可执行的文件或者一组静态资源。以下是一些原因: 1.部署环境的差异: 不同的服务器环境可能具有不同的配置和要求。为了确保应用程序在不同的服务器上可以正常运行,需要将项目打包为

    2024年02月16日
    浏览(56)
  • HTTP 错误 401.3 - Unauthorized 由于 Web 服务器上此资源的访问控制列表(ACL)配置或加密设置,您无权查看此目录或页面。

    用IIS 发布网站,不能访问且出现错误:HTTP 错误 401.3 - Unauthorized 由于Web服务器上此资源的访问控制列表(ACL)配置或加密设置。您无权查看此目录或页面 问题截图: 问题描述:HTTP 错误 401.3 - 未经授权:访问由于 ACL 对所请求资源的设置被拒绝。 原因分析:IIS匿名用户一般属于

    2024年02月05日
    浏览(52)
  • SSE(服务器推送事件)规范

    SSE 是指 \\\"Server-Sent Events\\\",即服务器推送事件。它是一种基于 HTTP 的服务器推送技术,允许服务器实时向客户端推送数据。SSE 规范定义了一种在客户端和服务器之间单向实时通信的方式,通常用于实现服务器向客户端推送更新、通知或实时数据。 使用 SSE,客户端可以通过简单

    2024年01月18日
    浏览(56)
  • RISC-V走向开放服务器规范

    原文:RISC-V Moving Toward Open Server Specification 作者:Agam Shah 转载自:https://www.hpcwire.com/2023/07/24/risc-v-moving-toward-open-server-specification/ 中文翻译: 2023年7月24日 RISC-V International目前正在起草一份可以标准化RISC-V服务器芯片和系统开发的规范,RISC-V International是一个处理指令集架构开

    2024年02月13日
    浏览(34)
  • 【Servlet】图解HTTP请求Tomcat服务器实现前后端交互

    很多同学在学习到Servlet的时候,需要通过Tomcat去接收HTTP的响应以实现这个前后端交互的场景,因此理解起来就比较困难,之前在写Java代码的时候,我们只是在一个程序里面 通过方法1调用方法2以达成基本的代码逻辑 。不过现在呢,我们是去进行一个 前后端的交互 ,本质实

    2024年02月06日
    浏览(43)
  • 安可目录入围产品名单(安可目录入围产品名单 服务器)

     2022-12-15  看点  20 推广 2021信创产品名录有: 1、中孚信息(300659): 公司是专注于信息安全领域的高新技术企业,主营业务为信息安全产品研发,生产销售及信息安全服务。公司主要产品及服务包含信息安全保密产品,商用密码产品,信息安全服务。 2、中科曙光(60

    2024年02月04日
    浏览(70)
  • Spring Security 6.0系列【30】授权服务器篇之JOSE规范

    有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot 版本 3.0.4 本系列Spring Security 版本 6.0.2 本系列Spring Authorization Server 版本 1.0.2 源码地址:https://gitee.com/pearl-organization/study-spring-security-demo

    2024年02月01日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包