J2EE基本介绍

来源:互联网 发布:为什么c语言中提到函数 编辑:程序博客网 时间:2024/06/05 09:22

好久没有写博客了。在实际工作中,发现自己的技术基础真的很差,很多名词概念不知道是什么意思。所以最近下决心恶补一下。这个算是基本篇,以自问自答的形式来解决自己心中的疑惑,如果对另外的人也有帮助,那就是再好不过了。

准备篇

什么是J2EE

全称是Java2 Enterprise Edition。

“J2EE平台本质上是一个分布式的服务器应用程序设计环境——一个Java环境,它提供了:
1. 宿主应用的一个运行基础框架环境。
2. 一套用来创建应用的Java扩展API。”
(引自《J2EE服务器端高级编程》)

J2EE有什么用

J2EE用来建设大型的分布式企业级应用程序。或者用更时髦的名词说就是“电子商务”应用程序。
这些企业可能大到拥有中心数据库服务器,Web服务器集群和遍布全国的办公终端,也可能小到只不过想做一个网站。

J2EE的服务器有哪些

weblogic:性能最好,但是太大,且只能用盗版
jboss:免费,但是文档很少。当然我们这边都是用的jboss
Jrun:开发版免费

tomcat是什么

tomcat不是J2EE的服务器,它是一个web服务器,或者说是web container。如果想学习EJB(enterprise java bean),tomcat是无法满足你的需求

servlet/JSP篇

什么是servlet

一个servlet是java的一个类。它处理http请求并作出响应,包括返回一个html的页面或转交给其他URL处理。
1. servlet必须运行在一个web container中(如tomcat)。
2. servlet必须是javax.servlet.http.HttpServlet的子类。你可以继承doGet()或者doPost()方法,两者分别对应于Http中的get和post请求。

get和post请求的区别
get请求是将参数放在URI里面,且有长度限制(整个url的长度不能超过1024)。而post请求是将请求数据放在http请求之中,要查看需要使用抓包工具(如wireshark)

怎么获得http请求里面的参数

通过httpRequest的getParameter()方法。如:

String paramValue = request.getParameter("paramName");

如何返回结果

可以利用相关的API打开一个输出流,并且向输出流中写入一个html页面。但是这并不是一个好方法。一方面这样太麻烦,另一方面从MVC的角度(J2EE中的Front Controller模式)的观点来看,应当提供一些html或者jsp作为视图(view),而servlet根据请求的参数决定跳转到哪个视图。可以利用response.sendRedirect(…)或request.getDispatcher(…).forward()方法来实现。

sendRedirect和forward有什么不同

sendRedirect是向浏览器发一个通知,浏览器重定向到新的URL。浏览器的地址栏显示的是新的URL。
forward是在服务器端直接跳转到新的URL,对浏览器来说是透明的。浏览器地址栏显示的是sevlet的URL。
所有当目标URL会自动刷新时,两者会有一定的差别。

怎么运行servlet程序

开发J2EE程序有一个部署(deploy)的概念,实际是开发——部署——运行三部曲。
大多数服务器支持hot deploy。只需要在相应的application的目录(具体依赖服务器)下面简离一个服务WAR或EAR格式的目录,启动服务器,就可以通过浏览器访问了。特别的,servlet的class文件应当放在/WEB-INF/classes目录中。
注意:
1. J2EE SDK不支持hot deploy,需要通过deploy tool来部署。
2. tomcat只支持war格式

EAR和WAR有什么不同

EAR是一个完成的J2EE应用程序,包括web部分和EJB部分
WAR只是其中的web部分

EAR格式是怎样的

一个EAR可以包含任意多个WAR或者EJB JAR,并且包含一个META-INF的目录。在/META-INF中包含一个application.xml,其中描述了这个EAR包含哪些模块,以及安全性配置。

WAR格式是怎样的

一个WAR包含一个WEB-INF的目录,这个目录下包含classes目录、lib目录以及web.xml。/WEB-INF/classes存放package组织的class文件,/WEB-INF/lib目录存放jar文件。web.xml描述很多东西。

我访问不到servlet,甚至连HTML文件都访问不到

第一你没有启动服务器,第二你敲错了端口,第三没有正确配置context-path。。第四你的服务器不支持auto reload或者关闭了这一选项,得重启服务器。第五html文件放错了位置。(不能放在/WEB-INF目录下,访问不到)

能访问HTML但是不能访问servlet

