有什么网站可以做简历/沧州网站优化

有什么网站可以做简历,沧州网站优化,网页制作dreamweaver平台,资阳网站建设<前文回顾> 点击此处查看 合集 https://blog.csdn.net/foyodesigner/category_12907601.html?fromshareblogcolumn&sharetypeblogcolumn&sharerId12907601&sharereferPC&sharesourceFoyoDesigner&sharefromfrom_link <今日更新> 一、Servle…

 <前文回顾>

点击此处查看 合集 https://blog.csdn.net/foyodesigner/category_12907601.html?fromshare=blogcolumn&sharetype=blogcolumn&sharerId=12907601&sharerefer=PC&sharesource=FoyoDesigner&sharefrom=from_link

<今日更新>

一、Servlet 3.0:JavaWeb 的“新纪元”

Servlet 3.0 在 2009 年发布,是 JavaWeb 开发的“新纪元”。它引入了两大新特性:异步处理 和 注解配置。异步处理让 Servlet 能“一心多用”,注解配置让 Servlet 能“轻装上阵”。

1. 异步处理:Servlet 的“一心多用”

异步处理是 Servlet 3.0 的“杀手锏”,它让 Servlet 能“一心多用”,处理多个请求。异步处理的核心是 AsyncContext,它能让 Servlet 把请求“挂起”,等处理完了再“唤醒”。

Java Code

@WebServlet(urlPatterns = "/async", asyncSupported = true)

public class AsyncServlet extends HttpServlet {

    protected void doGet(HttpServletRequest request, HttpServletResponse response)

        throws ServletException, IOException {

        AsyncContext asyncContext = request.startAsync();

        asyncContext.start(() -> {

            try {

                Thread.sleep(5000); // 模拟耗时操作

                asyncContext.getResponse().getWriter().write("异步处理完成!");

            } catch (Exception e) {

                e.printStackTrace();

            } finally {

                asyncContext.complete();

            }

        });

    }

}

2. 注解配置:Servlet 的“轻装上阵”

注解配置是 Servlet 3.0 的“轻装上阵”,它让开发者能用注解配置 Servlet,不用再写 web.xml 了。注解配置的核心是 @WebServlet,它能定义 Servlet 的 URL 模式、初始化参数啥的。

Java Code

@WebServlet(name = "MyServlet", urlPatterns = "/myServlet", initParams = {

    @WebInitParam(name = "param1", value = "value1"),

    @WebInitParam(name = "param2", value = "value2")

})

public class MyServlet extends HttpServlet {

    protected void doGet(HttpServletRequest request, HttpServletResponse response)

        throws ServletException, IOException {

        String param1 = getInitParameter("param1");

        String param2 = getInitParameter("param2");

        response.getWriter().write("param1: " + param1 + ", param2: " + param2);

    }

}

二、异步处理的“实战演练”

异步处理虽然“高大上”,但用起来得“小心”。异步处理的核心是 AsyncContext,它能让 Servlet 把请求“挂起”,等处理完了再“唤醒”。

1. 启动异步处理

异步处理得用 request.startAsync() 启动,启动后 Servlet 就能“一心多用”了。

Java Code

AsyncContext asyncContext = request.startAsync();

2. 处理异步请求

异步处理得用 asyncContext.start() 处理,处理完后得用 asyncContext.complete() 结束。

Java Code

asyncContext.start(() -> {

    try {

        // 模拟耗时操作

        Thread.sleep(5000);

        asyncContext.getResponse().getWriter().write("异步处理完成!");

    } catch (Exception e) {

        e.printStackTrace();

    } finally {

        asyncContext.complete();

    }

});

3. 设置超时时间

异步处理得设置超时时间,防止请求“卡死”。超时时间得用 asyncContext.setTimeout() 设置。

Java Code

asyncContext.setTimeout(10000); // 10秒

三、注解配置的“实战演练”

注解配置虽然“轻装上阵”,但用起来得“灵活”。注解配置的核心是 @WebServlet,它能定义 Servlet 的 URL 模式、初始化参数啥的。

