Servlet:我还活着呢!

Rokid眼镜高精度图像识别的五大工程破局点 图像识别是AR交互的基础能力,其核心在于将现实图像映射为可计算的数字特征,并通过几何建模解算空间姿态。在专用AR眼镜场景中,该过程面临光学畸变、传感器时序错位、低延迟跟踪与人因适配等复合挑战。尤其在工业现场,Rokid Max系列的鱼眼镜头畸变、IMU-视觉异步采样、窄FOV下快速眼动等物理约束,使传统基于AR Foundation或OpenCV的识别方案失效。本文聚焦真实部署中的关键瓶颈,涵盖实时反畸变纹理渲染、原生SDK直调优化、端侧轻量CNN模型(TinyImageNet-Rokid)、IMU-视觉紧 阅读详情

我是Servlet, 由于很多框架把我深深地隐藏了起来,我变得似乎无关紧要了,很多人也选择性的把我给遗忘了。 其实,我还活得好好的呢, 只不过是从前台明星慢慢退居幕后而已。

好基友Servlet + JSP

想当年我刚刚诞生的时候,无数人对我趋之若鹜。

因为那个时候Web服务器只能处理静态的HTML页面,图片,JavaScript这样的东西, 比如Apache 这个著名的Web服务器。

人类想要看一点动态的内容,比如什么留言板,购物网站等,还得靠极为难用的CGI。  

我一出生, 他们就欢呼着把CGI给抛弃,纷纷改用Java写Servlet程序, 再后来我的好兄弟JSP问世,我们简直形成了绝配。

我负责控制,JSP负责视图,再加上负责数据的Java Bean, MVC三驾马车正式形成,风靡一时,想当年,著名的开源论坛软件Jive就是我们的巅峰之作。

640?wx_fmt=png

说起JSP,这小子有时候还不太服我,经常振振有词地说:“你Servlet没什么了不起的,我也可以当Controller!”

JSP确实可以当Controller, 早些年我还真的见过,一个长达6000多行的JSP,行使着Controller的职责,每当程序员要改这些代码就胆颤心惊,叫苦不迭。

其实JSP不知道,它本质上也就是Servlet ,JSP只不过穿了一件漂亮的外衣,给了程序员们一个轻松写动态页面的工具而已,实际运行的时候会被编译成Servlet类, 本质上我们是一样的。

我和JSP都生活在Servlet Container当中,Container这个词有点高大上,但是说白了,无非就是能执行Servlet和JSP的一个东西,比如说Tomcat, 比如说Jetty。

但是无论是我还是JSP, 我们能处理的只是HTTP请求,必须得有人把HTTP请求转发给我们才可以。

这件事情只有让Tomcat, Jetty他们来做了,他们自己可以接收HTTP请求,然后转发给我们;

他们也可以从别人,例如Apache那里接收HTTP请求,然后发给我们处理,处理完了再转发给Apache, Apache再发给人类的浏览器。

虽然有点麻烦, 但是这种方式确实非常灵活,各司其职,扩展性比较好,比如,一个Apache可以把请求分发给后台多个Tomcat中的一个。

Apache,Nginx 他们专心致志地去处理静态内容(HTML, JS, 图片) ,我们这里心无旁骛地执地执行“不讲逻辑的”业务逻辑,访问数据库,然后生成页面返回。

640?wx_fmt=png

Application Server

日子过得波澜不惊,我一度认为,这个世界就将这么运行下去。

应用程序越开发越多,出现了一些通用的需求,比如安全,事务,分布式等等,这些需求应用程序不愿意处理,想丢给操作系统,操作系统也不愿意处理, 那怎么办?

不知道是谁提了一个叫做中间件的概念: 你们不愿意做的,我们中间件来做。

Java 世界也不敢怠慢,也搞出了一大堆的规范,像什么EJB,JMS,JTA等等,把我和JSP也合并到其中,形成一个大“杂烩”,叫做J2EE。

其中最春风得意的就是EJB这家伙,独自生活在EJB Container中(又是Container!),号称能支持真正地分布式计算:一个EJB可以有多个实例,分布到多个服务器中,应对用户的请求, 听起来很高深的技术。

