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

时间:2010-03-28 03:21:08

标签: java java-ee

我有一些使用Java编写Web应用程序的经验。我的第一个项目使用了Servlets,第二个项目使用了Stripes框架。

但是,我觉得我错过了Java Web开发的大局。我真的不了解web.xml和context.xml文件。我不确定什么构成Java EE应用程序而不是通用Java Web应用程序。我无法弄清楚bean与普通Java类(POJO?)的区别以及它与Enterprise Java Bean(EJB)的区别。这些只是我能想到的前几个问题,但还有更多问题。

了解Java Web应用程序如何从上到下运行的好方法,而不仅仅是如何使用特定框架开发应用程序? (有没有这本书的书?)最后,我想了解Java Web应用程序,以便编写自己的框架。

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

7 个答案:

答案 0 :(得分:5)

我推荐Bates和Sierra的Head First Servlets和JSP。有些人不关心异想天开的风格,但它是Java EE的坚实介绍。 EJB没有涵盖,但一本书无法做到。

答案 1 :(得分:3)

  

我真的不了解web.xml和context.xml文件。

web.xml文件只是一个配置文件,它指示每个过滤器/ servlet加载和实例化的应用程序服务器以及应该调用它们的url模式。

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

appserver在启动时解析这两个文件并相应地执行操作。

  

我不确定什么构成Java EE应用程序而不是通用Java Web应用程序。

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

  

我无法弄清楚bean与普通Java类(POJO?)的区别以及它与Enterprise Java Bean(EJB)的区别。这些只是我能想到的前几个问题,但还有更多问题。

这些只是根据所讨论的课程的目的(和历史)而应用的术语。术语“POJO”是一个(通常是负面)术语,表示Javabean,它只是一个值对象(完全没有业务逻辑,只有getter / setter方法的纯bean),并且通常是一个模型对象,它是“遗留”的一部分使用EJB / Hibernate的程序。有些人称之为VO(价值对象),其他人称之为DTO(数据传输对象),其他人只是称之为“javabeans”。

  

了解Java Web应用程序如何从上到下运行的好方法,而不仅仅是如何使用特定框架开发应用程序? (有没有这本书的书?)最后,我想了解Java Web应用程序,以便编写自己的框架。

Head First Servlets & JSP开始。阅读Servlet API并尝试自己实现一个。但是,HTTP的知识也是强制性的。读取/调试/播放/破解现有开源Servlet API实现的源代码(例如Tomcat)。读取/调试/播放/破解现有开源(MVC)框架的源(例如JSF)。尝试了解它们的工作原理,然后尝试更好地完成它。对于学习路径(“我需要什么技能?”)我在here之前发布了类似的答案。

答案 2 :(得分:2)

查看this question的答案。

此外,我使用Java构建Web应用程序,而不使用传统的基于servlet的方法。我通常使用Restlet来构建RESTful Web应用程序,我将其作为带有嵌入式HTTP服务器的独立Java应用程序运行。 This article详细介绍了使用嵌入式HTTP服务器而不是构建传统Java Web应用程序并将其部署在容器/应用程序服务器中的一些优点。如果您正在构建一个“常规”Web应用程序而不是RESTful(不是必需的,恕我直言),那么请查看Play,这是一个尖端的高级MVC Web框架,允许快速开发少礼。

祝你好运!

答案 3 :(得分:2)

探索Java世界并连接所有点的最佳方法是使用其中一个框架,因为所有框架都使用web.xml,context.xml和Java EE组件(所有这些都可以保留Pojo实体bean)。正如您已经了解Stripes框架一样,我可以推荐这本书(它很简单,处理您命名的所有方面):

  

<强> Stripes: ...and Java Web Development Is Fun Again 下,   作者:Frederic Daoud,   务实的程序员,   ISBN:1934356212

更深入地了解这些Java EE技术的更彻底的方法是获得通过这两个Java认证考试所需的所有知识:

  

Sun认证Web组件开发人员(SCWCD)

     

Sun认证业务组​​件开发人员(SCBCD)

答案 4 :(得分:0)

具有讽刺意味的是,您想要了解Java Web开发的所有原因与您在处理它时遇到很多麻烦的原因相同。为什么每个Java开发人员都想编写Web框架?

但是,严肃地说,Java Web开发有着悠久的历史。从一开始,重量级和轻量级之间就发生了争执。这一切都始于EJB,而且大多数都是糟透了。所有这些都是struts的替代方案。那种也很糟糕。随着Spring引入依赖注入的浪潮,这一切都从那里开始,然后JSF比以往更加复杂。最后,Rails出现了,只是绕着Java提供的所有东西绕圈子。目前的Java框架显示了上一代的一些传统和战斗车,但它已经变得更好。通常,配置较少,尝试更精简,依赖性和层次更少。

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

答案 5 :(得分:0)

如果您想要很好地处理Java EE规范中的所有位以及可能用于Web应用程序的那些位,我强烈建议您查看Java EE Tutorial 。您可以跳过深入的功能描述,因为您最希望获得每种技术的高级概述,其功能以及它如何与其他所有技术相匹配。但是,请阅读一些将Web层,EJB和持久性联系在一起的示例。

答案 6 :(得分:0)

获取"Heads First Servlets and JSP" - 这是一本看起来很奇怪的书,但内容非常好,人们将其作为Sun认证Web组件开发考试(SCWCD)的准备指南,SCJP(Sun Certified Java)程序员)考试是一个先决条件。

你应该认真考虑同时获得SCJP和SCWD,至少是因为你强迫自己通过这些材料。他们不能保证让您成为比现在更好的程序员,但是他们会向您展示(通常)仅在工作场所可用的Java / Java EE材料。

我还在webucator.com上使用了一些自定进度的在线课程,我建议你查看他们的SCJP 5.0Web Services课程(后者类似但不同于Web组件开发。 )

有一些框架可以让Java EE Web开发变得更少痛苦,但是你越了解它们的内容,你对它的了解就越多(并且你将更好地使用它或它的替代品。 )

您可能想要检查的另一本书(也许您应该先检查)是Downey's Web Development with Java: Using Hibernate, Jsp and Servlets。它现已绝版,但有二手待售的副本。唐尼教授用这本书在佛罗里达国际机场开设了Java EE课程。大学涵盖开发数据库驱动的Web应用程序的开始和结束。 *

  • 即使您最终使用OR映射器,您也应该对SQL和关系数据库理论有一定的了解。这种类型的知识与开发非平凡的Web应用程序密切相关。