1. 定义 Servlet

Servlet 得用 @WebServlet 定义,定义后 Servlet 就能“轻装上阵”了。

Java Code

@WebServlet(name = "MyServlet", urlPatterns = "/myServlet")

public class MyServlet extends HttpServlet {

    protected void doGet(HttpServletRequest request, HttpServletResponse response)

        throws ServletException, IOException {

        response.getWriter().write("Hello, World!");

    }

}

2. 定义初始化参数

Servlet 的初始化参数得用 @WebInitParam 定义,定义后 Servlet 就能“灵活配置”了。

Java Code

@WebServlet(name = "MyServlet", urlPatterns = "/myServlet", initParams = {

    @WebInitParam(name = "param1", value = "value1"),

    @WebInitParam(name = "param2", value = "value2")

})

public class MyServlet extends HttpServlet {

    protected void doGet(HttpServletRequest request, HttpServletResponse response)

        throws ServletException, IOException {

        String param1 = getInitParameter("param1");

        String param2 = getInitParameter("param2");

        response.getWriter().write("param1: " + param1 + ", param2: " + param2);

    }

}

3. 定义过滤器

过滤器得用 @WebFilter 定义,定义后过滤器就能“轻装上阵”了。

Java Code

@WebFilter(urlPatterns = "/*")

public class MyFilter implements Filter {

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)

        throws IOException, ServletException {

        // 过滤逻辑

        chain.doFilter(request, response);

    }

}

四、Servlet 3.0 的“历史”:从 Servlet 2.5 到 Servlet 4.0

Servlet 3.0 从 Servlet 2.5 开始就有了,虽然现在 Servlet 4.0 已经“普及”了,但 Servlet 3.0 的“核心功能”依然没变。

1. Servlet 2.5:初代“老黄牛”

Servlet 2.5 在 2005 年发布,是 Servlet 的“初代老黄牛”。虽然功能简单,但已经能满足大部分开发需求了。

2. Servlet 3.0:引入异步处理与注解配置

Servlet 3.0 在 2009 年发布,引入了异步处理与注解配置,让 Servlet 的“玩法”更加丰富。

3. Servlet 4.0:支持 HTTP/2

Servlet 4.0 在 2017 年发布,支持 HTTP/2[1],让 Servlet 的性能更上一层楼。HTTP/2 的引入,让 Servlet 的“玩法”更加高效。

五、Servlet 3.0 的“骚操作”

1. 异步处理的“超时处理”

异步处理得设置超时时间,防止请求“卡死”。超时时间得用 asyncContext.setTimeout() 设置,超时后得用 asyncContext.complete() 结束。

Java Code

asyncContext.setTimeout(10000); // 10秒

asyncContext.addListener(new AsyncListener() {

    public void onTimeout(AsyncEvent event) throws IOException {

        event.getAsyncContext().getResponse().getWriter().write("请求超时!");

        event.getAsyncContext().complete();

    }

});

2. 注解配置的“多 URL 模式”

Servlet 的 URL 模式能定义多个,用 urlPatterns 数组定义。

Java Code

@WebServlet(urlPatterns = {"/myServlet", "/myServlet2"})

public class MyServlet extends HttpServlet {

    protected void doGet(HttpServletRequest request, HttpServletResponse response)

        throws ServletException, IOException {

        response.getWriter().write("Hello, World!");

    }

}

3. 注解配置的“过滤器链”

过滤器能定义多个,用 @WebFilter 定义,过滤器链的顺序得根据类名的字母顺序决定。

Java Code

@WebFilter(urlPatterns = "/*")

public class MyFilter1 implements Filter {

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)

        throws IOException, ServletException {

        // 过滤逻辑

        chain.doFilter(request, response);

    }

}

@WebFilter(urlPatterns = "/*")

public class MyFilter2 implements Filter {

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)

        throws IOException, ServletException {

        // 过滤逻辑

        chain.doFilter(request, response);

    }

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/73570.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用 Homebrew 安装 OpenJDK 并配置环境变量

