****** 版权声明 ********
* 在完整保留此版权声明并接受下列条款的前提下,你可以自由的获取、存储、使用、修改、分发本文。
* 由于你可能自第三方获得本文,作者不保证本文的正确性和一致性。
* 作者也不对任何因使用本文而造成的直接或间接的经济损失或其他损失负责,即使事先你已告知这一风险。
* 如果你修改并分发本文,并且未附加任何版权声明,则该版权声明自动适用于你修改和添加的内容。
* 如果你修改并分发本文,并且附加了你的版权声明,你应当明确标明你修改和添加的内容,并声明你的版权声明只适用于你修改和添加的内容,其余内容仍然使用本版权声明。
* 如果你在分发本文的过程中直接或间接地、有意或无意地获利,你应当公开分发一份完全一致和免费的本文复制品,该复制品不必包括你修改或添加的内容。
* 作者:slhynju
* ©right 2003-4-9
*************************/
一、准备篇
1 什么是J2EE?它和普通的Java有什么不同?
答:J2EE全称为Java2 Platform, Enterprise Edition。
“J2EE平台本质上是一个分布式的服务器应用程序设计环境——一个Java环境,它提供了:
·宿主应用的一个运行基础框架环境。
·一套用来创建应用的Java扩展API。”(引自《J2EE服务器端高级编程》)
2 J2EE好学吗?
答:J2EE是很多技术的集合体,并且还在成长中。
你会遇到很多专有名词:比如(X)HTML,Servlet/JSP,JDBC,JMS,JNDI,EJB,XML,Web Service……。
尤其是XML和Web Service正在快速成长。幸运的是,你不需要等到学会所有技术后再开始编程。
大体上J2EE可以分成3个主要应用:Servlet/JSP,EJB,XML/Web Service 和一些支撑技术例如JDBC和JNDI。
你可以一个一个的学。
3 J2EE有什么用?
答:用来建设大型的分布式企业级应用程序。或者用更时髦的名词说就是“电子商务”应用程序。
这些企业可能大到拥有中心数据库服务器,Web服务器集群和遍布全国的办公终端,也可能小到只不过想做一个网站。
4 学J2EE有前途吗?
答:在这一市场目前只有一种技术可以和J2EE竞争,那就是Microsoft的.NET。
相对来说.NET要“新”一些而J2EE要“老”一些。
但是.NET只能用于Windows平台(Microsoft声称要开发C#在Linux上的虚拟机但是尚未兑现该诺言),
考虑到Linux的发展势头,你可以相信.NET不会一统天下。
5 据说J2EE的性能不如.NET好,是真的吗?
答:在Sun公司提供的样例程序Pet Store上,Microsoft声称不如相同的.NET程序好。
而Sun公司反驳说这一程序不能真正体现J2EE的性能,并且指责Microsoft在数据库上做了优化。
作者没有学习过.NET因而不能妄下断言。
无论如何,大型分布式程序中的性能瓶颈通常首先来自于错误的设计。
6 听你说了这么多,我想学着玩玩。
答:除非你想靠它当饭吃或者作为技术储备,否则请不要浪费你的时间。
Flash要好玩得多。计算机游戏就更加好玩了。
7 学习J2EE该怎么开始?
答:首先,下载一个J2EE服务器。其次,去java.sun.com下载J2EE的API。第三,找一本好的参考书。最后,找一个顺手的IDE。
J2EE服务器。你可以用Sun的J2EE SDK(免费),或者Weblogic(性能最好,但是太大,而且作者不推荐盗版行为),或者JBoss(免费,就是文档太少),或者JRun(开发版免费,作者用这个)。参考书作者感觉Wrox的《J2EE服务器端高级编程》不错,但是太老(作者手头的是2001年中文版)。你还需要去下载一些最新的技术资料(当然肯定是英文的)。
IDE如果你的机器配置够好(内存至少512M以上,256M或以下请勿考虑),可以用IBM的WSAD,不然就继续用Eclipse或者其他。
你也可以经常去水木清华的Java版逛逛,但是在发贴前先看看精华区里有没有你要的答案。
8 我下了一个J2EE服务器但是不会配置。
答:请认真阅读随机指导文档,不同的服务器的配置都不一样,作者爱莫能助。
9 我发现你没有提到Tomcat。
答:Tomcat只是一个Web服务器,更准确地说主要只是一个Web Container。
如果你想要学习EJB的话,Tomcat无法满足你的需要。
二、 Servlet/JSP篇
10 什么是Servlet?
答:一个Servlet是一个Java类。它处理Http(s)请求并作出响应,包括返回一个HTML页面或转交给其他URL处理。
Servlet必须运行在一个Web Container例如Tomcat中。
Servlet必须是javax.servlet.http.HttpServlet的子类,
你可以继承doGet()或者doPost()方法,两者分别对应于Http(s)中的Get请求和Post请求。
11 我怎么获得Http请求里的参数?
答:HttpRequest的getParameter()方法。例如:String paramValue = request.getParameter("paramName");
12 我怎么返回结果?
答:你可以利用相关API打开一个输出流,并向流中直接写入一个HTML页面。
但是作者完全不赞成这样做。一方面这样做会很罗嗦。
另一方面从Model-View-Controller模式(在《J2EE核心模式》中被归为Front Controller模式)的观点来看,
你应当提供一些HTML或者JSP作为视图(view),而Servlet则根据请求参数决定转到哪一个视图。
你可以利用response.sendRedirect(...)方法或request.getDispatcher(...).forward()方法来实现。
13 sendRedirect()和forward()有什么不同?
答:sendRedirect()是向浏览器发送一个redirect通知,浏览器重定向到新的URL。
而forward是在服务器端直接转到新的URL,对于浏览器是透明的。
前者浏览器的地址栏显示的是新的URL,后者浏览器的地址栏显示的是Servlet的URL。
因而当目标URL会自动刷新时,两者会造成一些差别。
14 我写了一个Servlet程序,怎么运行它?
答:开发J2EE程序有一个部署(deploy)的概念,实际上是开发——部署——运行的三部曲。
大多数服务器支持Hot deploy。你只需要在相应的Application目录(具体路径依赖于服务器)下面
建立一个符合WAR或EAR格式(参见16,17)的目录,启动服务器,就可以通过浏览器访问了。
特别的,你的Servlet的class文件应当放在/WEB-INF/classes目录中。
注意J2EE SDK不支持Hot deploy,你需要通过它的deploy tool来部署。
Tomcat只支持WAR格式。
15 EAR和WAR有什么不同?
答:EAR是一个完整的J2EE应用程序,包括Web部分和EJB部分。
WAR只是其中的Web部分。
16 EAR格式是怎样的?
答:一个EAR可以包含任意多个WAR或EJB JAR,并且包含一个META-INF的目录。
在/META-INF中包含了一个application.xml,其中描述了这个EAR包含哪些模块,以及安全性配置。
细节请看参考书。
17 WAR格式是怎样的?
答:一个WAR包含一个WEB-INF的目录,这个目录下包含classes目录,lib目录和web.xml。
/WEB-INF/classes存放按package组织的class文件,/WEB-INF/lib目录存放jar文件,
web.xml描述了很多东西,请读参考书。
18 我的普通HTML文件应当放在哪里?
答:放在除了/WEB-INF以外的其他地方。
19 我访问不到servlet,甚至连HTML文件都访问不到!
答:第一你没启动服务器。第二你敲错了端口。第三你没有正确配置context-path。
第四你的服务器不支持auto reload或者你关闭了这一选项,你得重启服务器。
第五确认你没有把HTML放在/WEB-INF目录下,那是访问不到的。
20 我能访问HTML但是访问不到servlet。
答:请检查你的web.xml文件。确保你正确定义了<servlet>和<servlet-mapping>元素。
前者标识了一个servlet,后者将一个相对于context-path的URL映射到一个servlet。
在Tomcat中你可以通过/context-path/servlet/package/servletname的形式访问servlet,
但是这只是Tomcat的便捷访问方式,并不是正式规范。
细节请看参考书。
21 什么是JSP?它和Servlet有什么区别?
答:你可以将JSP当做一个可扩充的HTML来对待。
虽然在本质上JSP文件会被服务器自动翻译为相应的Servlet来执行。
可以说Servlet是面向Java程序员而JSP是面向HTML程序员的,除此之外两者功能完全等价。
22 我的JSP显示的汉字是乱码。
答:在你的JSP开头加上一行 <%@ page contentType="text/html; charset=gb2312"%>
如果你已经声明了page我想你知道该怎么修改。
23 JSP文件存放在哪里?
答:除了/WEB-INF下的任何地方。
24 在JSP里面怎么引用Java Bean。
答:首先,确认你要引用的类在/WEB-INF/classes下或在/WEB-INF/lib的某个jar内。
其次,在JSP里加一行 <jsp:useBean id="..." scope="..." class="..."/>
具体解释请看参考书。
25 我想在servlet间传递数据。
答:利用session。在Servlet/JSP中,你可以在4个地方保存数据。
1) page,本页面。
2) session,用来存放客户相关的信息,比如购物车,对应接口为javax.servlet.http.HttpSession。
session机制实际上是cookie和URL Rewrite的抽象,服务器会自动使用cookie或URL Rewrite来实现。
3) request,可以在forward()时传递信息,对应接口为javax.servlet.http.HttpRequest。
4) application,或称context,存放全局信息,对应接口为javax.servlet.ServletContext。
26 怎么调用cookie?
答:作者建议使用session,你总是会遇到某些禁用cookie的用户。这时session会自动使用URL重写来实现。
27 怎么在JSP里面实现文件下载?
答:实际上这是一个HTML的问题。答案是一个超链接<a>。
28 怎么实现文件上传?
答:客户端是HTML问题,在form中设置method为post,enctype为multi-part/form-data,加一个<input type="file">。
而在接收的servlet中只是一个I/O问题。
29 我想让页面自动刷新,比如聊天室。
答:这是一个HTML问题,在<head>部分中加一条<meta http-equiv="refresh" content="5" url="...">。
这是所谓的Clinet-push,客户端刷新技术。
30 我想让用户登录以后才能访问页面。
答:使用声明式安全措施。
你只需要在web.xml中定义安全角色(Role),并定义受保护的URL集合只能由特定Role访问。
大多数服务器支持基于数据库的用户映射,你只要在相应数据库中建立两张表并配置服务器就可以了。
注意J2EE SDK不支持基于数据库的用户映射。
细节请看参考书和服务器文档。
31 我想要能注册用户。
答:参看30。在接受注册请求的Servlet中执行写入数据库操作即可。
32 怎么在JSP中访问数据库?
答:标准做法是使用DAO模式,定义一个Java bean来访问数据库并在JSP中使用。
然而,当你的数据库模式很简单时,你可以使用JSTL中的<sql:query>标签来快速访问。
33 什么是JSTL?
答:JSTL是Jsp Standard Tag Library的缩写。这是一组通用标签并将成为JSP 2.0的一部分。
其中包含赋值<c:set>,分支<c:if>,循环<c:forEach>,查询数据库<sql:query>,更新数据库<sql:update>
等。目前你需要像添加自定义标签库一样来添加JSTL,但是可以预计JSP 2.0会将JSTL作为组成部分。
标签库可以在 http://jakarta.apache.org 下载。注意JSTL需要在支持JSP1.2或更高版本的容器下运行。
帮助文件可以阅读sun的JSTL正式规范。
J2EE是什么,Java高手进!!!
简单的说,J2EE平台本质上是一个分布式的服务器应用程序设计环境
复杂的说:J2EE是很多技术的集合体,并且还在成长中。比如说:
(X)HTML,Servlet/JSP,JDBC,JMS,JNDI,EJB,XML,Web Service……
首先,会用java写一些类,写一些jsp,这只是J2EE中的很小一部分, 即使自己或者几个哥们一块写个小项目,那也是用到了J2EE中的一部分;甚至于,某个公司的一个相关的大项目,它还是J2EE中的一部分,因为不会那么项目,能将J2EE所涵盖的技术都应用到项目中去.. 而且,J2EE中的所包括的技术每时每刻都在发展,新的技术也在出现.... 呵呵,, 没人敢说: 我已经精通了J2EE....
夸夸其谈了这么多,其实java并不难学,很容易上手,有C的基础就能写java代码.一般学java无非都是从最初的在控制台上打出 Hello ,java 开始,下一步就是结合jsp/servlet技术写出简单的网页,然后就是结合数据库,做出最简单的增删改的功能. 然后开始运用一些开源的框架,比如spring,struts 优化自己的项目.
学习过程中我感觉读别人的源码,读别人的程序,读别人的项目,然后比葫芦画瓢先剽窃到自己的项目中,读的多了,自然对这些技术也慢慢熟悉了. 还好java开源项目太多了,,,有的东西让自己去读...
我的组织能力太差咧... 有些东西,脑子里想的老清楚了,就是笔下写不出来... 再一点,就是去描述J2EE是个什么东东,也有点难度..
不知道lz能否看的明白我写的东东呢..
有兴趣继续交流,,可以给我信息,,hi我... 一块进步嘛!
Saga.maodrc/ 2009-4-30 22:16:32
分享到:
相关推荐
J2EE(java语言企业版).chm J2EE(java语言企业版).chm J2EE(java语言企业版).chm
### J2EE 指南知识点详解 #### J2EE 概述 J2EE(Java 2 Platform, Enterprise Edition)是一种广泛应用于企业级应用程序开发的平台标准和技术框架。它基于Java SE,并针对大型分布式系统提供了更为丰富的特性和功能...
J2EE(Java 2 Platform, Enterprise Edition)是基于Java语言的一种企业级应用开发平台,它侧重于企业级应用的开发。J2EE技术的出现,弥补了Java在企业级应用中的不足,其核心是Enterprise JavaBeans(EJB),提供了...
j2ee是什么 j2ee(Java Platform 2 Enterprise Edition)是Sun Microsystems(现在是Oracle Corporation)开发的一种企业级Java应用程序开发平台。J2EE提供了一组API和工具来帮助开发者快速构建、部署和管理大型...
ANTLR 2.7.6是一个强大的解析器生成器,常用于构建语言和解析表达式。在描述中,ANTLR被指出是运行PetClinic(由Hibernate3驱动)的必要组件。 **AOP Alliance和Spring AOP** AOP Alliance 1.0是面向切面编程...
### J2EE指南知识点梳理 #### 一、J2EE平台简介 - **定义与背景**:J2EE(Java 2 Platform, Enterprise Edition)是一个用于开发和部署可移植、健壮、可伸缩且安全的多层Web应用的企业级Java平台。1993年8月,随着...
Java反射机制是Java语言的一项强大特性,它允许在运行时检查类的信息,如类名、方法、属性等,并能动态创建对象和调用方法。反射在J2EE中用于实现一些高级功能,例如: 1. **动态代理**:通过反射可以创建动态代理...
J2EE 是基于 Java 语言的,它提供了一个完整的解决方案,用于开发基于网络的应用程序。 J2EE 的由来是为了解决传统应用程序模型的缺陷。传统应用程序模型有很多缺点,例如代码复用、代码可维护性、代码的修改十分...
Servlet是Java编程语言中的一个接口,用于扩展服务器的功能。在J2EE 1.5中,Servlet API提供了一套处理HTTP请求和响应的方法,如`doGet()`、`doPost()`等,使得开发者能够创建动态web应用程序。Servlet容器(如...
它们与 JSP 标准标签库(JSTL)和表达式语言(EL)结合,提供了灵活的页面渲染能力。 4. **企业 Bean**:EJB(Enterprise JavaBeans)是 J2EE 中的核心组件,分为会话Bean、实体Bean和消息驱动Bean。它们用于实现...
教程以生动的故事形式展开,讲述了J2EE的发展历程,从Oak语言到Java的转变,以及Java技术如何在互联网编程中崭露头角。 1. **Java的起源与发展**:1993年,作者加入了太阳公司,当时的项目是基于Oak语言的,主要...
XSLT(Extensible Stylesheet Language Transformations)是一种基于XML 的样式表语言,用于将XML 文档转换为其他格式的文档。在XSLT 中,如果没有任何模版匹配XML 中的某个标签,那么转换的结果中将包含该标签和其...
J2EE平台基于Java编程语言,为开发者提供了一套全面的API集合,旨在简化大型、分布式、多层企业应用程序的开发过程。它不仅支持Web应用开发,还涵盖了企业信息系统集成、事务处理、安全控制、消息传递等多个方面。 ...
JDBC(Java Database Connectivity)是Java语言中的数据库连接API,用于连接和操作数据库。 在课程报告中,要求学生使用J2EE技术开发一个简单的学生管理系统,实现用户登陆、注册、选课等功能。学生需要使用JSP、...
《J2EE体系CHM帮助文档大全》是一个包含多种J2EE相关技术资源的压缩包,旨在为Java开发者提供全面的学习材料。这个压缩包里涵盖了从基础到高级的各种主题,包括Hibernate学习笔记、J2EE全实例教程、JSF中文教程、...
1. **Servlet**:Servlet是Java编程语言中的一个接口,用于扩展服务器的功能。它允许开发人员创建动态响应HTTP请求的Web应用程序。Servlet API定义了Servlet的生命周期方法,如init(), service()和destroy(),以及...
《J2EE技术大全》是一本详尽涵盖J2EE平台主流技术的综合指南,旨在为开发者提供全面、深入的J2EE学习资源。J2EE(Java 2 Platform, Enterprise Edition)是Java平台的一个版本,专为构建企业级分布式应用而设计。...
JDBC(Java Database Connectivity)是Java语言中用于连接和操作数据库的API。JDBC提供了一种标准的方式来连接和操作不同的数据库管理系统。JDBC的操作过程通常包括加载驱动程序、建立连接、执行SQL语句、处理结果等...
J2EE的起源可以追溯到1990年代,当时Oak语言(后更名为Java)被开发出来,用于创建跨平台、安全且易于传输的代码。随着互联网的兴起,Oak被重新定位为面向Internet的语言,诞生了WebRunner浏览器和Applet技术。1995...