- 浏览: 531055 次
- 性别:
- 来自: 青岛
文章分类
- 全部博客 (222)
- 帖子来的 (3)
- JavaScript (25)
- Java (10)
- DataBase (2)
- el表达式 (1)
- html (4)
- FCKEDITOR和TINYMCE (3)
- tomcat (5)
- JavaEE (12)
- Eclipse (7)
- Windows (3)
- Dos命令 (1)
- Oracle (20)
- 乱搞 (1)
- AHK (3)
- TC (2)
- vim (12)
- Perl (13)
- ANT (6)
- Android (3)
- antlr (1)
- SSH (14)
- C/C++ (3)
- wordpress (4)
- CSS (3)
- java2D (1)
- Lucene (4)
- Linux (9)
- jquery (4)
- testsomething (7)
- JVM监控优化 (3)
- emacs (4)
- svn cvs版本控制 (2)
- 硬件 (1)
- j2me (2)
- maven (5)
- WebService (4)
- aspectJ (1)
- 算法 (2)
- mysql (1)
- project (2)
- 正则表达式 (2)
- firefox (1)
最新评论
-
直觉:
gua 顶
com.opensymphony.xwork2.inject.DependencyException -
fordfelix:
加了以后 任然存在这个异常 求解!!
struts2 json 插件 @JSON(serialize = false) -
fangyan_oracle:
谢谢了, 很受用
用IE修改当前页面内容的代码zzzz -
cfying:
[flash=200,200][/flash][url][/u ...
精解window.setTimeout()使用方式与参数传递问题!(转) -
qinglangee:
tiewazi 写道param必须是全局变量(即window对 ...
精解window.setTimeout()使用方式与参数传递问题!(转)
Struts2与Spring 的集成要用到Spring插件包,这个包是同Struts2一起发布的。
Spring插件是通过覆盖(override)Struts2的 ObjectFactory来增强核心框架对象的创建。
当创建一个对象的时候,它会用Struts2配置文件中的class属性去和Spring配置文件中的id属性进行关联,
如果能找到则由Spring创建,否则由Struts2框架自身创建,然后由Spring来装配。
Spring插件具体有如下几个作用:
1. 允许spring来创建Action、Interceptror和Result
2. 由Struts创建的对象能够被Spring装配
3. 提供了2个拦截器来自动装配action,如果没有使用Spring ObjectFactory的话
这里要注意的是,我们不必在Spring中去注册action,尽管我们可以这么去做,通常Struts框架会自动的从action mapping中创建action对象。
1. 整合Spring,加入struts2-spring-plugin-xxx.jar包。
有的教程说要在在struts.properties中设置struts.objectFactory属性值
struts.objectFactory = spring
其实struts2-spring-plugin-2.0.8.jar
这个插件包中有个struts-plugin.xml文件,它的内容如下:
这里它将框架常量struts.objectFactory覆盖了,设置为 ”spring”,
其实这里是使用了缩写,我们可以写全称:
org.apache.struts2.spring.StrutsSpringObjectFactory。
这个缩写的”spring”是和 bean配置中的name属性相对应的。
默认情况下所有由框架创建的对象都是由ObjectFactory实例化的,
ObjectFactory提供了与其它IoC容器如Spring、Pico等集成的方法。
覆盖这个ObjectFactory的类必须继承ObjectFactory类或者它的任何子类,
并且要带有一个不带参数的构造方法。
在这里我们用 org.apache.struts2.spring.StrutsSpringObjectFactory
代替了默认的ObjectFactory。
2. 配置Spring监听器,将Spring.jar包包含到应用中 。
3. 在applicationContext.xml中注册Bean
4. 在struts.xml中就可以引用applicationContext.xml中注册的Bean,默认用name,也就是applicationContext.xml中的id。
5. 在applicationContext.xml中配置Action的Logic,Java文件中的new 去掉,加入get,set方法。
6. 运行页面还跟之前一样,则成功。
总结步骤:
1.加入struts2-spring-plugin-xxx.jar包。
2.配置监听器。
3.注册Bean,Struts中引用。
4.修改对应的类,使用IOC的注入。完成。
附加1: Spring AOP的两个例子
介绍AOP联盟项目的文档 http://www.blogjava.net/joseph/archive/2007/12/19/168630.html
Spring AOP 概览与细节 http://www.iteye.com/topic/109075
Spring AOP 学习小结 http://www.iteye.com/topic/39899
Spring AOP http://www.iteye.com/topic/41821
利用spring AOP管理权限[简单实例] http://www.iteye.com/topic/42673
关于配置文件:
service中配置了接口,实现类和过滤器,过滤器包装实现类中继承接口的方法。
testResult则使用了service代理产生的Bean。
附加2:struts2相关
深入Struts2的配置文件 http://www.java3z.com/cwbwebhome/article/article2/2938.html?id=1631
附加3: Java动态代理
主要内容4个
1.一个接口 2. 一个接口的实现类 都很普通
3.一个实现InvocationHandler接口的动态类,覆盖invoke方法实现方法前后的插入。
4.用Proxy.newProxyInstance(ClassLoader loader, Class[] interfaces, InvocationHandler h)
方法得到被动态代理的接口,调用被代理的方法。
代码如下:
Subject RealSubject DynamicSubject Client
Subject.java
RealSubject.java
DynamicSubject.java
Client.java
Spring插件是通过覆盖(override)Struts2的 ObjectFactory来增强核心框架对象的创建。
当创建一个对象的时候,它会用Struts2配置文件中的class属性去和Spring配置文件中的id属性进行关联,
如果能找到则由Spring创建,否则由Struts2框架自身创建,然后由Spring来装配。
Spring插件具体有如下几个作用:
1. 允许spring来创建Action、Interceptror和Result
2. 由Struts创建的对象能够被Spring装配
3. 提供了2个拦截器来自动装配action,如果没有使用Spring ObjectFactory的话
这里要注意的是,我们不必在Spring中去注册action,尽管我们可以这么去做,通常Struts框架会自动的从action mapping中创建action对象。
1. 整合Spring,加入struts2-spring-plugin-xxx.jar包。
有的教程说要在在struts.properties中设置struts.objectFactory属性值
struts.objectFactory = spring
其实struts2-spring-plugin-2.0.8.jar
这个插件包中有个struts-plugin.xml文件,它的内容如下:
<struts> <bean type="com.opensymphony.xwork2.ObjectFactory" name="spring" class="org.apache.struts2.spring.StrutsSpringObjectFactory" /> <constant name="struts.objectFactory" value="spring" /> <package name="spring-default"> <interceptors> <interceptor name="autowiring" class="com.opensymphony.xwork2.spring.interceptor.ActionAutowiringInterceptor"/> <interceptor name="sessionAutowiring" class="org.apache.struts2.spring.interceptor.SessionContextAutowiringInterceptor"/> </interceptors> </package> </struts>
这里它将框架常量struts.objectFactory覆盖了,设置为 ”spring”,
其实这里是使用了缩写,我们可以写全称:
org.apache.struts2.spring.StrutsSpringObjectFactory。
这个缩写的”spring”是和 bean配置中的name属性相对应的。
默认情况下所有由框架创建的对象都是由ObjectFactory实例化的,
ObjectFactory提供了与其它IoC容器如Spring、Pico等集成的方法。
覆盖这个ObjectFactory的类必须继承ObjectFactory类或者它的任何子类,
并且要带有一个不带参数的构造方法。
在这里我们用 org.apache.struts2.spring.StrutsSpringObjectFactory
代替了默认的ObjectFactory。
2. 配置Spring监听器,将Spring.jar包包含到应用中 。
<?xml version="1.0" encoding="UTF-8"?> <web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <!-- 以前的 . . . --> <!-- 新加入listener --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> </web-app>
3. 在applicationContext.xml中注册Bean
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans default-autowire="byName"> <bean id="aopAction" class="com.zhch.action.AOPAction"/> </beans>
4. 在struts.xml中就可以引用applicationContext.xml中注册的Bean,默认用name,也就是applicationContext.xml中的id。
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <include file="struts-default.xml"/> <package name="Struts2_IoC" extends="struts-default"> <action name="Login" class="com.zhch.LoginAction"> <result name="error">/error.jsp</result> <result name="success">/welcom.jsp</result> </action> <!-- action 的class 改为 applicationContext 是Bean的id --> <action name="aopAction" class="aopAction"> <result name="input">/AOPresult.jsp</result> <result name="error">/error.jsp</result> <result name="success">/AOPresult.jsp</result> </action> </package> </struts>
5. 在applicationContext.xml中配置Action的Logic,Java文件中的new 去掉,加入get,set方法。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans default-autowire="byName"> <bean id="aopAction" class="com.zhch.action.AOPAction"> <property name="logic" ref="aopLogic"/> </bean> <bean id="aopLogic" class="com.zhch.logic.AOPLogicImpl"/> </beans>
package com.zhch.action; import com.opensymphony.xwork2.ActionSupport; import com.zhch.logic.AOPLogicImpl; public class AOPAction extends ActionSupport { /** serialVersionUID */ private static final long serialVersionUID = 1L; private AOPLogicImpl logic; private String word; public String execute(){ //logic 注释掉 //logic=new AOPLogicImpl(); word=logic.getWord(); return SUCCESS; } /** * @param logic the logic to set */ public void setLogic(AOPLogicImpl logic) { this.logic = logic; } /** * 其它的 * . * . * . */ }
6. 运行页面还跟之前一样,则成功。
总结步骤:
1.加入struts2-spring-plugin-xxx.jar包。
2.配置监听器。
3.注册Bean,Struts中引用。
4.修改对应的类,使用IOC的注入。完成。
附加1: Spring AOP的两个例子
介绍AOP联盟项目的文档 http://www.blogjava.net/joseph/archive/2007/12/19/168630.html
Spring AOP 概览与细节 http://www.iteye.com/topic/109075
Spring AOP 学习小结 http://www.iteye.com/topic/39899
Spring AOP http://www.iteye.com/topic/41821
利用spring AOP管理权限[简单实例] http://www.iteye.com/topic/42673
关于配置文件:
service中配置了接口,实现类和过滤器,过滤器包装实现类中继承接口的方法。
testResult则使用了service代理产生的Bean。
附加2:struts2相关
深入Struts2的配置文件 http://www.java3z.com/cwbwebhome/article/article2/2938.html?id=1631
附加3: Java动态代理
主要内容4个
1.一个接口 2. 一个接口的实现类 都很普通
3.一个实现InvocationHandler接口的动态类,覆盖invoke方法实现方法前后的插入。
4.用Proxy.newProxyInstance(ClassLoader loader, Class[] interfaces, InvocationHandler h)
方法得到被动态代理的接口,调用被代理的方法。
代码如下:
Subject RealSubject DynamicSubject Client
Subject.java
package com.zhch.proxystudy; public interface Subject { void request(String a,String b); }
RealSubject.java
package com.zhch.proxystudy; public class RealSubject implements Subject { @Override public void request(String a,String b) { System.out.println("I get "+a); System.out.println("I get "+b); System.out.println("Here are a: "+a+", b: "+b); } }
DynamicSubject.java
package com.zhch.proxystudy; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; public class DynamicSubject implements InvocationHandler { private Object sub; public DynamicSubject() {} public DynamicSubject(Object obj) { sub = obj; } public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { System.out.println( "before calling " + method); method.invoke(sub,args); System.out.println( "after calling " + method); return null ; } }
Client.java
package com.zhch.proxystudy; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Proxy; public class Client { public static void main(String[] args) { RealSubject rs = new RealSubject();// 在这里指定被代理类 InvocationHandler ds = new DynamicSubject(rs); Class cls = rs.getClass(); // 以下是一次性生成代理 Subject subject = (Subject) Proxy.newProxyInstance( cls.getClassLoader(), cls.getInterfaces(), ds); subject.request("LQ","ZC"); } }
发表评论
-
链接不同导致两个session
2010-01-09 11:56 1164在程序开发中由于两个不同的链接地址链接到同一个页面,导致在访 ... -
ajax乱码
2009-12-31 14:34 1041可以使用encodeURI进行两次编码,然后在服务器端使用以下 ... -
取得request的访问路径
2009-12-16 13:11 1190request.getHeader("Referer ... -
jsp自定义标签写法
2009-11-24 10:06 1261页面引用: <%@ taglib uri=" ... -
jstl的几个例子
2008-11-20 11:21 2611test: <c:if test='${detailS ... -
SSH学习记录(6)-整合Hibernate
2008-11-02 11:52 1280Spring 中整合Hibernate 1. Spring中 ... -
SSH学习记录(5)-简单Hibernate
2008-11-02 11:43 1304简单Hibernate 1. 数据库建好表 drop ta ... -
SSH学习记录(4)-AOP测试
2008-11-02 11:37 16901. 页面加入提交到logLogic方法的按钮 <fo ... -
SSH学习记录(2)
2008-11-02 11:07 11621. 新建AOPAction类,继承ActionSupport ... -
ssh学习记录(1)
2008-09-22 22:16 2227struts2/spring3/hibernate3 1. ... -
weblogic的JDNI连接 (转)
2008-01-07 14:51 5275这两天在学习ejb,且不 ...
相关推荐
整合SSH框架时,开发者需要配置相应的XML文件,如struts.xml、spring-context.xml和hibernate.cfg.xml,以定义各个框架的配置。此外,还需确保这些jar包已加入到项目的类路径中,以便正确地运行和编译应用程序。 总...
### SSH整合笔记 #### 一、三大框架整合 在企业级应用开发中,Spring、Struts2 和 Hibernate 组合起来被广泛称为 SSH 框架。这些框架各自解决了不同的问题,但组合在一起可以提供一个非常强大的解决方案。下面将...
### SSH整合 struts+hibernate+spring #### 一、SSH整合概述 在软件开发领域,特别是Java Web开发中,Struts、Spring 和 Hibernate 被广泛地应用于构建复杂的应用程序。这三大框架各有所长,分别在不同的层面发挥...
在IT行业中,SSH(Spring、Struts、Hibernate)是一个经典的Java Web开发框架组合,而这里的“SSH笔记-事务管理”主要关注的是Spring框架中的事务管理部分。Spring以其强大的依赖注入和面向切面编程能力,提供了灵活...
### SSH整合笔记和配置文件解析 #### SSH框架简介 SSH指的是Struts2、Spring以及Hibernate三个开源框架的集成应用,它们分别是MVC框架、轻量级IoC容器和ORM持久层框架。在实际项目开发中,这三个框架经常被一起使用...
SSH(Struts2 + Spring + Hibernate)是Java开发中常用的一种Web应用开发框架组合,它结合了Struts的MVC设计模式、Spring的依赖注入和事务管理以及Hibernate的对象关系映射能力。本笔记主要探讨SSH中的映射关系,...
SSH(Struts2、Hibernate、Spring)学习笔记详细涵盖了SSH三大框架的学习经验和常见问题解决方案。SSH三大框架在Java Web开发中被广泛使用,它们相互配合,各司其职,能够帮助开发者构建稳定高效的系统。 Struts2是...
在本文中,我们将深入探讨SSH笔记中的一个关键概念——基于注解的配置注入关系,特别是在Spring框架4.x版本中的应用。SSH(Struts、Spring、Hibernate)是Java Web开发中的经典组合,而Spring框架以其强大的依赖注入...
这个"SSH2整合-精简版(带表格分页)"着重于在项目中实现轻量级的整合,并且加入了表格数据的分页功能。下面将详细介绍这三个框架以及分页技术的应用。 首先,Struts2是MVC(Model-View-Controller)设计模式的一种...
### Spring框架案例学习文档笔记知识点总结 #### 第一课:面向抽象编程 - **核心概念**:面向抽象编程强调的是程序设计中通过抽象接口来进行设计和实现的方式,它避免了直接依赖具体实现类,增强了系统的灵活性和可...
### Spring 2.5 学习笔记知识点梳理 #### 第一课:面向抽象编程 - **定义**:面向抽象编程是一种编程范式,强调通过抽象类或接口来设计程序结构,减少对具体实现的依赖。 - **优势**: - 提高了系统的可维护性与...
通过分析和理解这些文件,开发者可以深入学习如何将SSH框架和Ajax技术有效结合,以实现一个高性能的在线聊天系统。这样的实践有助于提升开发者在Java Web开发领域的技能,对今后的项目开发有着极大的指导意义。
SSH框架,全称为Spring、Struts2和Hibernate的组合,是Java Web开发中常见的三大开源框架集成。这个框架集合提供了模型-视图-控制器(MVC)架构模式,使得开发者可以更高效、灵活地构建可维护性强的企业级应用。在这...
- **修改struts.xml文件:** 将Action的类路径改为Bean名称,并将Action加入Spring容器。 - **验证:** 确保页面跳转正常,表示Struts与Spring整合成功。 **(2) Hibernate与Spring整合:** - **管理SessionFactory...
2. Spring的核心库,如spring-context.jar、spring-beans.jar,提供了IoC和AOP的功能。 3. Hibernate的核心库,如hibernate-core.jar,包含ORM的主要实现。 4. 数据库驱动,如mysql-connector-java.jar,用于连接...
- 添加Spring功能:在应用中加入Spring框架的核心功能,如依赖注入。 - Spring配置文件:定义beans,配置业务层、数据访问层等组件。 - 依赖注入:利用Spring的IoC容器管理对象的创建和依赖关系。 #### 6. Spring+...