在 macOS 上使用 Homebrew 安装 OpenJDK 是一种简单而高效的方式。本文将使用 Homebrew 安装 OpenJDK&#xff0c;并设置环境变量以便 Java 能够正确运行。 1. 安装 Homebrew 首先&#xff0c;确保你的 macOS 系统已经安装了 Homebrew。如果没有安装&#xff0c;可以通过以下…

【C语言】编译和链接详解

hi&#xff0c;各位&#xff0c;让我们开启今日份博客~ 小编个人主页点这里~ 目录 一、翻译环境和运行环境1、翻译环境1.1预处理&#xff08;预编译&#xff09;1.2编译1.2.1词法分析1.2.2语法分析1.2.3语义分析 1.3汇编1.4链接 2.运行环境 一、翻译环境和运行环境 在ANSI C…

【AWS入门】AWS云计算简介

【AWS入门】AWS云计算简介 A Brief Introduction to AWS Cloud Computing By JacksonML 什么是云计算&#xff1f;云计算能干什么&#xff1f;我们如何利用云计算&#xff1f;云计算如何实现&#xff1f; 带着一系列问题&#xff0c;我将做一个普通布道者&#xff0c;引领广…

Flutter_学习记录_ ImagePicker拍照、录制视频、相册选择照片和视频、上传文件

插件地址&#xff1a;https://pub.dev/packages/image_picker 添加插件 添加配置 android无需配置开箱即用&#xff0c;ios还需要配置info.plist <key>NSPhotoLibraryUsageDescription</key> <string>应用需要访问相册读取文件</string> <key>N…

蓝桥与力扣刷题(蓝桥 星期计算)

题目&#xff1a;已知今天是星期六&#xff0c;请问 20^22 天后是星期几? 注意用数字 1 到 7 表示星期一到星期日。 本题为填空题&#xff0c;只需要算出结果后&#xff0c;在代码中使用输出语句将所填结果输出即可。 解题思路&#xff0b;代码&#xff1a; 代码&#xff1…

向量数据库原理及选型

向量数据库 什么是向量什么是向量数据库原理应用场景 向量数据库的选型主流向量数据库介绍向量数据库对比主流向量数据库对比表 选型建议 什么是向量 向量是一组有序的数值&#xff0c;表示在多维空间中的位置或方向。向量通常用一个列或行的数字集合来表示&#xff0c;这些数…

以实现生产制造、科技研发、人居生活等一种或多种复合功能的智慧油站开源了

AI视频监控平台简介 AI视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒&#xff0c;省去繁琐重复的适配流程&#xff0c;实现芯片、算法、应用的全流程组合&#xff0c;从而大大减少企业级应用约95%的开发成本。用…

软考系统架构师 — 3 操作系统

目录 3.1 考点分析 3.1 操作系统概述 3.1.1 操作系统的功能 3.1.2 操作系统的分类 3.1.3 嵌入式操作系统主要特点 3.2 进程 3.2.1 进程的组成和状态 3.2.2 前趋图与进程资源图&#xff08;重点&#xff09; 3.2.3 进程同步与互斥 3.2.4 进程调度 3.2.5 死锁 3.3 线…

C++初阶——类和对象(三) 构造函数、析构函数

C初阶——类和对象&#xff08;三&#xff09; 上期内容&#xff0c;我们围绕类对象模型的大小计算&#xff0c;成员存储方式&#xff0c;this指针&#xff0c;以及C实现栈和C语言的比较&#xff0c;进一步认识了C的封装特性。本期内容&#xff0c;我们开始介绍类的默认成员函…

矩阵幂(矩阵k次幂)

矩阵幂 #include<stdio.h> //矩阵乘法 void cf(int a[20][20],int b[20][20],int result[20][20],int n){for(int i0;i<n;i){for(int j0;j<n;j){result[i][j]0;for(int k0;k<n;k){result[i][j]a[i][k]*b[k][j];}}} }void print(int a[20][20],int n){for(int…