他们把Servlet Container称为Web Container ,  和EJB Container 一起,还有其他的一些东西,被合并到一个叫做Application Server当中去了。 最知名的几个Application Server 就是 Weblogic , WebSphere , JBoss。

国内的金蝶也实现过一个,叫做Apusic,虽然影响力不如前面那几位,但值得赞赏。

640?wx_fmt=png

退居幕后

我和JSP都没有料到,EJB抢了我们的风头,成了系统的中心, 让我们极为不爽。

我和JSP岂能善罢甘休? 我们决定抓住EJB的弱点进行反击, 我们和人类一个叫做Rod Johnson的联合,让他出面,列举出EJB的36大罪状,昭告天下,这些罪状包括但不限于:笨重,性能低下,难于测试,昂贵....

EJB确实是个扶不起的阿斗, 很快就被人批得体无完肤,大家纷纷投入Rod Johnson 创建的Spring的怀抱。

我松了一口气, 可是很快就发现事情不对劲,大家纷纷用起了框架! 比如Struts, SpringMVC......

在这些框架中,我虽然处于一个非常重要的角色, 但是通常情况下只要配置一下web.xml,就可以把我扔到一边了。

Container 照例把HTTP请求传递给我,但是我却不能亲手处理,我需要传递给框架,框架分派给Controller,没我什么事了!

那些程序员们要做的事情就是写Controller, Service , DAO这些和我八班杆子打不着的东西。

我恨框架, 但是看到程序员们写代码写得那么高兴,又无话可说,毕竟框架极大地减少了他们的工作量:

之前对于每个HTTP请求,程序员得手工地去解析URL, 调用相关的Java Bean。

现在只需要用个配置文件或者注解就可以把URL给映射到一个Java 类。

之前对于HTTP请求中的参数, 程序员也得手工解析和验证。

现在也可以直接映射到Java 对象或者变量

......

用起来这么简单,他们不用才怪。

640?wx_fmt=png

更让人生气的是,Rod他们后来倒腾出来一个叫做Spring Boot的东西,彻底地把我给隐藏起来了!

尤其是对于一个新手来说,甚至完全不知道我的存在。

Tomcat和Jetty这样的Servlet Container也很悲催,他们竟然被内嵌到了Spring Boot中! 程序员开发出的Web应用,就像一个普通的Java程序一样,从main函数开始运行。

我们彻底地退居幕后了!

不过我有义务提醒一下学习后端编程的同学,不要一上来就学习框架,不要被框架迷住你的双眼!

还是应该好好看看最基本的Java Web, 就是我和我的兄弟JSP。

威胁来临

虽然是退居幕后,但是我的核心地位依然稳固,是Java Web应用的中坚力量,我生活在Servlet Container中,专门处理HTTP请求,这么多年难逢敌手。

直到有一天,有个叫做Netty的家伙上门挑战。

这个Netty居然完全不用Servlet Container,或者换句话说,人家自己就是一个“Container” , 这对我来说绝对是釜底抽薪的攻击, 我引以为傲的Servlet 规范, Servlet API统统不管用了。

我只能处理HTTP, 可是这个Netty支持各种各样的协议:HTTP, FTP, UDP, 它还支持实现各种各样自定义的协议! 这就意味着程序员完全可以自定义一套自己应用的RPC协议,然后放到Netty上运行。

它的底层是Java NIO,又封装了Java NIO那些复杂的底层细节,可以轻松实现高性能、高可靠的网络服务器, 这实在是太可怕了。

我似乎看到了一个可怕的场景: 用Netty 开发的服务器端,运行着众多的Web 服务,他们之间使用私有的协议在互相调用,效率极高,性能极高, 根本没有Servlet, HTTP, Tomcat什么事。

让我稍感安慰的是,直接使用Netty的程序员们还不多,虽说有不少人在使用基于Netty的Dubbo,  但是Netty也被封装隐藏起来了。 我估计真正具有钻研精神的程序员才愿意去研究他吧。

相关阅读

《JSP :一个装配工的没落》

《小白科普:什么是Netty》

我的新书《码农翻身》火热预售中,首印是8000册,现在预定就能确保最早拿到第一次印刷的书,先睹为快。

640?wx_fmt=png