请检查web.xml,确保正确定义了<servlet><servlet-mapping>元素。前者标识了一个servlet,后者将一个相对于context-path的url映射到一个servlet。在tomcat中,可以通过/context-path/servlet/package/servletname的形式访问servlet(这只是tomcat的便捷访问方式,并不是正式规范)

什么是JSP?他和servlet有什么区别

可以将JSP当做一个可扩充的html来对待。本质上jsp文件会被服务器自动翻译成相应的servlet来执行。servlet是面向java程序员的,而jsp是面向html程序员的,除此之外两者完全等价

jsp文件放在哪里

如同html文件一样,放在除/WEB-INF以外的任何地方

在JSP里面怎么引用java bean

首先引用的类需要在/WEB-INF/classes下或者在/WEB-INF/lib的某个jar内。
其次在JSP里面加一行

<jsp:useBean id="…" scope="…" class="…"/>

想在servlet之间传递参数

在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
故servlet之间的数据传递可以用session完成

怎么调用cookie

建议使用session,因为总是会遇到某些禁用cookie的用户,这时session会自动使用URL重写来实现

怎么在JSP里面实现文件下载

实际上是一个html的问题,答案是超链接<a>

怎么实现文件上传

客户端是html问题,在form中设置method为post。enctype为multi-part/form-data,加一个<input type="file">。在接收的servlet中就只是一个I/O问题。

我想让页面自动刷新,比如聊天室

这是一个html问题,在<head>部分中加一条<meta http-equiv="refresh" content="5" url="">。这就是所谓的client-push,客户端刷新技术。

我想让用户登录以后才能访问页面

使用声明式的安全措施
只需要在web.xml中定义安全角色(Role),并定义受保护的URL集合只能由特定的Role访问。大多数服务器支持基于数据库的用户映射,你只要在相应的数据库中建立两张表并配置服务器就可以了。
注意J2EE SDK不支持基于数据库的用户映射

什么是JSTL

JSTL是Jsp Standard Tag Library的缩写。这是一组通用标签并将成为JSP 2.0的一部分。
其中包含赋值<c:set>,分支<c:if>,循环<c:forEach>,查询数据库<sql:query>,更新数据库<sql:update>
等。目前你需要像添加自定义标签库一样来添加JSTL,但是可以预计JSP 2.0会将JSTL作为组成部分。
标签库下载

J2SE篇

什么是J2SE

java2 standard edition。

如何才算掌握java

java本身是一种设计非常简单,非常精巧的语言。背后的原理归结起来就两点:
1. JVM的内存管理
理解了这一点,所有和对象相关的问题统统都能解决
2. JVM class loader
理解了这一点,所有和java相关的配置问题,包括各种app server的配置,应用发布问题统统都能解决。

以下几点作为对新手学习的一个参考:
1. 语法:必须比较熟悉,在写代码的时候IDE的编辑器对某一行报错应该能够根据报错信息知道是什么样的语法错误并且知道任何修正。
2. 命令:必须熟悉JDK带的一些常用命令及其常用选项,命令至少需要熟悉:appletviewer、HtmlConverter、jar、java、javac、javadoc、javap、javaw、native2ascii、serialver,如果这些命令你没有全部使用过,那么你对java实际上还很不了解。
3. 工具:必须至少熟练使用一种IDE的开发工具,例如Eclipse、Netbeans、Jbuilder、Jdeveloper、IDEA、Jcreator或者Workshop,包括进行工程管理、常用选项的设置、插件的安装配置以及进行调试。
4. API:Java的核心API是非常庞大的,但是有一些内容笔者认为是必须熟悉的,否则不可能熟练的运用Java,包括:
1)、java.lang包下的80%以上的类的功能的灵活运用。
2)、java.util包下的80%以上的类的灵活运用,特别是集合类体系、规则表达式、zip、以及时间、随机数、属性、资源和Timer。
3)、java.io包下的60%以上的类的使用,理解IO体系的基于管道模型的设计思路以及常用IO类的特性和使用场合。
4)、java.math包下的100%的内容。
5)、java.net包下的60%以上的内容,对各个类的功能比较熟悉。
6)、java.text包下的60%以上的内容,特别是各种格式化类。
7)、熟练运用JDBC。
8)、java.security包下40%以上的内容,如果对于安全没有接触的话根本就不可能掌握java。
9)、AWT的基本内容,包括各种组件事件、监听器、布局管理器、常用组件、打印。
10)、Swing的基本内容,和AWT的要求类似。
11)、XML处理,熟悉SAX、DOM以及JDOM的优缺点并且能够使用其中的一种完成XML的解析及内容处理。
5. 测试:必须熟悉使用junit编写测试用例完成代码的自动测试。
6. 管理:必须熟悉使用ant完成工程管理的常用任务,例如工程编译、生成javadoc、生成jar、版本控制、自动测试。
7. 排错:应该可以根据异常信息比较快速的定位问题的原因和大致位置。
8. 思想:必须掌握OOP的主要要求,这样使用Java开发的系统才能是真正的Java系统。
9. 规范:编写的代码必须符合流行的编码规范,例如类名首字母大写,成员和方法名首字母小写,方法名的第一个单词一般是动词,包名全部小写等,这样程序的可读性才比较好。

