如何学习高级Java web开发概念

如何学习高级Java web开发概念,java,jakarta-ee,Java,Jakarta Ee,我有一些用Java为类项目编写web应用程序的经验。我的第一个项目使用servlet,第二个项目使用Stripes框架 然而,我觉得我错过了Java web开发的大局。我不太理解web.xml和context.xml文件。我不确定是什么构成了JavaEE应用程序,而不是一般的JavaWeb应用程序。我无法理解bean与普通Java类(POJO?)的区别,以及它与企业Java bean(EJB)的区别。这些只是我能想到的最初几个问题,但还有更多的问题 要了解Java web应用程序如何自上而下运行

我有一些用Java为类项目编写web应用程序的经验。我的第一个项目使用servlet,第二个项目使用Stripes框架

然而,我觉得我错过了Java web开发的大局。我不太理解web.xml和context.xml文件。我不确定是什么构成了JavaEE应用程序,而不是一般的JavaWeb应用程序。我无法理解bean与普通Java类(POJO?)的区别,以及它与企业Java bean(EJB)的区别。这些只是我能想到的最初几个问题,但还有更多的问题

要了解Java web应用程序如何自上而下运行,而不仅仅是如何使用特定框架开发应用程序,有什么好方法?(有这方面的书吗?)


更新:明确地说,我对学习如何使用特定框架(例如Spring或JavaEE)不感兴趣。我正在寻找一个通用Java web应用程序内部的解释。

我推荐Bates和Sierra的Head-First servlet和JSP。有些人不喜欢异想天开的风格,但这是一个坚实的JavaEE介绍。EJB没有被涵盖,但是一本书不能做所有的事情

查看的答案

此外,我使用Java构建web应用程序,根本不使用传统的基于servlet的方法。我通常使用它来构建RESTful web应用程序,并将其作为独立的Java应用程序与嵌入式HTTP服务器一起运行。详细介绍了使用嵌入式HTTP服务器而不是构建传统Java web应用并将其部署在容器/应用服务器中的一些优势。如果您正在构建一个“常规”的web应用程序,而不是RESTful应用程序(IMHO,这不是必需的),那么请查看一个尖端的高级MVC web框架,它允许快速开发,而无需太多繁琐的程序


祝你好运

具有讽刺意味的是,您想要了解所有Java web开发的原因,与您在掌握Java web开发方面遇到如此多的困难的原因相同。为什么每个Java开发人员都想编写web框架

但是,说真的,Java web开发有着极其悠久的历史。从一开始,重量级和轻量级之间就有一场斗争。这一切都是从EJB开始的,它们大多都很糟糕。struts是所有这些的替代品。这也有点糟糕。随着Spring带来依赖注入的浪潮,JSF变得比以往任何时候都复杂。最后,Rails出现了,它只是围绕Java提供的所有东西转了一圈。当前的Java框架展示了上一代的一些遗留问题和战痕,但它已经变得更好了。一般来说,配置更少,并且尝试更精简,依赖项和层更少

不过,为了更直接地回答您的问题,只需看看像tomcat这样的servlet容器和像Glassfish或JBoss这样的完整JavaEE应用服务器之间的区别。它基本上归结为您是否想要使用EJB。如果你打算编写自己的框架,你就不会。基本上,只需看看servlet/servlet容器是如何工作的。除此之外,看看其他框架的源代码

我不太理解web.xml和context.xml文件

web.xml
文件只是一个配置文件,它指示应用服务器在每个应用服务器下加载和实例化过滤器/servlet,以及在哪个url模式上调用这些过滤器/servlet

context.xml
只是另一个配置文件,它指示应用程序在本地存储系统中的每个位置以及应该侦听的域/URL上下文

appserver在启动时解析这两个文件,并采取相应的操作

我不确定是什么构成了JavaEE应用程序,而不是一般的JavaWeb应用程序

不清楚您自己对“JavaEE应用程序”和“通用JavaWeb应用程序”的定义是什么。要回答这样的问题(即使是你自己),你需要查找和/或重新定义定义。但一般来说,有两种javaee应用程序:web应用程序(通常以WAR的风格部署)和企业应用程序(通常以EAR的风格部署)。主要区别在于第二个涉及EJB,因此需要在支持EJB的应用程序上运行(例如Tomcat不支持)

我无法理解bean与普通Java类(POJO?)的区别,以及它与企业Java bean(EJB)的区别。这些只是我能想到的最初几个问题,但还有更多的问题

这些术语的应用取决于相关课程的目的(和历史)。术语“POJO”是一个(通常是否定的)术语,表示一个Javabean,它只是一个值对象(完全没有业务逻辑,纯bean只有getter/setter方法),通常是一个模型对象,是使用EJB/Hibernate的“遗留”程序的一部分。一些人称之为VO(值对象),其他人称之为DTO(数据传输对象),还有一些人称之为“javabeans”

要了解Java web应用程序如何自上而下运行,而不仅仅是如何使用特定框架开发应用程序,有什么好方法?(有这方面的书吗?)

首先。阅读并尝试自己实现一个。然而,知识也是强制性的。读取/调试/播放/破解现有开源Servlet API实现的源代码(例如)。读取/调试/播放/破解现有开源(MVC)框架(例如)的源代码。试着去理解