Tushare Day2——了解stock_basic数据并根据行业和地区进行统计 了解stock_basic数据 1  stock_basic基础信息2  导入包和stock_basic数据、查看基本信息3  根据行业列进行统计3.1  1.先把不同行业列举出来,看一下一共有多少种行业3.2  2.统计每个行业分别有多少家公司3.3  3.把行业从array的二维数组形式变成list形式3.4  4.把行业从list形式转换成文本形式3.5&nbsp 阅读详情

相关推荐

Unity卡牌游戏UI框架:数据驱动与模块化设计实践

在Unity游戏开发中,UI系统是连接玩家与游戏逻辑的关键桥梁,其核心在于实现数据与表现的高效同步。数据驱动设计通过分离数据模型、逻辑状态与视图表现,利用观察者模式自动响应状态变化,确保了代码的清晰与可维护性。这种架构显著提升了开发效率,尤其在需要复杂状态管理和实时反馈的交互场景中,如卡牌游戏的拖拽、布局与动画系统。基于模块化思想,开发者可以将卡牌视图、布局管理、区域控制等组件像积木一样组合,快速构建出动态的手牌弧形布局、战场区域管理等特色功能。通过集成对象池、图集优化等性能方案,还能有效管理绘制调用与网格

weixin_34262482的博客 453

【servlet】servlet技术是否过时?

技术未过时,原始的应用方式过时 原理上未过时(必须掌握的基础知识),应用上已过时(现在几乎最少也用到Spring MVC了吧?)—— 现在还有谁直接用Servlet的呢? 所谓的过时,应该指的是使用原始的servlet与jsp直接开发,都封装成那么方便的框架了,但具体实现还是靠它,总有一天我们会用到它去突破一些瓶颈,掌握牢,靠谱! 需掌握Servlet 因为Servlet是基础的基础,不理...

我的笔记本 8487

EPSON RX8010SJ RTC实战:I2C寄存器配置避坑指南(附完整初始化代码)

本文详细解析了EPSON RX8010SJ RTC芯片在I2C寄存器配置中的常见问题与解决方案,包括TEST位、STOP位和中断控制等关键配置要点。通过实战经验分享和完整的初始化代码模板,帮助开发者避免常见陷阱,确保RTC模块的稳定运行。

weixin_28678831的博客 407

你以为 Servlet 过时了?

Servlet 是规范之一,只是框架在底层帮我们实现了 Servlet,直观上感觉不到 Servlet 的存在,并不是说已经过时了,Servlet 在今后的长时间内还会被广泛使用。

Demo_Null 1457

实验手册(灾难恢复)

我们发现DC1与DC2的复制出现问题,此时我们检查了在DC2中,DC1是否被正确注册。这里选择还原系统状态,因为我们原DC1上只备份了AD的数据,所以我们在新的这台服务器上还原的也是AD数据库。因为我们是单域下的测试,只测试了一个域,所以它会出现这样的报错。我们选择远程共享文件夹,我们备份的时候,是在备份这台服务器上的。同时删除SRV记录,A记录,NS记录,SOA记录,框框里面的所有有关dc1的记录全部删除。如果在企业中AD数据的备份是每周或者每月都会有一次备份,选择恢复AD数据库的时间。

weixin_52364868的博客 1310

【凌智视觉模块】rv1106 部署 pp-humseg 模型

人像分割技术实现摘要 人像分割是利用计算机视觉技术将图像/视频中的人物与背景分离的像素级处理技术。凌智视觉模块基于RV1106芯片开发,支持高效视觉模型部署。当前主流方法包括PP-HumanSeg、BiSeNet等深度学习模型,其中PP-HumanSegV2以96.63% mIoU精度和63FPS手机端速度成为SOTA方案。 实现流程包含: 初始化RKNN模型后端 图像预处理(尺寸调整、颜色空间转换) 执行模型推理 后处理(概率解码、动态阈值分割、形态学优化) 代码实现要点: 使用RKNPU2Backend

m0_50786932的博客 986

都2023年了,Servlet还有必要学习吗?一文带你快速了解Servlet

不得不说,Servlet 确实是一门古老的技术了,现在很少有公司直接使用 Servlet 来写项目了,大家都在用 SpringMVC-Spring-MyBatis / SpringBoot 做开发了,那么都2023年了,Servlet 还需要学习吗?真的有必要吗?本文将对 Servlet 做深入的探讨。