自己动手打造AI Agent:基于DeepSeek-R1+websearch从零构建自己的Manus深度探索智能体AI-Research

第一章&#xff1a;AI Agent基础与DeepSeek-R1架构解析&#xff08;1/10&#xff09; 1.1 AI Agent技术演进与核心价值 人工智能代理&#xff08;AI Agent&#xff09;经历了从规则驱动到数据驱动的范式转移。早期基于专家系统的符号主义方法&#xff08;如MYCIN医疗诊断系统…

DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加列宽调整功能,示例Table14_13可展开行的固定表头表格

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕 目录 DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加列宽调整功能,示例Table14_13可展开行的固…

Gemini Robotics:将人工智能带入物理世界

25年3月来自谷歌的技术报告“Gemini Robotics: Bringing AI into the Physical World”。 大型多模态模型的最新进展&#xff0c;已使数字领域出现卓越的通才能力&#xff0c;但将其转化为机器人等物理智体仍然是一项重大挑战。一般有用的机器人需要能够理解周围的物理世界&am…

生活中的可靠性小案例11:窗户把手断裂

窗户把手又断了&#xff0c;之前也断过一次&#xff0c;使用次数并没有特别多。上方的图是正常的把手状态&#xff0c;断的形状如下方图所示。 这种悬臂梁结构&#xff0c;没有一个良好的圆角过渡&#xff0c;导致应力集中。窗户的开关&#xff0c;对应的是把手的推拉&#xff…

多元时间序列预测的范式革命:从数据异质性到基准重构

本推文介绍了一篇来自中国科学院计算技术研究所等机构的论文《Exploring Progress in Multivariate Time Series Forecasting: Comprehensive Benchmarking and Heterogeneity Analysis》&#xff0c;发表在《IEEE Transactions on Intelligent Transportation Systems》。论文…

印章/公章识别:PaddleX下的“Seal-Recognition”模型

最近做项目需要对印章进行识别&#xff0c;并提取其中的印章文字&#xff0c;又不希望这个模型太大&#xff0c;还要方便部署&#xff0c;于是乎这个模型是个不错的选择。 一、模型简介 “Seal-Recognition”模型是PaddleX旗下的一款模型&#xff08;PaddleX 是基于飞桨框架构…

算法专题一:双指针

1.移动零 题目链接&#xff1a;283. 移动零 - 力扣&#xff08;LeetCode&#xff09; 我们可以定义一个dest&#xff0c;一个cur&#xff0c;dest表示数组中不为零的数的最后一位&#xff0c;cur用来遍历数组 class Solution {public void moveZeroes(int[] nums) {for(int cur…

Linux驱动开发-①pinctrl 和 gpio 子系统②并发和竞争③内核定时器

Linux驱动开发-①pinctrl 和 gpio 子系统②并发和竞争③内核定时器 一&#xff0c;pinctrl 和 gpio 子系统1.pinctrl子系统2.GPIO子系统 二&#xff0c;并发和竞争1.原子操作2.自旋锁3.信号量4.互斥体 三&#xff0c;按键实验四&#xff0c;内核定时器1.关于定时器的有关概念1.…

数据库的高阶知识

目录 一、case when二、几种常见的嵌套查询2.1 比较运算符2.2 ANY/ALL 关键词2.3 in 关键词2.4 EXISTS关键词2.5 in和exists的异同点 三、开窗函数 数据库的基本知识 数据库的高阶知识 一、case when 在实际工作中&#xff0c;经常会涉及以下两类问题&#xff1a; 数据的映射…

MapReduce处理数据流程

&#xff08;一&#xff09;Shuffle MapReduce中的Shuffle过程指的是在Map方法执行后、Reduce方法执行前对数据进行分区排序的阶段 &#xff08;二&#xff09;处理流程 1. 首先MapReduce会将处理的数据集划分成多个split&#xff0c;split划分是逻辑上进行划分&#xff0c;…