J2EE课程结业论文

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

J2EE包括的主要技术

霍涵静

学号:2008210619

摘要:今天,越来越多的开发人员都想编写分布式的,事务型的企业及应用程序,以及平衡速度、安全及服务器方可靠度的技术。如果你已经在这个领域工作,你应该知道在当今的快速变换及需求的电子商务及信息技术的世界里,企业应用程序需要设计、编译、产生低价位的、高速的、占用少量资源的程序。为了缩减开发成本,快速跟踪企业应用的设计和开发,J2EE技术提供了基于组件的设计方法,开发、集成、部署应用程序。J2EE平台提供了多层分布式应用模式,使具有重用的能力,并集成了基于XML的数据交换一个统一的安全模式及灵活的事务控制。很多开源社区也为J2EE平台开发了一些非常实用的框架,尤其是SourceForge社区,现在这些框架的应用也越来越广泛,如主流的,口碑较好的

Struts,Spring,Hibernate,分别在MVC模式,IOC(依赖注入),AOP(面向切面编程),O/R Mapping(对象关系映射)方面做地非常的优秀。这些优秀的框架都大量地使用了设计模式及Java的反射技术,提供了方便的基于XML文件的配置式的灵活地实现方式,从而在一定程度上减轻了对于后期维护的负担,可以尽量减少修改源代码的可能,也就尽量遵循开闭原则,做到对扩展开放,对修改关闭。

1 Servlet

1.1 什么是Servlet

Servlet是java语言类,用来拓展通过请求响应模式的服务端的能力。尽管servlets 可以响应任何类型的响应,它们通常用于拓展基于Web的应用程序。在这中应用程序中,Javaservlet技术定义了特定的HTTPservlet类。

Servlet是由Sun公司制定的务器端组件规范。它不但指定了作为一个Servlet组件的特征,同时也指定了作为运行Serlvet的系统(称之为Servlet容器)应具备的特征。

Servlet组件运行在Servlet 容器下,由 Servlet容器负责诸如“实例化并管理Servlet对象”、“调用 Servlet生命周期方法”、“解析及封装特定协议的请求和响应”等工作。

1.2 Servlet工作方式及调用过程

(1)Servlet工作方式

容器收到请求后即会调用该方法。面对大量的用于访问,Servlet容器一般采用单实例,“多线程线程”的方式管理 Servlet,即 Servlet容器只会创建一个 Servlet实例,针对不同的用户访问将开

启不同的线程运行期 service方法,Servlet容器一般会维护一个线程池去管理这些线

程。鉴于Servlet 容器的这种管理方式,对于 service方法而言应注意线程安全的问题。应该尽量在service方法中全部使用局部变量。

一般在实际中常常使用的是基于 HTTP协议的Servlet,作为基于 HTTP协议的 Servlet 可以通过继承javax.servlet.HttpServlet 得到。

(2)Servlet调用过程

1,用户通过浏览器向web服务器发送请求http://serverIp:port/apppath

2,服务器为用户定位资源

静态资源:http://serverIp:port/webAppName/a.html (这里的路径是针对web应用文件夹目录)读文件并把内容发送到客户端

动态资源:解析web.xml定位Servlet类的名字装载类(WEB-INF/classes|WEB-INF/lib/*.jar)

3,创建该对象的实例,调用service方法

Servlet serv = (Servlet)(Class.forName("Servlet类名")).newInstance();

Serv.service(request,response);

1.3 Servlet生命周期

Servlet是运行在web容器中,这个web容器可以控制Servlet对象的生命周期,控制请求由Servlet对象处理。 Servlet的生命周期分为四个阶段:

1,创建Servlet对象,通过服务器反射机制创建Servlet对象,第一次请求时才会创建。(默认)

2,调用Servlet对象的init()方法,初始化Servlet的信息,init()方法只会在创建后被调用一次。

3,响应请求,调用service()或者是doGet(),doPost()方法来处理请求,这些方法是运行的在多线程状态下的。

4,在长时间没有被调用或者是服务器关闭时,会调用destroy()方法来销毁Servlet 对象。

可以通过web.xml文件可以配置Servlet对象的创建时间,数字,表示服务器启动时创建,并依照数字大小按顺序创建,只用重要的Servlet才会是用这个设置。

可以通过标签来配置初始化参数,可以用ServletConfig对象的getInitParameter(String name)方法来得到参数。

Servlet的service方法是高并发的,因此要注意线程安全问题,尽量在service 方法

中使用局部变量,多线程下所操作的变量,如果操作的是一个变量,且兼有读写操作,就要考虑加上同步,但同步不能乱加,否则会造成死锁问题。当然init()和destroy()方法都是运行在单线程下的,由容器负责来调用。

1.4 Servlet的资源访问

如果在Servlet中要使用到其他的资源,例如连接数据库的驱动,可以放在tomcat服务器的文件夹下的common/lib下,这个目录中存放的是一些在服务器启动时就会加载的公共资源,一般在需要在应用中是用特定的资源,也就是jar文件,那么不要放在common/lib 下,如果common/lib下的jar文件过多会导致服务器启动缓慢,应用中使用到的jar文件要放在WEB-INF/lib下,就可以被服务器找到了。

如果要在Servlet中是用Hibernate的访问数据库的方法,那么就需要把hibernate 需要的jar文件,放到WEB-INF/lib下就可以了,xxxxx.hbm.xml还是和实体类放在一起。hibernate.cgf.xml文件,要放在WEB-INF/classes下就可以了。

2 JSP(Java Server Page)

2.1 什么是JSP?

JSP与Servlet有着千丝万缕的联系,准确的说,JSP就是 Servlet,JSP 是一个标准的文本文件,是一种实现普通静态HTML和动态HTML混合编码的技术,在第一次访问时,Servlet 会将文件“翻译”成Servlet,然后再实施调用。不同的应用服务器会有不同的翻译方式。

2 JNDI(Java命名目录接口服务)

首先,在在J2EE容器中配置JNDI参数,定义一个数据源,也就是JDBC引用参数,给这个数据源设置一个名称;然后,在程序中,通过数据源名称引用数据源从而访问后台数据库。

直接使用JDBC或者通过JNDI引用数据源的编程代码量相差无几,但是现在的程序可以不用关心具体JDBC参数了。

在系统部署后,如果数据库的相关参数变更,只需要重新配置 mysql-ds.xml 修改其中的JDBC参数,只要保证数据源的名称不变,那么程序源代码就无需修改。

由此可见,JNDI避免了程序与数据库之间的紧耦合,使应用更加易于配置、易于部署。

相关文档
最新文档