zhangxia_的博客 2万+

「自然语言驱动生产力」17. 秒出端子图:DeepSeek+EPLAN实现机柜布线自动化——电气工程设计的效率革命

摘要:在电气工程设计领域,机柜布线与端子图绘制长期依赖人工操作,存在效率低、易出错等痛点。本文提出基于DeepSeek大模型与EPLAN软件的集成方案,通过自然语言指令驱动自动化设计流程。实验表明,该方案可将PLC柜端子图绘制从传统3小时压缩至2分钟,线号标注准确率达100%,BOM表实现实时导出。文中详细阐述了系统架构、IO配置解析算法、端子排自动生成逻辑及线缆优化策略,提供了完整的Python实现代码与污水处理厂鼓风机控制柜的实际应用案例,验证了自然语言驱动技术在电气工程设计中的实用价值。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 2055

servlet技术是否过时

是原理上未过时(必须掌握的基础知识),应用上已过时(现在几乎最少也用到Spring MVC了吧?)—— 现在还有谁直接用Servlet的呢? 所以还是得掌握Servlet,因为Servlet是基础的基础,不理解它你的脉门就被堵住了。而且很多资料和书籍你可能一开始就看不下去了。 如果了解Struts2或SpringMVC的同学就会知道,其实他俩的底层都离不开Servlet。Struts2的核心用的是Filter(过滤器),而SpringMVC的核心用的就是Servlet。 ...

qfzhaohan的博客 1565

踩过20+工控视觉项目的坑后,我用C# + 海康相机 + YOLOv11实现了零依赖产线缺陷检测

触发式检测:只有光电传感器检测到零件到位,才触发相机拍照和算法检测,不是持续推理,减少工控机性能占用;全链路本地运行:从图像采集、算法推理到不良品剔除,所有逻辑全在本地工控机运行,不需要外网、不需要云端服务,哪怕产线断网也能正常运行;异常降级机制:算法推理异常时,系统自动触发产线缓停,同时声光告警,不会让不良品流到下工序,满足汽车行业IATF16949质量要求;模块化解耦:算法核心层和业务逻辑层完全分离,后续更换YOLO模型、新增缺陷类型,只需要替换模型文件,不需要修改业务逻辑;全链路可追溯。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 153

新版ThingsBoard 4.2.0在windows上用IDEA编译记录

编译thingsboard4.2.0在windows上使用Idea

hssjf的专栏 1483

这几个已经淘汰的Java技术,请不要在继续学了!!!

推荐阅读:接口请求合并的3种技巧,性能直接爆表Java 已经发展了近20年,极其丰富的周边框架打造了一个繁荣稳固的生态圈Java现在他不仅仅是一门语言,而且还是一整个生态体系,它实在是太庞大了,从诞生到现在, 有无数的技术不断的在推出,也有很多技术在不断的被淘汰。这导致很多人不知道到底哪些技术值得学,哪些技术是主流,而哪些技术不应该学呢?从学习Java到现在,也有挺多年的了,见证了许多 Java ...

Java和Android架构 300

基于阿里云物联网平台设计的实时图传系统_采用MQTT协议传输图像

当前基于MQTT协议设计了一个实时图传系统,通过这个项目来演示,两个MQTT设备如何互相订阅,进行消息流转。 在阿里云服务器上创建2个设备,分为为设备A和设备B;设备A负责采集本地摄像头画面上传,设备B负责接收设备A上传的数据然后解析显示出来。在阿里云服务器上需要配置云产品流转,让设备A的数据上传后自动发送给设备B。这样就完成了视频画面数据的流转。不过因为阿里云的最大数据限制,每次最大发送10240字节的数据。

1万+

码农翻身——Servlet:我还活着呢!

  我是Servlet, 由于很多框架把我深深地隐藏了起来,我变得似乎无关紧要了,很多人也选择性的把我给遗忘了。 其实,我还活得好好的呢, 只不过是从前台明星慢慢退居幕后而已。 好基友Servlet + JSP 想当年我刚刚诞生的时候,无数人对我趋之若鹜。 因为那个时候Web服务器只能处理静态的HTML页面,图片,JavaScript这样的东西, 比如Apache 这个著名的Web服务器。...

