ssh考试总结.pdf

上传人:l*** 文档编号:73535733 上传时间:2023-02-19 格式:PDF 页数:30 大小:2.33MB
返回 下载 相关 举报
ssh考试总结.pdf_第1页
第1页 / 共30页
ssh考试总结.pdf_第2页
第2页 / 共30页
点击查看更多>>
资源描述

《ssh考试总结.pdf》由会员分享,可在线阅读,更多相关《ssh考试总结.pdf(30页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、 .1.Spring 1.1 spring 的核心机制:依赖注入 在依赖注入的模式下,创建被调用者的工作不再由调用者来完成,因此称为控制反转(IoC);创建被调用者实例的工作通常由 spring 容器来完成,然后注入调用者,因此也称为依赖注入(Dependency Injection)。依赖注入通常有两种:设置注入:IoC 容器使用属性的 setter 方法来注入被依赖的实例。(参考课本 542 页实例及详解)构造注入:IoC 容器使用构造器来注入被依赖的实例。(参考课本 546 页实例及详解)1.1.1 设置注入实例:Axe 的一个实现类:Person 的一个实现类:applicationC

2、ontext.xml 配置文件的配置:.主程序的 main 方法:1.1.2 构造注入实例:Axe 的一个实现类:American的一个实现类:applicationContext.xml 配置文件的配置:主程序的 main 方法:.1.2 spring 容器和被管理的 Bean 1.spring 有两个核心接口:BeanFactory 和 ApplicationContext,即 spring 容器通常的两种表现形式,其中 ApplicationContext 是 BeanFactory 的子接口。spring 容器最基本的接口是 BeanFactory 2.容器中 Bean 的 5 种作用

3、域:(参考课本 556 页)singleton:单例模式,在整个 Spring IoC 容器中,使用 singleton 定义的 Bean 将只有一个实例。prototype:原型模式,每次通过容器的 getBean 方法获取 prototype定义的 Bean 时,都将产生一个新的 Bean 实例。另外还有request、session、global session三个作用域,比较常见的作用域为 singleton 和 prototype;如果不指定 Bean 的作用域,spring默认使用 singleton 作用域。设置 Bean 的基本行为,通过 scope 属性指定,该属性的 5 个

4、值即为spring 支持的 5 种作用域。Spring 中的 Bean 是 Java 实例、Java 组件;而传统的 JavaBean 通常作为 DTO(数据传输对象),用来封装值对象,在各层之间传递数据。Spring 容器中 Bean 实例的生命周期:(课本 573 页)1.3 深入理解依赖关系配置 1.自动装配:spring 的自动装配使用 autowire 属性值指定,其属性值可以接受如下值:no、byName、byType,constructor、autodetect 1.1 byName 规则(参考课本 602 页实例)person 的实现类中的属性和 setter 方法:.配置文件

5、中的 bean 配置信息:1.2 byType 规则(参考课本 603 页实例)person 的实现类中的属性和 setter 方法:配置文件中的 bean 配置信息:1.4 spring 的两种后处理器 spring 提供了两种常用的后处理器:Bean 后处理器:这种后处理器会对容器中的 Bean 进行后处理,对 Bean功能进行额外加强。容器后处理器:这种后处理器对 IoC 容器进行后处理,用于增强容器功能。1.4.1 Bean 后处理器 Bean 后处理器必须实现 BeanPostProcessor 接口,BeanPostProcessor 接口包含两个方法:.Object postPr

6、ocessBeforeInitialization(Object bean,String name)throws BeansException:该方法第一个参数,是系统即将进行后处理的 Bean 实例,第二个参数是该 Bean 实例的名字。Object postProcessAfterInitialization(Object bean,String name)throws BeansException:该方法第一个参数,是系统即将进行后处理的 Bean 实例,第二个参数是该 Bean 实例的名字。注:容器中一旦注册了 Bean 后处理器,Bean 后处理器就会自动启动,在容器中每个 Bean

7、 创建时自动工作,加入 Bean 后处理器需要完成的工作。Bean后处理器两个方法回调的时机参考课本 615 页下方的图 8.1。说明:采用BeanFactory作为Spring容器时,必须手动注册BeanPostProcessor;如果采用 ApplicationContext 作为 Spring 容器,则无须手动注册 Bean 后处理器。ApplicationContext 可自动检测到容器中的 Bean 后处理器,自动注册。1.4.2 容器后处理器 容器后处理器必须实现 BeanFactoryPostProcessor 接口,实现接口必须实现如下的方法:postprocessorBean

8、Factory(ConfigurableListableBeanFactory beanFactory)说明:类似于 BeanPostProcessor,ApplicationContext 可自动检测到容器中的容器后处理器,并且自动注册容器后处理器。但若使用 BeanFactory 作为Spring 容器,则必须手动调用该容器后处理器来处理 BeanFactory 容器。1.5 spring 的“零配置”支持 1.5.1 搜索 Bean 类 Spring 提供了如下几个 Annotation 来标注 Spring Bean 类:Component:标注一个普通的 Spring Bean 类。

9、.Controller:标注一个控制器组件类。Service:标注一个业务逻辑组件类。Repository:标注一个 DAO 组件类。相关应用实例参考课本 621 页。1.5.2 指定 Bean 的作用域 可使用Scope Annotation 来指定 Bean 实例的作用域,只要在该 Annotation中提供作用域的名称即可,例如:Scope(“prototype”)指定 Bean 的作用域为 prototype(参考课本 624 页)1.5.3 使用Resource 配置依赖 Resource 有一个 name 属性,在默认情况下,Spring 将这个值解释为需要被注入的 Bean 实例

10、的名字。换句话说,使用Resource 与元素的 ref属性有相同的效果。例如:Resource(name=”stoneAxe”)将 stoneAxe 实例注入一个 setter 方法,此句应该写在相关 setter 方法的上一行。(参考课本 624页)1.5.4 自动装配和精确装配 Spring 提供了Autowired Annotation 来指定自动装配,使用Autowired 可以标注 setter 方法、普通方法和构造器等。当使用Autowired 标注 setter 方法时,默认使用的是 byType 的自动装配策略。为了实现精确地自动装配,Spring 提供了Qualifier

11、Annotation,通过使用Qualifier,允许根据 Bean 标识来指定自动装配。Qualifier 既可以用于修饰Field,又可以标注方法的形参。(参考课本 627 页).1.6 Spring 的 AOP AOP:面向切面编程,和 OOP 互为补充,面向对象编程将程序分解成各个层次的对象,而面向切面编程将程序运行过程分解为各个切面,可以这样理解,面向对象编程是从静态角度考虑程序结构,面向切面编程是从动态角度考虑程序运行过程。AOP 编程需要程序员参与的只有 3 个部分:1.定义普通业务组件 2.定义切入点:一个切入点可能横切多个业务组件。3.定义增强处理,增强处理就是在 AOP 框

12、架为普通业务组件织入的处理动作。AOP 代理的方法大致有如下公式:代理对象的方法=增强处理+被代理对象的方法 Spring 有两种选择来定义切入点和增强处理:基于 Annotation 的“零配置”方式:使用Aspect、Pointcut 等 Annotation来标注切入点和增强处理。基于 XML 配置文件的管理方式:使用 Spring 配置文件来定义切入点和增强处理。1.6.1 定义切面 Bean 当启动了AspectJ 支持后,只要我们在 Spring 容器中配置一个带Aspect注释的 Bean,Spring 将会自动识别该 Bean,并将该 Bean 作为切面处理。(参考课本 651

13、 页)常见的几种增强处理:Before 增强处理、AfterReturning 增强处理、AfterThrowing 增强处理、After 增强处理、Around 增强处理(参考课本 651-658 .页)常用四种增强处理的优先级:Spring AOP 最主要的切入点指示符:execution:用于匹配执行方法的连接点,该切入点的用法相对复杂,execution表达式的格式如下:execution(modifiers-pattern?ret-type-pattern declaring-type-pattern?name-pattern(param-pattern)throws-pattern

14、?)(各部分详细解释参考课本 664 页)例如,如下几个 execution 表达式:execution(public*(.):匹配任意 public 方法的执行;execution(*set*(.):匹配任何方法名以“set”开始的方法的执行;execution(*org.crazyit.AccountService.*(.):匹配 AccountService 里定义的任意方法的执行 execution(*org.crazyit.service.*.*(.):匹配 service 包中任意类的任意方法的执行。1.7 Spring 整合 Hibernate Spring 提供了三个工具类(或

15、接口)来支持 DAO 组件的实现:HibernateDaoSupport HibernateTemplate HibernateCallback 有关整合的实例参考课本 700-707 页。低 高 Before 增强处理 Around增强处 AfterReturning增强处理 After增强处理 .2.Struts 2.1 Struts2 的流程 2.1.1 Struts2 应用的开发步骤 1.在 web.xml 文件中定义 Servlet 或 Filter 拦截用户请求,通常这个 Servlet 或Filter 是该框架的核心,负责拦截所有用户请求。在 web.xml 文件中增加如下配置片

16、段:2.如果需要以 post 方式提交请求,则定义包含表单数据的 JSP 页面。如果仅仅又是以 GET 方式发送请求,则无须经过这一步。3.定义处理用户请求的 Action 类。4.配置 Action。通常需要以下代码配置:5.配置处理结果和物理视图资源之间的对应关系。例如通过如下代码片段配置处理结果和视图的映射关系:/login.jsp/error.jsp/welcome.jsp 6.编写视图资源。.经过上面 6 个步骤,我们可以基本完成一个 Struts2 处理流程的开发,也就是可以执行一个完整的请求/响应过程。2.2 Struts2 的常规配置 为了避免 struts.xml文件过于庞大

17、、臃肿,提高 struts.xml 文件的可读性,我们可以将 struts.xml 配置文件分解成多个配置文件,然后再 struts.xml 文件中包含其他配置文件。在 struts.xml 文件中包含其他配置文件的方法如下:如果导入一个配置文件名为:struts-part1.xml,则在 struts.xml 文件的标签中加入即可。2.3 实现 Action 2.3.1 Action 接口和 ActionSupport 基类 为了让用户开发的 Action 类更规范,Struts2 提供了一个 Action 接口,这个接口定义了 Struts2 的 Action 处理类应该实现的规范。Act

18、ion 接口定义了 5 个字符串常量:ERROR、NONE、INPUT、LOGIN 和 SUCCESS 等,分别代表了特定的含义。当然,如果开发者依然希望使用特定的字符串作为逻辑视图名,开发者依然可以返回自己的视图名。Struts2还为Action接口提供了一个实现类:ActionSupport,因为ActionSupport完全符合一个 Action 的要求,所以我们可以直接使用 ActionSupport 作为业务控制器。实际上,如果我们配置 Action 没有指定 class 属性(即没有用户提供 Action类)时,系统自动使用 ActionSupport 类作为 Action 处理类

19、。2.3.2 Action 访问 Servlet API Struts2 提供了一个 ActionContext 类,Struts2 的 Action 可以通过该类来访问Servlet API,下面是 ActionContext 类中包含的几个常用方法:.Object get(Object key):该 方 法 类 似 于 调 用HttpServletRequest的getAttribute(String name)方法 Map getApplication():返回一个 Map 对象,该对象模拟了该应用的ServletContext 实例。static ActionContext getCo

20、ntext():静态方法,获取系统的 ActionContext 实例。Map getParameters():获取所有的请求参数。类似于调用 HttpServletRequest对象的 getParameterMap()方法。Map getSession():返回一个 Map 对象,该 Map 对象模拟了 HttpSession 实例。void setApplication(Map application):直接传入一个 Map 实例,将该 Map 实例里的 key-value 对转换成 application 的属性名、属性值。void setSession(Map session):直接

21、传入一个 Map 实例,将该 Map 实例里的key-value 对转换成 session 的属性名、属性值。2.4 配置 Action 2.4.1 包和命名空间 在 struts.xml 文件中,package 元素用于定义包配置,每个 package 元素定义了一个包配置,定义 package 元素时可以指定如下几个属性:name:这是一个必需属性,该属性指定该包的名字,该名字是该包被其他包引用的 key。extends:该属性是一个可选属性,该属性指定该包继承其他包。继承其他包,可以继承其他包中的 Action 定义、拦截器定义等。namespace:该属性是一个可选属性,该属性定义该包

22、的命名空间。abstract:该属性是一个可选属性,它指定该包是一个抽象包。抽象包不能包含 Action 定义。详细配置实例参考课本 182-184 页 .2.4.2 Action 的基本配置 定义了 Action 时,至少需要指定该 Action 的 name 属性,该 name 属性既是该 Action 的名字,也指定了该 Action 所对应的请求 URL 的前半部分。2.4.3 使用 Action 的动态方法调用 此部分参考课本186-188页 2.4.4 指定 method 属性及使用通配符 此部分参考课本189-194页 2.4.5 配置默认 Action 当用户请求找不到对应的A

23、ction 时,系统默认的 Action 即将处理用户请求。配置默认 Action 通过元素完成,下面的 struts.xml 配置片段配置了一个默认 Action:.2.5 配置处理结果 2.5.1 理解处理结果 Action 处理完用户请求后,将返回一个普通字符串,整个普通字符串就是一个逻辑视图名。Struts2 通过配置逻辑视图名和物理视图名之间的映射关系,一旦系统收到 Action 返回的某个逻辑视图名,系统就会把对应的物理视图呈现给浏览者。2.5.2 配置结果 Struts2 在 struts.xml 文件中使用元素来配置结果,根据元素所在位置的不同,Struts2 提供了两种结果。

24、局部结果:将作为元素的子元素配置。全局结果:将作为元素的子元素配置。配置元素时通常需要指定如下两个属性:name:该属性指定所配置的逻辑视图名。type:该属性指定结果类型。2.5.3 Struts2 支持的结果类型 Struts2 内建的支持结果类型如下(粗体为常用的类型):chain 结果类型:Action 链式处理的结果类型。dispatcher 结果类型:用于指定使用 JSP 作为视图的结果类型。(默认结果类型)freemarker 结果类型:用于指定使用 FreeMarker 模板作为视图的结果类型。httpheader 结果类型:用于控制特殊的 HTTP 行为的结果类型。.redi

25、rect 结果类型:用于直接跳转到其他 URL 的结果类型。redirectAction 结果类型:用于直接跳转到其他 Action 的结果类型。stream结果类型:用于向浏览器返回一个 InputStream(一般用于文件下载)。velocity 结果类型:用于指定使用 Velocity 模板作为视图的结果类型。xslt 结果类型:用于与 XML/XSLT 整合的结果类型。plainText 结果类型:用于显示某个页面的原始代码的结果类型。相关结果类型的用法和实例代码参考课本 198-203 页。2.6 配置 Struts 的异常处理 Struts2的 异 常 处 理 机 制 是 通 过

26、在struts.xml文 件 中 配 置元素完成的,配置该元素时,需要指定两个属性:exception:此属性指定该异常映射所设置的异常类型。result:此属性指定 Action 出现该异常时,系统返回 result 属性值对应的逻辑视图名。根据元素出现位置的不同,异常映射又可分为两种:局部异常映射:将元素作为元素的子元素配置。全局异常映射:将元素作为 元素的子元素配置。为了在异常处理页面中显示异常信息,我们可以使用 struts2 的如下标签来输出异常信息:输出异常对象本身。:输出异常堆栈信息。对于第一种直接输出异常对象本身的方式,完全可以使用表达式,因为exception 提 供 了 g

27、etMessage()方 法,所 以 我 们 可 以 采 用 代码来输出异常的 message 信息。.2.7 使用 struts2 的国际化 参考课本 216-225页 2.8 使用 Struts2 的标签库 Jsp 页面中导入 Struts2 标签库的代码如下:常见标签及其用法参考课本226-273 页(看常用的几个标签即可)2.9 Struts2 的拦截器机制 Struts2 拦截器由 struts-default.xml、struts.xml 等配置文件进行管理,所以开发者很容易扩展自己的拦截器,从而可以最大限度地扩展 struts 框架。2.9.1 拦截器在 Struts2 中的作用

28、 Struts2 框架的绝大部分功能都是通过拦截器来完成的,当 FilterDispatcher 拦截到用户请求之后,大量拦截器将会对用户请求进行处理,然后才会调用用户开发的 Action 实例的方法来处理请求。实际上,Struts2已经默认启用了大量通用功能的拦截器,只要我们配置Action的 package 继承了 struts-default 包,这些拦截器就会起作用。2.9.2 配置拦截器 在 struts.xml 文件中定义拦截器只需为拦截器类指定一个拦截器名,就完成了拦截器定义。定义拦截器使用元素定义,定义拦截器最简单的格式如下:.配置拦截器栈的语法示例如下:2.9.3 实现拦截器

29、类 如果用户开发自己的拦截器类,应该实现 com.opensymphony.xwork2.interceptor.Interceptor 接口,该接口包含三个方法:init()、destory()、intercept(ActionInvocation invocation)(该方法是用户需要实现的拦截动作,就像 Action 的 execute 方法一样,interceptor 方法会返回一个字符串作为逻辑视图,如果该方法直接返回了一个字符串,系统会跳转到该逻辑视图对应的实际视图资源,不会调用被拦截的 Action,该方法的 ActionInvocation参数包含了被拦截的 Action 的

30、引用,可以通过调用该参数的 invoke 方法,将控制权转给下一个拦截器,或者转给 Action 的 execute 方法。)。用户可以继承 Struts2 提供的一个 AbstractInterceptor 类来实现自定义的拦截器。如果为 Action 指定了一个拦截器,则系统默认的拦截器栈将会失去作用,为了继续使用默认的拦截器,配置文件中药手动应用默认拦截器,在标签中增加如下配置代码 2.9.4 拦截器方法的拦截 为了实现方法过滤的特性,Struts2 提供了一个 MethodFilterInterceptor 类,该 .类是 AbstractInterceptor 的子类。该类提供了一个

31、 doIntercept(ActionInvocation invocation)方法。实现方法过滤的拦截器与实现普通拦截器并没有太大区别,只需要注意两个地方:实现方法过滤的拦截器需要继承 MethodFilterInterceptor 抽象类,并且重写 doIntercept 方法定义对 Action 的拦截逻辑。在 MethodFilterInterceptor 方法中,额外增加了如下两个方法:public void setExcludeMethods(String excludeMethods):排除需要过滤的方法-设置方法“黑名单”,所有在 excludeMethods 字符串中列出的

32、方法都不会被拦截。public void setIncludeMethods(String includeMethods):设置需要过滤的方法-设置方法“白名单”,所有在 includeMethods 字符串中列出的方法都会被拦截。2.9.5 拦截器的执行顺序 在 Action 的控制逻辑方法执行之前,位于拦截器链前面的拦截器将先发生作用;在 Action 的控制逻辑方法执行之后,位于拦截器链前面的拦截器将后发生作用。有关拦截器的实例代码请参考课本 282-293 页。2.10 Struts2 的类型转换 2.10.1 自定义类型转换器 Struts2 的类型转换器实际上依然是基于 OGNL

33、框架的,在 OGNL 项目中有一个 TypeConverter 接口,这个接口就是自定义类型转换器必须实现的接口。OGNL 项目还为该接口提供了一个实现类:DefaultTypeConverter,通常都采用扩展 该类 来 实现自 定 义 类 型转 换 器。实现自 定义类 型转 换器需 要重 写 .DefaultTypeConverter 类的 convertValue 方法。如下实例:建立一个普通的 JavaBean User:创建含有 User 属性的 Action:.创建一个名为 UserConverter 的类型转换器类:.说明:convertValue 方法参数和返回值的意义 第一个

34、参数:context 是类型转换环境的上下文。第二个参数:value 是需要转换的参数。随着转换方向的不同,value 参数的值也是不一样的,当把字符串类型向 User 类型转换时,value 是原始字符串数组;当需要把 User 类型向字符串类型转换时,value 是 User 实例。第三个参数:toType 是转换后的目标类型。创建类型转换器后还要对其在 Web 应用中进行注册。Struts2 支持如下 3 种注册类型转换器的方式:注册局部类型转换器:局部类型转换器仅仅对某个 Action 的属性起作用。注册全局类型转换器:全局类型转换器对所有 Action 的特定类型的属性都会生效。使用

35、 JDK1.5 的注释来注册类型转换器:通过注释方式来注册类型转换器。.1.使用局部类型转换器:在与转换器相同的包下建立 LoginAction-conversion.properties 文件,如果包名为 lee,则文件中配置的内容如下:user=lee.UserConverter 2.使用全局类型转换器:在与包同目录下建立 xwork-conversion.properties 文件,如果包名为 lee,则文件中配置的内容如下:lee.User=lee.UserConverter 2.10.2 简化的自定义类型转换器 为了简化类型转换器的实现,Struts2 提供了一个 StrutsTyp

36、eConverter 抽象类,该类有两个必须实现的方法:convertFromString 方法和 ConvertToString 方法。(使用方法参考课本 304-307 页)2.11 Struts2 的输入校验 基于 Struts2 校验器的校验可以完成绝大部分输入校验,这部分内容参考课本314-339 页。而对于一些特殊的校验要求,就需要在 Struts2 中进行手动校验,手动完成输入校验需要在 Action 中重写 validate()方法,实例如下:用户注册的 RegistAction 类:.为了在 input 视图对应的 JSP 页面中输出错误提示,应该在该页面中增加如下代码:2.

37、12 使用 Struts2 控制文件上传 为了能够上传文件,我们必须将表单的method 设置为 POST,将 enctype 设置为 multipart/form-data。只有在这种情况下,浏览器才会把用户选择文件的二进制数据发送给服务器。下面为一个文件上传的实例:.页面中表单的代码:文件上传的 Action:struts.xml 文件中的配置信息:.2.13 使用 Struts2 控制文件下载 本节参考课本 363-366 页 2.14 Struts2 和 Spring 的整合 2.14.1 启动 Spring 容器 对于使用 Spring 的 Web 应用,无须手动创建 Spring

38、容器,而是通过配置文件,声明式地创建 Spring 容器。因此在 Web 应用中创建 Spring 容器有如下两种方式:直接在 web.xml 文件中配置创建 Spring 容器。利用第三方 MVC 框架的扩展点,创建 Spring 容器。其实第一种创建 Spring 容器的方式更加常见,为了让 Spring 容器随 web 应用的启动而自动启动,有如下两种方法:利用 ServletContextListener 实现。采用 load-on-startup Servlet 实现。Spring 提供 ServletContextListener 的一个实现类 ContextLoaderListe

39、ner,该类可 以 作 为Listener使 用,它 会 在 创 建 时 自 动 查 找WEB-INF/下 的applicationContext.xml 文件,因此,如果只有一个配置文件,并且文件名为applicationContext.xml,则只需在web.xml文件中增加如下配置片段即可:注意:通常推荐使用 Listener 来创建 Spring 容器。但 Listener 是 Servlet2.3 .以上上支持的标准,因此必须是 Web 容器支持 Listener 才可使用 Listener。2.14.2 让 Spring 管理控制器 Spring 插件提供了一种伪 Action,当

40、我们在 struts.xml 文件中配置 Action 时,通常需要指定 class 属性,该属性就是用于创建 Action 实例的实现类。但 Spring插件允许我们指定 class 属性时,不再指定 Action 的实际实现类,而是指向 Spring容器中的 Bean ID。下面给出一个整合的实例:处理用户请求的 Action:.struts.xml 文件中的配置:本应用的业务逻辑组件:applicationContext.xml文件中的配置:3.EJB EJB 中定义了三种企业 bean:.会话 Bean:主要用于实现业务逻辑,分为有状态 bean 和无状态 bean。实体 Bean:仅

41、作为普通 java 对象来使用,负责跟数据库进行对象与关系映射。消息驱动 Bean:专门处理基于消息请求的组件。3.1 EJB2 定义远程接口需要:组件接口继承 EJBObject、主接口继承 EJBHome、实现bean 实现 SessionBean。定 义 本 地 接 口 需 要:组 件 接 口 继 承 EJBLocalObject、主 接 口 继 承EJBLocalHome、实现 bean 实现 SessionBean。下面给出一个远程接口定义和客户端调用远程接口的实例:组件接口:主接口:注意:此接口中定义的方法名必须为create。实现 Bean:.此 bean 中重写的组件接口中的方

42、法不用抛出远程异常 RemoteException。ejb-jar.xmml 文件中的配置:jboss.xml 文件中的配置:当上面的所有服务器端的编码和配置都完成后,将里面的组件接口和主接口打成 jar 包以供客户端使用。然后将此项目发布在 jboss 服务器中,此时jboss-5.1.0.GAserverdefaultdeploy目录下就会多出一个“项目名.jar”文件夹。作为测试,我们在创建一个 java 项目,再次项目中首先要导入上述两个接口导出的 jar 包,然后导入 jboss-5.1.0.GAclient 文件夹中的所有 jar 包(此包包含的是客户端与 jboss 通信所需的

43、JAVA 库),然后就可以创建客户端实现远程调 .用的实例如下:客户端实现远程调用的测试代码如下:3.2 EJB3 下面的给出一个只实现 Remote 接口的无状态的 Session Bean 的实例:一个包含业务方法的借口,此接口不包含任何注释:编写一个 Bean class:.注意:本程序使用 annotation 来定义会话 bean 的状态,如上面Stateless 定义为无状态,Remote 注释指定这个无状态 Bean 的 remote 接口。Bean 类可以具有多个remote接口,每个接口之间用逗号分隔,如:Remote(HelloWorld.clss,Hello.class,World.class)。如果你只有一个接口,你可以省略大括号,例如本例中写的那样:Remote(HelloWorld.class)。远程客户端的调用实例代码:此总结基本是参考课本和飞哥所讲内容,我们学的大致也就这么多,作为考试复习资料的话,仅供参考,大家最好结合课本进行复习,希望大家都能够考个好成绩。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作报告

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com