servlet原理+流程图+简单实现案例(javaweb)

1.servlet原理(转载)

容器负责根据请求的信息找到对应的Servlet,传递Request和Response参数,调用Servlet的service方法,完成请求的响应。

Servlet 的运行模式是一个典型的“握手型的交互式”运行模式。所谓“握手型的交互式”就是两个模块为了交换数据通常都会准备一个交易场景,这个场景一直跟随个这个交易过程直到这个交易完成为止。这个交易场景的初始化是根据这次交易对象指定的参数来定制的,这些指定参数通常就会是一个配置类。所以对号入座,交易场景就由 ServletContext 来描述,而定制的参数集合就由 ServletConfig 来描述。而 ServletRequest 和 ServletResponse 就是要交互的具体对象了,它们通常都是作为运输工具来传递交互结果。

当用户从浏览器向服务器发起一个请求,通常会包含如下信息:http://hostname: port /contextpath/servletpath,hostname 和 port 是用来与服务器建立 TCP 连接,而后面的 URL 才是用来选择服务器中那个子容器服务用户的请求。映射工作有专门一个类来完成的,这个就是 org.apache.tomcat.util.http.mapper,这个类保存了 Tomcat 的 Container 容器中的所有子容器的信息,当 org.apache.catalina.connector. Request 类在进入 Container 容器之前,mapper 将会根据这次请求的 hostnane 和 contextpath 将 host 和 context 容器设置到 Request 的 mappingData 属性中。所以当 Request 进入 Container 容器之前,它要访问那个子容器这时就已经确定了。
2.流程图

3.简单实现案例

servlet实现类

public class HelloServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("doGet...");PrintWriter writer = resp.getWriter();writer.print("Hello Servlet!");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {super.doPost(req, resp);}
}

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_4_0.xsd"version="4.0"><servlet><servlet-name>HelloServlet</servlet-name><servlet-class>com.tang.servlet.HelloServlet</servlet-class></servlet><servlet-mapping><servlet-name>HelloServlet</servlet-name><url-pattern>/hello</url-pattern></servlet-mapping>
</web-app>

index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body>
<form action="/hello">账号: <input type="text" name="zhanghao"><input type="submit">
</form>
</body>
</html>

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.tang</groupId><artifactId>javaweb-02-maven</artifactId><packaging>pom</packaging><version>1.0-SNAPSHOT</version><modules><module>javaweb-servlet02</module></modules><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target></properties><dependencies><dependency><groupId>jakarta.servlet.jsp</groupId><artifactId>jakarta.servlet.jsp-api</artifactId><version>3.0.0</version>
<!--            <scope>provided</scope>--></dependency><dependency><groupId>jakarta.servlet</groupId><artifactId>jakarta.servlet-api</artifactId><version>5.0.0</version>
<!--            <scope>provided</scope>--></dependency></dependencies>
</project>

结果

