- 浏览: 522022 次
- 性别:
- 来自: 青岛
文章分类
- 全部博客 (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 1134在程序开发中由于两个不同的链接地址链接到同一个页面,导致在访 ... -
ajax乱码
2009-12-31 14:34 1013可以使用encodeURI进行两次编码,然后在服务器端使用以下 ... -
取得request的访问路径
2009-12-16 13:11 1155request.getHeader("Referer ... -
jsp自定义标签写法
2009-11-24 10:06 1210页面引用: <%@ taglib uri=" ... -
jstl的几个例子
2008-11-20 11:21 2576test: <c:if test='${detailS ... -
SSH学习记录(6)-整合Hibernate
2008-11-02 11:52 1245Spring 中整合Hibernate 1. Spring中 ... -
SSH学习记录(5)-简单Hibernate
2008-11-02 11:43 1268简单Hibernate 1. 数据库建好表 drop ta ... -
SSH学习记录(4)-AOP测试
2008-11-02 11:37 16471. 页面加入提交到logLogic方法的按钮 <fo ... -
SSH学习记录(2)
2008-11-02 11:07 11251. 新建AOPAction类,继承ActionSupport ... -
ssh学习记录(1)
2008-09-22 22:16 2197struts2/spring3/hibernate3 1. ... -
weblogic的JDNI连接 (转)
2008-01-07 14:51 5228这两天在学习ejb,且不 ...
相关推荐
一、 Spring配置hibernate3的SessionFactory 30 (一) xml形式的SessionFactory 30 (二) annotation注解方式的SessionFactory 30 二、 引入hibernate所需要使用的jar 31 (一) 基本jar 31 (二) 加入annotation功能的...
一、 Spring配置hibernate3的SessionFactory 30 (一) xml形式的SessionFactory 30 (二) annotation注解方式的SessionFactory 30 二、 引入hibernate所需要使用的jar 31 (一) 基本jar 31 (二) 加入annotation功能的...
10.struts2-spring-plugin-2.1.8.jar(struts2与spring集成时使用的) Spring需要的jar包: 1.spring.jar(里面含有spring的所有核心类库) 2.commons-logging-1.1.1.jar(ASF出品的日志包,struts2 2、spring、...
10.struts2-spring-plugin-2.1.8.jar(struts2与spring集成时使用的) 二、Spring需要的jar包: 1.spring.jar(里面含有spring的所有核心类库) 2.commons-logging-1.1.1.jar(ASF出品的日志包,struts2 2、spring、...
SSH 框架,用面向对象的分析方法根据需求提出一些模型,将这些模型实现为基本的 Java 对象,然后编写基本的 DAO 接口,采用 Hibernate 架构实现的 DAO 类来实现 Java 类与数据库之间的转换和访问,最后由 Spring 做...
用户角色则具备用户注册与登录、图书搜索、心仪图书的收藏与加入购物车、购物车内容的查看与编辑、订单的提交与追踪、个人订单历史的查询、收藏夹内容的查看、已购图书的记录、以及个人信息的更新与修改等功能。...
2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...
java8 源码 clickexec 服务器遥控器,用于替代手机ssh,配置好后直接在网页点执行按钮执行命令 ...后端基于java8+springboot2.4.2+h2数据库 前端仅是能用的程度,基于...spring-boot:run h2数据库文件在/var/clickexec/
struts2.1.8 spring2.5.6 hibernate3.3.2框架整合、分页演示,由于上传资源过大,相关jar包截图在压缩包内,请自行查找加入,另外junit里的save方法请注意下,由于我设置的是插入了2万条记录,测试分页速度,所以...
" "SSH "SSH为Struts+Spring+Hibernate的一个集成框架,是目前较流 " " "行的一种Web应用程序开源框架。 " 2系统总体介绍 本项目中的可视化智能仓储管理系统需要将所有的子功能进行整合,统一进行管理。 建立集出...
笔者当初为了学习JAVA,收集了很多经典源码,源码难易程度分为初级、中级、高级等,详情看源码列表,需要的可以直接下载! 这些源码反映了那时那景笔者对未来的盲目,对代码的热情、执着,对IT的憧憬、向往!此时此...
SSH 为 Struts+Spring+Hibernate的一个集成框架,是目前较流行的一种Web应用程序开源框架。其中使用Struts作为系统的整体基础架构,负责MVC的分离,在Struts框架的模型部分,控制业务跳转,利用Hibernate框架对持久...