V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
牛客网
zhuyongqi9
V2EX  ›  Java

Servlet 需要深入学习吗

  •  3
     
  •   zhuyongqi9 · 101 天前 · 3518 次点击
    这是一个创建于 101 天前的主题,其中的信息可能已经有所发展或是发生改变。
    看了林信良的《 Jsp&Servlet 学习笔记》,很厚的一本,请问大家 Servlet 需要深入学习,了解原理和里面的各种对象,还是只要了解基本的用法就行(如 ServletRequest,ServletResponse,Cookie 等),另外网上都不建议学 JSP,那么用什么来替代呢
    38 条回复    2020-07-14 22:09:55 +08:00
    whypool
        1
    whypool   101 天前
    没必要了
    springboot 一把梭就行了
    brucefu
        2
    brucefu   101 天前
    种水稻需要深入学习吗?不需要:我只是吃而已,会买就可以了;需要:成为袁隆平那样德高望重的长者
    yuekcc
        3
    yuekcc   101 天前
    更推荐好好了解一下 http 协议。

    我已经不想再解释 query string 、request body 是什么东西了。
    huntcool001
        4
    huntcool001   101 天前
    JSP 之类的不建议学,里面的各种标签啥的. 现在都是前后端分离了.

    Servlet 的原理,相关源码, Servlet Container 是怎么运作的,Tomcat 的大致的组件构成 这些要看,面试也经常会问到.
    SLKun
        5
    SLKun   101 天前
    看你怎么理解深入学习...
    如果是自己实现一个简单的 Servlet, 那么这个是可以的, 帮助你加深对其设计的理解

    至于是怎么用 Servlet 的 API, 或者 JSP 的各种神奇 tag,算了吧用的时候查文档就行
    impl
        6
    impl   101 天前 via Android
    买过这家伙两本厚厚的“读书笔记”,就是人家消化一下又吐出来的东西,没啥营养,建议看看别的。
    zinplus
        7
    zinplus   101 天前
    2020 年没必要。servlet 和 container 的概念早就过时了。稍微了解一下原理,不必深入。java 直接 springboot+gradle 。
    zhuyongqi9
        8
    zhuyongqi9   101 天前
    @impl 是的,他的书感觉非常难读
    PainAndLove
        9
    PainAndLove   101 天前
    看成了 serverless...
    hantsy
        10
    hantsy   101 天前   ❤️ 6
    只要你是写 Java,Java Web,建议首先看看 Java EE/Jakarta EE 全部规范方面的一些书籍,比如 Oracle 官方的 Java EE Tutorial,当然深入的 Java 技术书我比较推荐 Manning,Appress 的出版物。对 Java EE 规范有一个基本的认识,再选用一些技术框架时,比如 Dropwizard,Vertx,Quarkus,Helidon,Micronaunt,Spring Boot 等,脑子里面就会一个底本,从一种技术切换到另一种也不是什么难事。

    Spring 离不开 Java EE/Jakarta EE 标准规范,Spring 核心框架 Imports 2000 多行规范 APIs,除了 EJB ( Spring 也可以调用 EJB )外,Spring 基本集成了所有的标准。 没有 Java EE 基础,直接上 Spring 写代码永远只能写些皮毛。
    yannxia
        11
    yannxia   101 天前
    不学,Servlet 直接看看 J2EE 的标准里面就说清楚了,其他的要么不属于 Servlet 要么就是具体实现的部分。
    sagaxu
        12
    sagaxu   101 天前 via Android
    servlet 不是必须的,spring 也不是。至于 jsp,丢垃圾桶就对了,别浪费时间。
    cjh1095358798
        13
    cjh1095358798   101 天前
    原理还是需要的
    bigbyto
        14
    bigbyto   101 天前 via iPhone
    @hantsy 还是有明白人,spring 就是为了解决 javaee 太过复杂而出生的,本身也用了大量 javaee 的规范,servlet 只是其中一小部分而已,要在 java 走的更远,目光也要长远一些。
    cwjokaka
        15
    cwjokaka   101 天前
    看一下就行
    qwerthhusn
        16
    qwerthhusn   101 天前
    JSP 放弃,剩下 Servlet 没多少东西了,看你想学多深,你想实现一个 Servlet 容器都行。
    redbelt
        17
    redbelt   101 天前
    原理肯定要懂得,细节等记忆性的东西可以忽略,你得知道它的运行原理吧,servlet 仍然是当今 Java web 的主流技术。

    什么 spring boot,spring mvc 到底不还是 servlet ?

    不过最近的 reactive,所谓响应式编程可以一看。做个对比。
    zhuyongqi9
        18
    zhuyongqi9   101 天前
    @hantsy 受教了,感谢老哥
    q8164305
        19
    q8164305   101 天前 via Android
    原理还是要懂的,具体细节没必要了,大概看看就行了
    chihiro2014
        20
    chihiro2014   101 天前
    Servlet 都被抛弃了,学 Reactive 把
    cedoo22
        21
    cedoo22   101 天前
    jsp servlet 源于 j2ee 标准, , 要深入研究就看标准文档
    hantsy
        22
    hantsy   101 天前
    @chihiro2014
    @redbelt

    Spring 5.0 开始支持 Reactive 编程,但是并不是所有特性都有 Reactive 版本。

    https://github.com/hantsy/spring-reactive-sample

    Servlet Stack 在很长的一段时间还会是主流,与 Reactive Stack 并存。

    另外 Spring 5 也支持 Kotlin Coroutines,本来用 Functional 或者叫流式的程序,又拉直了,看起来和传统的 Servlet 写法一样,因为并不是所有的人都是喜欢 Functional 。

    https://github.com/hantsy/spring-kotlin-coroutines-sample

    同时传统的 Servlet 编程也支持 Functional 类似的写法。

    https://github.com/hantsy/spring-webmvc-functional-sample
    hantsy
        23
    hantsy   101 天前
    @sagaxu JSP 2.0 以后的 XML 兼容方式还是可行的,与之前版本不一样的是一些 JSPParser 是用 XSLT 转换的(这和一些模板引擎一样),不是 Java Compiler 编译的。传统内嵌 Java 代码,编译太扯蛋了,先转译成 Java ( Servlet 代码),Java Compiler 再编译成 Class 运行。

    https://github.com/hantsy/spring4-sandbox/blob/master/mvc-tiles3/src/main/webapp/WEB-INF/views/details.jspx

    我之前到 JSF 1 。2 后,基本都是用 Facelets 了。
    现在很少碰 Java EE 的内置的 Web UI 方案了。现在 REST 前后分开开发看起来不错,但很多时候简单的事情搞复杂了。
    ecoolper
        24
    ecoolper   101 天前
    servlet 规范一定要看
    hantsy
        26
    hantsy   101 天前
    @wleexi 请稳步,https://jakarta.ee/
    现在是 Eclipse 基金会下的项目了。
    nutting
        28
    nutting   100 天前
    你要是已经有 3 年工作经验,基本的 http 相关的应该都了解了,不用深入。如果新手,适当学学
    hantsy
        30
    hantsy   100 天前
    @wleexi Java EE 8.0 ( 2017 )以前是由 SUN/Oracle 主导开发,后面的版本全部移交到了 Eclipse 。

    Jakarta EE 8.0 ( 2019 )是 Eclipse 下发布的第一个版本(除了协议等,和发布的产品命名,API 使用没有太多的变化),Jakarta EE 9.0 在国庆前应该会发布。

    目前 Spring 5.0 已经对齐 Jakarta EE 8.0 。
    hantsy
        31
    hantsy   100 天前
    hantsy
        32
    hantsy   100 天前
    Jakarta EE 9 由于 Oracle 协议问题会包括破坏性 API 更新,全部包名,XML Namespace 会启用新的 Jakarta 前缀。

    https://github.com/hantsy/jakartaee9-starter-boilerplate/blob/master/docs/upgrade.md
    wleexi
        33
    wleexi   100 天前
    @hantsy 意思是关于 Servlet 的规范不能在 jcp.org 查阅了么?
    hantsy
        34
    hantsy   100 天前
    @wleexi JCP 现存的 API 文档都是 2017 年以前的老版本。
    qq1340691923
        35
    qq1340691923   100 天前
    必须得了解啊
    Chinsung
        36
    Chinsung   100 天前
    没什么必要,servlet 本身就是个标准,值得学习的是容器的实现。
    但是从你能问出这个问题来看,可以说相等的时间去了解 TCP 连接,HTTP 连接,甚至去用 socket 写一个能处理很简单的 http 请求的 server,都比看一大堆这种所谓的深入要有用。
    这种是你什么时候遇到了开源的 servlet 容器出现问题,需要研究他们实现的时候再去深入的。
    walnsrully
        37
    walnsrully   100 天前 via Android
    servlet 要学。jsp 不用学。前后端分离已经不需要 view 层了,页面渲染都交给前端的 js 框架了
    wleexi
        38
    wleexi   99 天前
    @hantsy
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1040 人在线   最高记录 5168   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 21:53 · PVG 05:53 · LAX 14:53 · JFK 17:53
    ♥ Do have faith in what you're doing.