J2EE的组件种类

  1. 应用客户组件
  2. EJB组件(enterprise java bean)
  3. servlet及JSP(java server page)组件,也称web组件
  4. Applet

J2EE的分层

  1. 客户层
    J2EE 应用可以是基于Web 的,也可以是不基于Web 的。在一个基于Web 的J2EE 应用中,用户的浏览器在客户层中运行,并从一个Web服务器下载Web层中的静态HTML页面或由JSP或Servlet生成的动态HTML页面。在一个不基于Web的J2EE应用程序中,一个独立客户程序不运行在一个HTML 页面中,而是运行在其他一些基于网络的系统(比如手持设备或汽车电话)中。Applet 程序在客户层中运行,并在不经过Web 层的情况下访问Enterprise Beans。这个不基于Web 的客户层可能也包括一个JavaBeans 类来管理用户输入,并将该输入发送到在企业层中运行的Enterprise Beans类来进行处理。根据J2EE 规范,JavaBeans 类不被视为组件。为J2EE 平台编写的JavaBeans 类有实例变量和用于访问实例变量中的数据的“ get 和set 方法”。以这种方式使用的JavaBeans 类在设计和实现上通常都是简单的,但是它们必须符合JavaBeans 规范中列出的命名和设计约定。
  2. web层
    J2EE Web 组件可以由JSP 页面、基于Web 的Applet以及显示HTML 页面的Servlet组成。调用Servlet或者JSP 页面的HTML 页面在应用程序组装时与Web 组件打包在一起。就像客户层一样,Web 层可能包括一个JavaBeans 类来管理用户输入,并将输入发送到在业务层中运行的Enterprise Beans 类来进行处理。运行在客户层的Web 组件依赖容器来支持诸如客户请求和响应及Enterprise Bean 查询等。
  3. 业务层
    作为解决或满足某个特定业务领域(比如银行、零售或金融业)需要的逻辑的业务代码由运行在业务层的Enterprise Beans 来执行。一个Enterprise Bean 从客户程序处接收数据,对数据进行处理(如果需要),再将数据发送到企业信息系统层存储起来。一个Enterprise Beans 还从存储中检索数据,并将数据送回客户程序。运行在业务层的Enterprise Beans 依赖于容器来为诸如事务、生命期、状态管理、多线程及资源存储池等提供通常都非常复杂的系统级代码。业务层经常被称作Enterprise JavaBeans (EJB )层。业务层和Web 层一起构成了3层J2EE应用的中间层,而其他两层是客户层和企业信息系统层。
  4. 企业信息系统层(EIS,enterprise information system)
    企业信息系统层运行企业信息系统软件,这层包括企业基础设施系统,例如企业资源计划(ERP,Enterprise Resource Planning)、大型机事务处理(mainframe transactionprocessing )、数据库系统及其他遗留信息系统(legacy informationsystems )。J2EE 应用组件因为某种原因( 例如访问数据库) 可能需要访问企业信息系统。J2EE 平台的未来版本将支持Connector 架构,该架构是将J2EE 平台连接到企业信息系统上的一个标准API。

J2EE下组件之间的信息查询

因为一个J2EE 应用程序的组件是单独运行的,并且往往在不同的设备上运行,因此,需要一种能让客户层和Web 层代码查询并引用其他代码和资源的方法。客户层和Web 层代码使用Java 命名和目录接口(JNDI,Java Naming and Directory Interface)来查询用户定义的对象(例如Enterprise Beans )、环境条目(例如一个数据库驱动器的位置)、企业信息系统层中用于查找资源的JDBC DataSource对象,以及消息连接。

0 0
原创粉丝点击