• servlet的基本原理


        servlet是Sun公司制定的一种用于扩展web服务器功能的组件规范:是运行在服务器端的应用程序,服务于HTTP下,负责客户端和服务器端的应用处理。这里我需要介绍两个概念,容器和组件。首先我先来介绍什么是组件:组件就是符合规范的,实现特定功能,并且可以部署在容器上的软件模块,简单的说我们写的servlet就是组件。有了组件之后我再来介绍什么是容器:容器就是符合规范,为组件提供运行环境,并且管理组件生命周期的软件程序,常见到的有tomcat,webLogic。

        开发一个Servlet:

        我们可以通过3种方式创建一个Servlet。1.实现Servlet接口、2.继承抽象类GenericServlet、3.继承类HttpServlet。由于我们平时开发的web程序都是基于HTTP的所以我们在编写Servlet是一般都是去继承HttpServlet,重写里面的方法。在创建一个Servlet后我们需要把我们写好的Servlet配置在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_3_1.xsd"
             version="3.1">
    
      <display-name>Archetype Created Web Application</display-name>
      <servlet>
        <servlet-name>testServlet</servlet-name>
        <servlet-class>example.servlet.TestServlet</servlet-class>
      </servlet>
      <servlet-mapping>
        <servlet-name>testServlet</servlet-name>
        <url-pattern>/test</url-pattern>
      </servlet-mapping>
    </web-app>

    之后我们把整个工程进行编译,部署到tomcat目录下进行发布,启动tomcat,访问Servlet,只需要在浏览器中输入http://ip:port/appname/web.xml中对应servlet的url-pattern的配置即可。

        Servlet Web应用的流程

        当用户想浏览器输入访问servlet的地址时:1.首先浏览器通过ip:port连接服务器,这时浏览器将请求的数据按照HTTP协议的标准封装成了一个数据包并发送给了服务器(tcp三次协议握手)。2.服务器(tomcat)创建两个对象:请求对象和响应对象。服务器在解析请求数据包后会将请求的数据放到请求对象中去,方便我们在servlet中使用。(注意:Servlet不会解析请求,这一步交给容器来做的。)这里的请求和响应的对象实际上就是HttpServletRequest和HttpServletResponse接口所对应的实现类。3.根据请求的资源路径找到相应的servlet配置,通过反射创建一个servlet的实例,并调用service()方法,并将之前创建好的请求和响应的对象作为参数传递给service方法。4.在servlet中编写我们自己的业务逻辑,并通过response设置响应给浏览器的数据。(需要我们自己开发)5.服务器从Response中获取到我们写的响应数据,把他们根据HTTP协议封装成一个数据包(响应的数据包)发送给浏览器,关闭连接(tcp四次挥手断开)(6)浏览器解析响应的数据包,取出数据,渲染页面。在整个的流程中我们只需要编写过程4中的servlet的业务逻辑,其他的都由tomcat容器和浏览器封装。

  • 相关阅读:
    Python入门篇-解析式、生成器
    使用Kerberos进行Hadoop认证
    Python标准库-datatime和time
    使用Cloudera Manager部署HUE
    使用Cloudera Manager部署oozie
    使用Cloudera Manager部署Spark服务
    HDFS重启集群导致数据损坏,使用fsck命令修复过程
    关系型数据的收集
    使用Cloudera Manager搭建Kudu环境
    分布式结构化存储系统-Kudu简介
  • 原文地址:https://www.cnblogs.com/suyang-java/p/11183699.html
Copyright © 2020-2023  润新知