J2EE是什么语言


****** 版权声明 ********
* 在完整保留此版权声明并接受下列条款的前提下,你可以自由的获取、存储、使用、修改、分发本文。
* 由于你可能自第三方获得本文,作者不保证本文的正确性和一致性。
* 作者也不对任何因使用本文而造成的直接或间接的经济损失或其他损失负责,即使事先你已告知这一风险。
* 如果你修改并分发本文,并且未附加任何版权声明,则该版权声明自动适用于你修改和添加的内容。
* 如果你修改并分发本文,并且附加了你的版权声明,你应当明确标明你修改和添加的内容,并声明你的版权声明只适用于你修改和添加的内容,其余内容仍然使用本版权声明。
* 如果你在分发本文的过程中直接或间接地、有意或无意地获利,你应当公开分发一份完全一致和免费的本文复制品,该复制品不必包括你修改或添加的内容。
* 作者: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
javax.activation Interface CommandObject -------------------------------------------------------------------------------- public interface CommandObject Activation Framework 所知的 JavaBean 组件实现此接口,以找出请求这些组件执行的命令动词,并获取表示这些组件要操作的数据的 DataHandler。不实现此接口的 JavaBean 也同样可以使用。这类命令可以使用 Externalizable 接口或特定于应用程序的方法来获取数据。 英文文档: JavaBeans components that are Activation Framework aware implement this interface to find out which command verb they're being asked to perform, and to obtain the DataHandler representing the data they should operate on. JavaBeans that don't implement this interface may be used as well. Such commands may obtain the data using the Externalizable interface, or using an application-specific method. -------------------------------------------------------------------------------- Method Summary void setCommandContext(String verb, DataHandler dh) Initialize the Command with the verb it is requested to handle and the DataHandler that describes the data it will operate on. Method Detail public void setCommandContext(String verb, DataHandler dh) throws java.io.IOException 用请求处理的动词和描述将要操作的数据的 DataHandler 来初始化 Command。注:调用者为 DataHandler 传递 null 值是可以接受的。 verb 此对象引用的 Command Verb。 dh DataHandler。 英文文档: setCommandContext void setCommandContext(String verb, DataHandler dh) throws IOExceptionInitialize the Command with the verb it is requested to handle and the DataHandler that describes the data it will operate on. NOTE: it is acceptable for the caller to pass null as the value for DataHandler. Parameters: verb - The Command Verb this object refers to. dh - The DataHandler. Throws: IOException
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值