u012510849的专栏 377

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

走进JavaWeb技术世界2:JSP与Servlet的曾经与现在

Servlet:我还活着呢! 转自:刘欣码农翻身1周前 我是Servlet, 由于很多框架把我深深地隐藏了起来,我变得似乎无关紧要了,很多人也选择性的把我给遗忘了。 其实,我还活得好好的呢, 只不过是从前台明星慢慢退居幕后而已。 好基友Servlet + JSP 想当年我刚刚诞生的时候,无数人对我趋之若鹜。 因为那个时候Web服务器只能处理静态的HTML页面,...

Java技术江湖 7120

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

初学springmvc遇到“源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示。“错误

我通过复制已有项目的web.xml、applicationContext.xml,创建了一个新的springmvc项目,但是配置controller的映射路径都不能正常访问。 我重新创建项目,手敲web.xml、applicationContext.xml,问题还在。 对比发现pom.xml有差异: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"

qq_27361945的博客 4213

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Spring MVC关于源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示。

Spring MVC 404 两种情况分析 今天总结的时候发现的问题: 第一种 你在applicationContext.xml文件里配置的包扫描把 controller层的包给扫描了这是错误的,applicationContext.xml文件不应该扫描控制层,需要把他排除掉 在applicationContext.xml写如下代码! <context:component-scan base-package="com"> <context:exclude-filt

m0_46456778的博客 1万+

web中常见错误之404 原始服务器没有找到目标资源的当前表示,或者不愿意公开该目标资源。

错误如图:错误原因:web文件放在WEB-INF目录下,如图结构:正确结构应该是:注意两者区别,后者web文件是位于WebContent文件夹中的。错误原因:Web-INF文件夹下面的文件是受保护的,用户不能直接访问。修改以后就能正常运行...

qll19970326的博客 6万+

Java开发之servlet技术是否已经过时?

Java Servlet是运行在Web服务器或应用服务器上的程序,它是作为来自 Web浏览器或其他HTTP客户端的请求和HTTP服务器上的数据库或应用程序之间的中间层。使用Servlet,可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。   最近在一些论坛大家甚至发出了”servlet技术已经过时“的言论,servlet技术真的已经成为过去式了吗?我的答案是...

码农王也的博客 1万+

Servlet技术过时了吗?看了这个就会明白

Servlet 是Java Servlet的简称,是一种服务连接器,也是Java语言实现的一个借口类。支持Java的应用服务器都可以实现。Servlet可以相应任何类型的请求,至今在服务器开发领域仍然有比较广泛的使用。为了可以更加清晰直观的认识Servlet,我们可以将其和JSP加以对比。 J...

chiran9291的博客 744

码农翻身讲网络3:从Socket编程到HTTP服务器

小白科普:从输入网址到最后浏览器呈现页面内容,中间发生了什么?(HTTP请求)原创: 老刘 码农翻身 1月2日1前言这篇文章是应网友之邀所写,主要描述一下我们访问网站时, 从输入网址到最后浏览器呈现内容,中间发生了什么。之前写过两篇文章《我是一个网卡》,《我是一个路由器》描述了一个电脑如何通过DHCP、ARP、NAT等上式获取IP、然后访问网络的过程,主要专注在传输层和网络层。今天的文章主要专注于...

Java技术江湖 2373

JAVAWEB项目遇到的404问题原始服务器没有找到目标资源的当前表示,或者不愿意公开该目标资源

404原始服务器没有找到目标资源的当前表示,或者不愿意公开该目标资源 解决方案 有人专门私信我说,让我单独写下,那我就提取出来吧 如果出现404的问题,那么久检查你的web项目是否部署完整, 一般出现“404 原始服务器没有找到目标资源的当前表示,或者不愿意公开该目标资源。” 就是应该检查你的web.xml 有没有放在WEB-INF之内, 相信有的小伙伴有时候在本地服务器的web...

鹿先森的博客 4万+
上一篇: 有了MacBook,你还缺点啥?
下一篇: 你是怎么管理时间的?
码农翻身
码农翻身 《码农翻身》作者 《码农翻身》作者
博客等级 码龄8年 3万+粉丝 1084原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值