servlet原理+流程图+简单实现案例(javaweb)相关推荐

  1. JavaWeb中的Servlet原理是什么?(存库,建议收藏)

    Servlet原理 Servlet是由web服务器调用,web服务器在收到浏览器请求之后,经过一系列传输,最后web服务器读取响应信息,将其读取的信息传送到浏览器 Mapping问题: 一个Servl ...

  2. EMD算法之Hilbert-Huang Transform原理详解和案例分析

    目录 Hilbert-Huang Transform 希尔伯特-黄变换 Section I 人物简介 Section II Hilbert-Huang的应用领域 Section III Hilbert ...

  3. SpringMVC简单小案例

    SpringMVC简单小案例 导入spring-webmvc下的所有包 采用Maven导入 <dependency><groupId>org.springframework&l ...

  4. solr简单搜索案例

    solr简单搜索案例 使用Solr实现电商网站中商品信息搜索功能,可以根据关键字搜索商品信息,根据商品分类.价格过滤搜索结果,也可以根据价格进行排序,实现分页. 架构分为: 1. solr服务器 2. ...

  5. VGA成像原理与简单实现

    VGA成像原理与简单实现 前言 一.VGA成像原理 二.VGA成像时序详解 三.VGA成像设计 四.VGA控制器Verilog设计实现 五.TB文件展示 六.仿真结果分析 前言 本篇文章简单记录VGA ...

  6. 【2021软件创新实验室暑假集训】SpringMVC框架(设计原理、简单使用、源码探究)

    系列文章目录 20级 Java篇 [2021软件创新实验室暑假集训]计算机的起源与大致原理 [2021软件创新实验室暑假集训]Java基础(一) [2021软件创新实验室暑假集训]Java基础(二) ...

  7. 简单实用的JavaWeb微投票系统

    简单实用的JavaWeb微投票系统 目的 帮她完成JavaWeb课程设计,也做为练手的小项目: 功能 1.可以实现在个人登陆,在线投票,票数统计的功能: 2.规定每个投票者每天只能投一票,并要求登录成 ...

  8. Android:安卓学习笔记之OkHttp原理的简单理解和使用

    Android OkHttp使用原理的简单理解和使用 OkHttp 0.前言 1.请求与响应流程 1.1 请求的封装 1.2 请求的发送 1.3 请求的调度 1.4 请求的处理 2.拦截器 2.1 R ...

  9. servlet过滤器的简单使用

    为什么要用过滤器或者拦截器? 简单来讲,当一个账户需要进入某个系统调用某个接口时,我们需要对其进行相应验证,否则一旦接口暴露,可能会造成系统崩溃.这个时候我们就需要用拦截器对调用接口一方进行身份验证. ...

  10. python装饰器实例-Python装饰器原理与简单用法实例分析

    本文实例讲述了Python装饰器原理与简单用法.分享给大家供大家参考,具体如下: 今天整理装饰器,内嵌的装饰器.让装饰器带参数等多种形式,非常复杂,让人头疼不已.但是突然间发现了装饰器的奥秘,原来如此 ...

最新文章

  1. Hadoop学习笔记(1) ——菜鸟入门
  2. Excel中将一个表格的数据关联到另一个表格
  3. 开源图像检索工具:CaliphEmir使用方法
  4. Dataset之CIFAR-10:CIFAR-10数据集简介、下载、使用方法之详细攻略
  5. var和dynamic的区别及如何正确使用dynamic?
  6. SAP Spartacus 服务器端渲染单步调试步骤之二:在服务器端执行应用程序 Angular 代码
  7. Python中FileIO
  8. linux使用oracal11g详细过程,很给力的linux下Oracle11g的安装过程及图解.doc
  9. 阿里专家:怎么样消除程序员的中年危机?
  10. 近视矫正手术:准分子激光,飞秒,全飞秒
  11. CentOS导入CA证书
  12. python空气质量提醒代码_【python】全国空气质量分析系统
  13. ISO工具集合,好用推荐,喜欢就下载使用
  14. 自定义邮箱和手机号码的校验规则
  15. HMI-48-【多媒体】Title界面实现 3
  16. 六大原则之迪米特法则
  17. 今日头条推荐算法原理全文详解之一
  18. 312、519、122三大崩盘实战复盘
  19. 污水中去除重金属的工艺解析—离子交换树脂
  20. Improving Knowledge-aware Recommendation with Multi-levelInteractive Contrastive Learning

热门文章

  1. 【伸手党福利】开发人员重装系统顺序
  2. 【MATLAB】QPSK调制与解调在MATLAB平台上的实现
  3. jmeter教程https://max.book118.com/html/2019/0108/6145005114002000.shtm
  4. Chrome浏览器历史版本下载
  5. AppCompatDialog背景透明
  6. sqluldr2的介绍
  7. 基于Hadoop的hbase安装
  8. 正点原子STM32 ISP电路分析
  9. 服务器 启动多个nginx_Nginx工作原理和优化总结
  10. 工具 | Procexp工具使用及案例说明