- 浏览: 1499698 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (798)
- struts2 (42)
- servlet (20)
- quartz (4)
- jquery & ajax (24)
- tomcat (5)
- javascript (15)
- struts1 (8)
- 搜索关键字及链接 (3)
- fckeditor (3)
- Apache (5)
- spring (22)
- linux (3)
- 企业应用 (8)
- 综合应用 (13)
- 服务器 (2)
- 数据库 (85)
- 性能调优 (21)
- 网络应用 (15)
- 缓存技术 (8)
- 设计模式 (39)
- 面试题 (7)
- 程序人生&前辈程序员 (29)
- java基础 (59)
- hibernate (75)
- log4j (4)
- http (11)
- 架构设计 (28)
- 网页设计 (12)
- java邮件 (4)
- 相关工具 (11)
- ognl (7)
- 工作笔记 (18)
- 知识面扩展 (12)
- oracle异常 (1)
- 正则表达式 (2)
- java异常 (5)
- 项目实践&管理 (1)
- 专业术语 (11)
- 网站参考 (1)
- 论坛话题 (2)
- web应用 (11)
- cxf&webservice (22)
- freemarker (3)
- 开源项目 (9)
- eos (1)
- ibatis (6)
- 自定义标签 (3)
- jsp (3)
- 内部非公开文档(注意:保存为草稿) (0)
- 国内外知名企业 (2)
- 网店 (3)
- 分页 (1)
- 消费者习惯 (2)
- 每日关注 (1)
- 商业信息 (18)
- 关注商业网站 (1)
- 生活常识 (3)
- 新闻 (2)
- xml&JSON (5)
- solaris (1)
- apache.common (3)
- BLOB/CLOB (1)
- lucene (2)
- JMS (14)
- 社会进程 (8)
- SSH扩展 (2)
- 消费心理 (1)
- 珠三角 (1)
- 设计文档 (1)
- XWork&webwork (1)
- 软件工程 (3)
- 数据库及链接 (1)
- RMI (2)
- 国内外知名企业&人物 (1)
最新评论
-
司c马:
简介易懂、
OutputStream和InputStream的区别 -
在世界的中心呼喚愛:
解决我的问题
Java获取客户端的真实IP地址 -
bo_hai:
都是些基本的概念呀!
SSO -
tian_4238:
哥们,你也是搞水利这块的吧。
巧用SQLQuery中的addScalar -
loveEVERYday:
java.util.Date、java.sql.Date、java.sql.Time、java.sql.Timestamp小结
远程调用是客户端应用和服务端之间的会话。在客户端上所需要的一些功能并不包括在该应用的职能范围内。所以应用向能提供这些功能的其他系统寻求帮助。远程的应用通过远程服务把这些功能公开出来。
一、Spring远程调用概览
Spring为各种远程访问技术的集成提供了工具类。Spring远程支持是由普通(Spring)POJO实现的,这使得开发具有远程访问功能的服务变得相当容易。
Spring远程调用支持6种不同的RPC模式:远程方法调用(RMI)、Caucho的Hessian和Burlap、Spring自己的HTTP invoker、EJB和使用JAX-RPC 的Web Services。
RPC模式
在何种情况下有用
远程方法调用(RMI)
不考虑网络限制(如防火墙)时,访问/公开基于Java的服务
Hessian或 Burlap
考虑网络限制时,通过HTTP访问/公开基于Java的服务
HTTP invoker
考虑网络限制时,访问/公开基于Spring的服务
EJB
访问用EJB实现的遗留的J2EE系统
JAX-RPC
访问Web Services
其中(来自Spring2.0参考手册):
l 远程方法调用(RMI)。通过使用 RmiProxyFactoryBean 和 RmiServiceExporter,Spring同时支持传统的RMI(使用java.rmi.Remote接口和java.rmi.RemoteException)和通过RMI调用器实现的透明远程调用(支持任何Java接口)。
l Spring的HTTP调用器。Spring提供了一种特殊的允许通过HTTP进行Java串行化的远程调用策略,支持任意Java接口(就像RMI调用器)。相对应的支持类是 HttpInvokerProxyFactoryBean 和 HttpInvokerServiceExporter。
l Hessian。通过 HessianProxyFactoryBean 和 HessianServiceExporter,可以使用Caucho提供的基于HTTP的轻量级二进制协议来透明地暴露服务。
l Burlap。 Burlap是Caucho的另外一个子项目,可以作为Hessian基于XML的替代方案。Spring提供了诸如 BurlapProxyFactoryBean 和 BurlapServiceExporter 的支持类。
l JAX RPC。Spring通过JAX-RPC为远程Web服务提供支持。
不管选择哪种远程模式,你会发现Spring对每一种模式的支持中贯穿着一个共同的风格。这就意味着你一旦理解了Spring如何配置并使用其中的一种模式,当你决定使用另一种不同的模式的时候,你将拥有非常低的学习曲线。
在所有的模式中,服务可以作为Spring管理的Bean配置到你的应用中。这是用一个代理工厂Bean实现的,这个Bean使你能把远程服务当作本地对象一样置入到其他Bean的属性中。
客户端发起对代理的调用,好像是代理提供了这些服务的功能一样。代理代表客户端和远程服务交流。它处理连接的具体情况,并向远程服务发起远程调用。
在服务端,你能够把任何Spring管理的Bean的功能公开成为一个远程服务,可使用在表6.1中所列的任何模式(除了EJB和JAX-RPC)。
不论开发的是使用远程服务的代码,还是实现那些服务的代码,或者二者兼而有之,在Spring中,使用远程服务纯粹是个配置问题。你不用写任何Java代码来支持远程调用。你的服务Bean不必关心它们是否被卷入到RPC里(虽然任何传递给远程调用的Bean或从远程调用返回的Bean可能需要实现java.io.Serializable)。
二、与RMI一起工作
1.连接RMI服务
Spring的RmiProxyFactoryBean是一个工厂Bean,能创建一个指向RMI服务的代理。用RmiProxyFactoryBean来引用一个RMI PaymentService是非常简单的,只要在Spring配置文件中声明下面的<bean>:
<bean id="paymentService" class="org.springframework.remoting.rmi.RmiProxyFactoryBean">
<property name="serviceUrl">
<value>rmi://${paymenthost}/PayService</value>
</property>
<property name="serviceInterface">
<value>com.springinaction.payment.PaymentService</value>
</property>
</bean>
RMI服务的URL是通过serviceUrl属性设置的。这里,服务被命名为PayService,并且是在一台名字用一个属性占位符配置的机器上(参考第2章的2.4.3节)。serviceInterface属性指明了这个服务所实现的接口,客户端通过这个接口调用在这个服务里的方法。
把这个支付服务定义为一个Spring管理的Bean,你就能把它作为一个合作者置入到另外的Bean上,就像你对任何非远程的Bean做的那样。举例来说,假设StudentServiceImpl需要使用这个支付服务来批准一张信用卡的支付。你就使用以下代码把RMI服务置入到StudentServiceImpl中:
<bean id="studentService"
class="com.springinaction.training.service.StudentServiceImpl">
…
<property name="paymentService">
<ref bean="paymentService"/>
</property>
…
</bean>
StudentServiceImpl甚至不需要知道它处理的是一个RMI服务。它只是通过注入机制接收PaymentService对象,不必关心它是从哪里来的。此外,代理会捕获任何可能被这个服务抛出的RemoteException,并把它们作为运行时间异常重新抛出,这样,你可以安全地忽略这些异常。这也让远程服务Bean和这个服务的另外实现之间的交换成为可能——或许是不同的远程服务,或者有可能是单元测试时的一个模拟实现。
2.输出RMI服务
Spring提供了比较简单的发布RMI服务的方法:使用POJO。开始之前,你需要写这个服务的接口:
public interface PaymentService
{
public String authorizeCreditCard(String cardNumber, String cardHolderName, int expireMonth, int expireYear, float amount) throws AuthorizationException;
public void settlePayment(String authCode, int merchantNumber, float amount) throws SettlementException;
}
由于服务接口不是从java.rmi.Remote继承的,它的方法都不抛出java.rmi.RemoteException,这点让这个接口简短了很多。但更重要的是,客户端通过这个接口访问支付服务时,将不再需要捕捉那些它们可能没法处理的异常了。下一步,定义服务的实现类:
public class PaymentServiceImpl implements PaymentService
{
public PaymentServiceImpl() {}
public String authorizeCreditCard(String creditCardNumber, String cardHolderName, int expirationMonth, int expirationYear, float amount) throws AuthorizationException
{
// String authCode = ...;
// implement authorization
return authCode;
}
public void settlePayment(String authCode, int accountNumber, float amount) throws SettlementException
{
// implement settlement
}
}
你要做的下一件事就是在Spring的配置文件里把PaymentServiceImpl配置为一个<bean>:
<bean id="paymentService" class="org.springframework.payment.PaymentServiceImpl">
…
</bean>
PaymentServiceImpl没有设置RMI所固有的特性。它仅仅是一个适合在Spring配置文件中声明的简单的POJO。事实上,完全有可能在非远程方式中,通过直接把它置入到客户端里,来使用这个实现。
三、使用Hessian和Burlap的远程调用
Hessian和Burlap是Caucho Technology(http://www.caucho.com)提供的两种解决方法,是基于HTTP的轻量级远程服务。它们都致力于通过把它们的API和通信协议变得尽可能的简单,来简化Web服务。
事实上,Hessian和Burlap是同一个问题的两个方面,但每个都服务于略微不同的目的。Hessian,像RMI那样,使用二进制消息来建立客户端和服务端之间的交流。但与其他二进制远程技术(如RMI)不同的是,它的二进制消息可以移植到其他非Java的语言中。
Burlap是一种基于XML的远程技术,这使得它自然而然地可以移植到任何可以解析XML的语言中。正由于它的XML,比起Hessian的二进制格式来,它的可读性更强。但和其他基于XML的远程技术(例如SOAP或XML-RPC)不同,Burlap的消息结构是尽可能的简单,不需要额外的外部定义语言(如WSDL或IDL等)[1]。
如何在Hessian和Burlap之间做选择。很大程度上说,它们是一样的。惟一的不同就是Hessian的消息是二进制的,而Burlap的消息是XML。由于Hessian的消息是二进制的,所以它在带宽上更占优势。但如果可读性对你来说很重要的话(如出于调试的目的)或者你的应用将和没有Hessian实现(任何除了Java或Python)的语言交流,那么Burlap的XML消息会是更好的选择。
1.访问Hessian/Burlap服务
所有RMI的细节都包含在Spring配置文件的Bean的配置里。这样做的好处就是,由于客户端忽略了服务的实现,从一个RMI客户端转到Hessian客户端是极其简单的,不需要改变任何客户端代码。
坏处就是,如果你真地喜欢写代码的话,那么这一节就可能让你有点儿失望了。因为写基于RMI服务的客户端代码和基于Hessian服务的客户端代码惟一的不同就是你将使用Spring的HessianProxyFactoryBean来代替RmiProxyFactoryBean。客户端代码中基于Hessian的支付服务可以用以下代码声明:
<bean id="paymentService" class="org.springframework.
➥remoting.caucho.HessianProxyFactoryBean">
<property name="serviceUrl">
<value>http://${serverName}/${contextPath}/pay.service</value>
</property>
<property name="serviceInterface">
<value>com.springinaction.payment.PaymentService</value>
</property>
</bean>
就像基于RMI的服务那样,serviceInterface属性指定这个服务实现的接口。并且,如同RmiProxyFactoryBean,serviceUrl表明这个服务的URL。既然Hessian是基于HTTP的,当然应该在这里设置一个HTTP URL了(你将在下一节中看到这个URL是如何得来的)。
事实证明,写一个Burlap服务是同样无趣的。二者惟一的不同就是,你使用BurlapProxyFactoryBean代替HessianProxyFactoryBean:
<bean id="paymentService" class="org.springframework.
➥remoting.caucho.BurlapProxyFactoryBean">
<property name="serviceUrl">
<value>http://${serverName}/${contextPath}/pay.service</value>
</property>
<property name="serviceInterface">
<value>com.springinaction.payment.PaymentService</value>
</property>
</bean>
尽管我们觉得在RMI、Hessian和Burlap服务之间稍微不同的配置是很没有乐趣的,但这个单调恰恰是有好处的。它意味着你不费吹灰之力就可以在各种Spring支持的远程技术之间转换,无须去学习一个全新的模型。你一旦配置了一个对RMI服务的引用,把它重新配置为Hessian或Burlap服务也是很轻松的工作。
2.用Hessian或Burlap公开Bean的功能
输出一个Hessian服务:
在Spring里输出一个Hessian服务和在Spring里实现一个RMI服务惊人地相似。为把支付服务公开为RMI服务,你得在Spring配置文件中配置一个RmiServiceExporter Bean。非常类似的,把支付服务公开为Hessian服务,你也需要配置一个exporter Bean。只不过这一次用的是HessianServiceExporter:
<bean name="hessianPaymentService" class="org.springframework.
➥remoting.caucho.HessianServiceExporter">
<property name="service">
<ref bean="paymentService"/>
</property>
<property name="serviceInterface">
<value>com.springinaction.payment.PaymentService</value>
</property>
</bean>
HessianServiceExporter在Hessian服务中实现的功能和RmiServiceExporter在RMI服务中的功能是完全一样的。那就是说,它把一个Bean的公共方法公开为一个Hessian服务的方法。
正如RmiServiceExporter,service属性中被置入了实现这个服务的Bean的引用。这里,这个service属性绑定的是paymentService Bean的引用。serviceInterface属性用来表示PaymentService是这个服务所实现的接口。
然而,和RmiServiceExporter不同,你不需要设置serviceName属性。在RMI中,serviceName属性用来在RMI注册表中注册一个服务。Hessian没有注册表,因此就没有必要命名一个Hessian服务。
配置Hessian控制器:
RmiServiceExporter和HessianServiceExporter另外一个主要的区别就是,由于Hessian是基于HTTP的,所以HessianServiceExporter被实现成Spring MVC的Controller。这就是说,为了使用输出的Hessian服务,你需要完成两个额外的配置步骤:
1.在你的Spring配置文件中配置一个URL处理器,来分发Hessian服务的URL给适当的Hessian服务Bean。
2.在web.xml中配置一个Spring的DispatcherServlet,并把你的应用部署为web应用。
输出一个Burlap服务:
把Spring管理的Bean作为Burlap服务输出。用Spring的BurlapServiceExporter来代替HessianServiceExporter就能完成这项任务:
<bean name="burlapPaymentService" class="org.springframework.
➥remoting.caucho.BurlapServiceExporter">
<property name="service">
<ref bean="paymentService"/>
</property>
<property name="serviceInterface">
<value>com.springinaction.payment.PaymentService</value>
</property>
</bean>
你会发现,除了Bean的名字(完全是任意的)和使用了BurlapServiceExporter以外,这个Bean和hessianPaymentService是一样的。配置Burlap服务和配置Hessian服务的其他方面也是一样的,这也就包括了需要建一个URL处理器和DispatcherServlet。Hessian和Burlap解决了RMI头疼的防火墙问题。
四、使用HTTP invoker
1.通过HTTP访问服务
访问一个HTTP invoker服务,你需要使用HttpInvokerProxyFactoryBean。要让支付服务作为一个HTTP invoker服务公开,得配置一个Bean,用HttpInvokerProxyFactoryBean来代理它,如下所示:
<bean id="paymentService" class= "org.springframework.remoting.
➥httpinvoker.HttpInvokerProxyFactoryBean">
<property name="serviceUrl">
<value>http://${serverName}/${contextPath}/pay.service</value>
</property>
<property name="serviceInterface">
<value>com.springinaction.payment.PaymentService</value>
</property>
</bean>
serviceInterface属性仍然用来表示这个支付服务所实现的接口;serviceUrl属性仍然是用来表示远程支付服务的位置。由于HTTP invoker是基于HTTP的,如同Hessian和Burlap一样,serviceUrl就能包含与Hessian和Burlap版本的Bean里一样的URL。
2.把Bean作为HTTP服务公开
使用HttpInvokerServiceExporter把Bean的方法输出为远程方法,面的Bean的定义展示了如何把paymentService Bean作为一个远程的基于HTTP invoker的服务输出:
<bean id="httpPaymentService" class="org.springframework.remoting.
➥httpinvoker.HttpInvokerServiceExporter">
<property name="service">
<ref bean="paymentService"/>
</property>
<property name="serviceInterface">
<value>com.springinaction.payment.PaymentService</value>
</property>
</bean>
基于HTTP invoker的服务,顾名思义,是基于HTTP的,就像Hessian和Burlap服务一样。并且,也和HessianServiceExporter和BurlapServiceExporter那样,HttpInvokerServiceExporter也是一个Spring的Controller。这就意味着你需要建立一个URL处理器,把HTTP URL映射到服务上:
<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/pay.service">httpPaymentService</prop>
</props>
</property>
</bean>
Spring的HTTP invoker是作为一个两全其美的远程调用解决方案出现的,把HTTP交流的简单性和Java内置的对象序列化机制结合起来。这让HTTP invoker服务成为一个引人注目的对RMI或是对Hessian/Burlap的替代品。
要记住HTTP invoker有个重大的限制,它是一个只在Spring框架中提供的远程调用解决方案。这就意味着客户端和服务器端都必须是使用Spring的应用。
五.使用EJB
虽然Spring提供了大量的功能,让POJO具有EJB的能力,但你或许不能总是享受在完全没有EJB的项目上工作的奢侈。一方面,你可能会接触一些其他系统,它们的功能是通过无状态的会话EJB开放出来的。另一方面,你可能被放在一个项目中,由于正统技术(或者可能是政治)的原因,你不得不写EJB代码。
不管你的应用是EJB客户端,还是你必须写EJB本身,你都不需要为了用EJB,完全放弃Spring带来的好处。Spring有两种方法提供对EJB的支持:
Spring能让你在Spring的配置文件里,把EJB作为Bean来声明。这样,把EJB引用置入到其他Bean的属性里就成为可能了,好像EJB就是另一个POJO。
Spring能让你写EJB,让EJB成为Spring配置的Bean的代理的工作。
六、使用JAX-RPC的Web Service
JAX-RPC是“基于XML的远程调用的Java API(Java APIs for XML-based remote procedure call)”的缩写。这是一个口语化的词,仅仅意味着JAX-RPC是Java程序使用XML访问远程服务的一种方式。特别地,这个服务是指用SOAP(Simple Object Access Protocol)协议公开它们的功能的web service。
七、小结
Spring提供了远程服务的支持,让使用远程服务和使用常规的JavaBean一样简单。
在客户端,Spring提供了代理工厂Bean,能让你在Spring应用中配置远程服务。不管是使用RMI、Hessian、Burlap、HTTP invoker、EJB、还是Web service,你都可以把远程服务置入到你的应用里,好像它们是POJO一样。Spring甚至捕获了所有抛出的RemoteException,并在发生异常的地方重新抛出运行时RemoteAccessException,让你的代码从处理可能不可恢复的异常中解放出来。
Spring的远程调用我不知什么时候才能用上,在这里在不太理解的基础上对书作了简单的摘抄,先留个记号等以后用着了在回头学习。
发表评论
-
Spring Framework 开发参考手册
2011-09-02 16:15 1459http://www.html.org.cn/books/sp ... -
相关知识和链接
2011-09-01 15:21 1243《spring攻略》译员博客http://digitalson ... -
spring简述
2011-08-31 16:25 1258背景 Rod Johnson在2002年编著的《Expert ... -
传智播客_spring_PPT_黎活明
2011-08-05 16:44 0传智播客_spring_PPT_黎活明.ppt -
spring 中的singleton和ClassLoader中的单例
2011-08-03 15:50 2532http://www.iteye.com/topic/7186 ... -
Spring AOP原理及拦截器
2011-07-11 14:25 2177原理AOP(Aspect Oriented Progr ... -
Spring AOP: Spring之面向方面编程
2011-07-11 14:12 6185.1. 概念 ... -
AOP
2011-07-11 14:10 1449What is AOP?AOP即Aspect-Orie ... -
Spring的组件自动扫描机制
2011-07-06 10:06 2387Spring将所有的bean都纳入到IOC中创建、管理和维护。 ... -
Spring技术内幕——深入解析Spring架构与设计原理(五)Spring与远端调用
2011-07-04 10:31 1428http://jiwenke.iteye.com/blog/5 ... -
Spring事物笔记
2011-06-14 23:01 1791/**什么异常时才回滚**/ Spring事务策略由Pl ... -
浅谈Spring事务隔离级别
2010-11-02 16:05 1182本文将介绍Spring事务隔 ... -
Spring事务的传播行为和隔离级别
2010-11-02 15:51 1401Spring中事务的定义:一、Propagation : ... -
spring aop 面向切面编程 如何来做一个强大的日志记录功能
2010-07-08 16:11 3593这个东西怎么做:spring aop 面向切面编程 如何来做一 ... -
Spring中单例bean访问非单例bean的第一种方式:方法注入
2010-07-08 15:20 2762方法注入在Spring中是很少用的,主要应用是, ... -
关于spring声明式事务管理异常处理的测试和小结
2010-07-08 10:51 1332关于spring事务管理以及异常处理的帖子,本论坛争论颇多,各 ... -
Spring源代码解析(一):IOC容器(1)
2010-07-01 11:00 1242ss -
spring ApplicationContext的实现
2010-07-01 10:37 1522spring为ApplicationContext提供的3 ... -
使用web.xml方式加载Spring时,获取Spring context的两种方式:
2010-06-25 14:10 16261、servlet方式加载时: 【web .xml】 ... -
Spring 框架的设计理念与设计模式分析(2)
2010-06-18 09:59 1621如何创建 Bean 实例并构建 Bean 的关系网 下面 ...
相关推荐
标题和描述均提到了“spring指南学习笔记”,这意味着文档聚焦于Spring框架的学习心得与关键概念。Spring是一个开源的Java企业级应用框架,以其强大的依赖注入(Dependency Injection, DI)和面向切面编程(Aspect ...
### Spring学习笔记知识点详解 #### 一、Spring框架概述 **Spring** 是一个开源的、分层的企业级应用开发框架,旨在简化Java EE应用程序的开发。它的主要目标是提高开发效率,减少耦合度,并提供一种更为简洁的...
### Struts、Spring、Hibernate&Ajax 学习笔记总结 #### Struts 部分 **Struts** 是 Java 开源框架中最早出现且最具影响力的框架之一,它出自 Apache 组织,是 Java Web 应用开发的标准之一。Struts 以 MVC(Model...
此外,Spring还提供了大量其他功能,如数据访问、事务管理、邮件服务、远程调用等。Spring MVC是Spring框架的一部分,用于构建Web应用,它提供了模型-视图-控制器(MVC)架构模式,使得业务逻辑、视图和控制逻辑分离...
4. **拦截器(Interceptors)**:Struts2 的拦截器机制允许开发者在 Action 调用前后添加自定义逻辑,如权限验证、日志记录等。 5. **OGNL(Object-Graph Navigation Language)**:Struts2 使用 OGNL 作为表达式...
- Spring与Struts1集成,可以将Action对象交给Spring管理,通过Struts的配置让Controller管理这些Action,实现业务逻辑与展示层的分离。 以上就是Spring框架的基本知识,包括其核心特性、bean管理、依赖注入、AOP...
6. **动态方法调用(Dynamic Method Invocation,DMI)**: 允许直接通过URL调用Action的方法。 **Hibernate3.6笔记** Hibernate是一个对象关系映射(ORM)框架,简化了数据库操作。以下是其主要特点和知识点: 1. ...
Struts、Spring 和 Hibernate 是Java开发中非常著名的三个开源框架,它们在企业级应用开发中起着关键作用。Struts 是一个 MVC(Model-View-Controller)架构的 Web 框架,Spring 提供了一个全面的后端服务管理平台,...
以上只是WebWork教程的部分内容,完整的学习笔记涵盖了更多高级主题,如Interceptor(拦截器)、Validation(验证)、I18N(国际化)、AOP支持以及与其他开源项目的集成,如G-Roller-WW和Spring等。通过深入学习和...
SSH框架是Java开发中常见的三大开源框架Struts、Spring和Hibernate的简称,它们一起构成了强大的企业级应用开发解决方案。这篇笔记将主要介绍SSH中的Struts框架,帮助初学者理解其核心概念和工作流程。 Struts是一...
Spring框架是Java开发中不可或缺的一部分,它提供了一种强大的依赖注入机制和面向切面编程的能力,使得应用程序的组件管理和配置变得更加灵活和易于维护。在Spring框架中,应用组件(也称为bean)在Spring容器中被...
根据给定的文件信息,以下是对Struts2学习笔记中涉及的关键知识点的详细解析: ### Struts2框架概览 #### MVC模式的理解与演进 Struts2是基于MVC(Model-View-Controller)模式设计的一种Java Web开发框架。在MVC...
Struts2是一个强大的Java Web应用程序开发框架,基于Model-View-Controller(MVC)设计模式,为开发者提供了...然而,随着Spring Boot等现代框架的兴起,Struts2的使用逐渐减少,但其设计理念和技术仍值得学习和借鉴。
### JBoss ESB 学习笔记知识点概览 #### 一、搭建ESB开发环境 - **工具准备**: - Eclipse-JEE 3.5:集成开发环境,支持Java EE标准,适合企业级应用程序开发。 - jbossesb-server-4.7:JBoss ESB的具体版本,为...
在本篇《Hibernate学习笔记》中,我们将深入探讨Hibernate这一流行的Java对象关系映射(ORM)框架。Hibernate允许开发者以面向对象的方式处理数据库操作,极大地简化了数据存取的复杂性。以下是一些关键知识点: 1....
本学习笔记将深入探讨这四个组件如何协同工作,构建出强大的企业级应用。 **Struts2** 是一个基于MVC(Model-View-Controller)设计模式的Web应用框架,它提供了处理用户请求、控制应用流程的能力。Struts2的核心是...
《Spring微服务实战笔记》是基于Java开发领域的深度学习资源,专注于Spring框架在构建微服务架构中的应用。本文将深入探讨Spring微服务的核心概念、关键技术和最佳实践。 1. **Spring框架基础**:Spring框架是Java...
这份文档显然包含了关于Web开发的学习笔记,可能涵盖了多种技术、框架和编程语言,如Java、JSP、Struts以及SSH(Struts、Spring、Hibernate)。标签“互联网”暗示了讨论的主题与Web应用程序开发有关,这是构建基于...
【Spring 框架概述】 Spring 是一个广泛使用的 Java 应用开发框架,它主要负责技术整合,通过提供 Inversion of Control (IOC) 和 Aspect-...通过学习和掌握 Spring,开发者能够构建更加健壮、易维护的 Java 应用。