V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
zhuyongqi9
V2EX  ›  Java

Servlet 需要深入学习吗

  •  3
     
  •   zhuyongqi9 · Jul 12, 2020 · 7022 views
    This topic created in 2121 days ago, the information mentioned may be changed or developed.
    看了林信良的《 Jsp&Servlet 学习笔记》,很厚的一本,请问大家 Servlet 需要深入学习,了解原理和里面的各种对象,还是只要了解基本的用法就行(如 ServletRequest,ServletResponse,Cookie 等),另外网上都不建议学 JSP,那么用什么来替代呢
    38 replies    2020-07-14 22:09:55 +08:00
    whypool
        1
    whypool  
       Jul 12, 2020
    没必要了
    springboot 一把梭就行了
    brucefu
        2
    brucefu  
       Jul 12, 2020
    种水稻需要深入学习吗?不需要:我只是吃而已,会买就可以了;需要:成为袁隆平那样德高望重的长者
    yuekcc
        3
    yuekcc  
       Jul 12, 2020
    更推荐好好了解一下 http 协议。

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

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

    至于是怎么用 Servlet 的 API, 或者 JSP 的各种神奇 tag,算了吧用的时候查文档就行
    impl
        6
    impl  
       Jul 12, 2020 via Android
    买过这家伙两本厚厚的“读书笔记”,就是人家消化一下又吐出来的东西,没啥营养,建议看看别的。
    zinplus
        7
    zinplus  
       Jul 12, 2020
    2020 年没必要。servlet 和 container 的概念早就过时了。稍微了解一下原理,不必深入。java 直接 springboot+gradle 。
    zhuyongqi9
        8
    zhuyongqi9  
    OP
       Jul 12, 2020
    @impl 是的,他的书感觉非常难读
    Lanayaaa
        9
    Lanayaaa  
       Jul 12, 2020
    看成了 serverless...
    hantsy
        10
    hantsy  
       Jul 12, 2020   ❤️ 7
    只要你是写 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 写代码永远只能写些皮毛。
    Yanickkk
        11
    Yanickkk  
       Jul 12, 2020
    不学,Servlet 直接看看 J2EE 的标准里面就说清楚了,其他的要么不属于 Servlet 要么就是具体实现的部分。
    sagaxu
        12
    sagaxu  
       Jul 12, 2020 via Android
    servlet 不是必须的,spring 也不是。至于 jsp,丢垃圾桶就对了,别浪费时间。
    cjh1095358798
        13
    cjh1095358798  
       Jul 12, 2020
    原理还是需要的
    bigbyto
        14
    bigbyto  
       Jul 12, 2020 via iPhone
    @hantsy 还是有明白人,spring 就是为了解决 javaee 太过复杂而出生的,本身也用了大量 javaee 的规范,servlet 只是其中一小部分而已,要在 java 走的更远,目光也要长远一些。
    cwjokaka
        15
    cwjokaka  
       Jul 12, 2020
    看一下就行
    qwerthhusn
        16
    qwerthhusn  
       Jul 12, 2020
    JSP 放弃,剩下 Servlet 没多少东西了,看你想学多深,你想实现一个 Servlet 容器都行。
    redbelt
        17
    redbelt  
       Jul 12, 2020
    原理肯定要懂得,细节等记忆性的东西可以忽略,你得知道它的运行原理吧,servlet 仍然是当今 Java web 的主流技术。

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

    不过最近的 reactive,所谓响应式编程可以一看。做个对比。
    zhuyongqi9
        18
    zhuyongqi9  
    OP
       Jul 12, 2020
    @hantsy 受教了,感谢老哥
    q8164305
        19
    q8164305  
       Jul 12, 2020 via Android
    原理还是要懂的,具体细节没必要了,大概看看就行了
    chihiro2014
        20
    chihiro2014  
       Jul 12, 2020
    Servlet 都被抛弃了,学 Reactive 把
    dr1q65MfKFKHnJr6
        21
    dr1q65MfKFKHnJr6  
       Jul 12, 2020
    jsp servlet 源于 j2ee 标准, , 要深入研究就看标准文档
    hantsy
        22
    hantsy  
       Jul 12, 2020
    @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  
       Jul 12, 2020
    @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  
       Jul 12, 2020
    servlet 规范一定要看
    hantsy
        26
    hantsy  
       Jul 13, 2020
    @wleexi 请稳步,https://jakarta.ee/
    现在是 Eclipse 基金会下的项目了。
    nutting
        28
    nutting  
       Jul 13, 2020
    你要是已经有 3 年工作经验,基本的 http 相关的应该都了解了,不用深入。如果新手,适当学学
    wleexi
        29
    wleexi  
       Jul 13, 2020
    hantsy
        30
    hantsy  
       Jul 13, 2020
    @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  
       Jul 13, 2020
    hantsy
        32
    hantsy  
       Jul 13, 2020
    Jakarta EE 9 由于 Oracle 协议问题会包括破坏性 API 更新,全部包名,XML Namespace 会启用新的 Jakarta 前缀。

    https://github.com/hantsy/jakartaee9-starter-boilerplate/blob/master/docs/upgrade.md
    wleexi
        33
    wleexi  
       Jul 13, 2020
    @hantsy 意思是关于 Servlet 的规范不能在 jcp.org 查阅了么?
    hantsy
        34
    hantsy  
       Jul 13, 2020
    @wleexi JCP 现存的 API 文档都是 2017 年以前的老版本。
    qq1340691923
        35
    qq1340691923  
       Jul 13, 2020
    必须得了解啊
    Chinsung
        36
    Chinsung  
       Jul 13, 2020   ❤️ 1
    没什么必要,servlet 本身就是个标准,值得学习的是容器的实现。
    但是从你能问出这个问题来看,可以说相等的时间去了解 TCP 连接,HTTP 连接,甚至去用 socket 写一个能处理很简单的 http 请求的 server,都比看一大堆这种所谓的深入要有用。
    这种是你什么时候遇到了开源的 servlet 容器出现问题,需要研究他们实现的时候再去深入的。
    walnsrully
        37
    walnsrully  
       Jul 14, 2020 via Android
    servlet 要学。jsp 不用学。前后端分离已经不需要 view 层了,页面渲染都交给前端的 js 框架了
    wleexi
        38
    wleexi  
       Jul 14, 2020
    @hantsy
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2389 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 84ms · UTC 11:32 · PVG 19:32 · LAX 04:32 · JFK 07:32
    ♥ Do have faith in what you're doing.