ssh集成框架的问题

aishangIT123 2009-11-12 02:09:03
在 spring中 为Action注入接口 那么在Action中 应该怎么声明这个接口呢


Struts的配置中 加了插件 Spring配置中 加了Action BEan标签 注入了业务逻辑层的接口
Action Bean中的接口子标签 的name应该写什么呢 在Action的方法体内应该怎么写这个接口的声明和实例化呢
...全文
190 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
deng1234 2009-11-14
  • 打赏
  • 举报
回复
Action要得到spring配置文件的声明就可以了,
Action中
private UserService userService =(UserService)SpringUtil.getBean("userService");
andesen 2009-11-13
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 aishangit123 的回复:]
<property name="userService" ref="userService" />

  中的这个Name是随便起的吗  起了之后什么地方能用到啊

  如果不是随便起的  那写什么地方的名啊  如果是注入 应该Action中有这个name吧  求解
[/Quote]

name与你Action类的属性 userService同名
kamayy 2009-11-13
  • 打赏
  • 举报
回复
不知道楼主到底想说什么,给你一个struts2.x的配置参考
假如现在有UserDaoImp,UserServiceImp,UserAction,
UserDaoImp实现UserDao接口并继承HibernateDaoSupport,UserServiceImp实现UserService接口
applicationContext.xml配置
<!-- Dao配置 -->
<bean id="userDao" class="包名.UserDaoImp">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<!-- Service配置 -->
<bean id="userService" class="包名.UesrServiceImp">
<property name="userDao" ref="userDao" />
</bean>
这个时候UserServiceImp类中声明了一个UserDao接口的引用,并生成了getter,setter方法
很简单,楼主应该明白.
<!-- Action Bean配置 -->
<bean id="userAction" class="包名.UserAction">
<property name="userService" ref="userService" />
</bean>
同理,UserAction类中声明了一个UserServiceImp接口的引用,并生成了getter,setter方法
这个是struts2.x当中的配置,若在struts1.x中bean要使用name="/*"
struts.xml文件配置(这里只列举action部分)
<action name="userAction" class="这里写spring配置文件中ActionBean配置中的id属性值">
<result name="success">跳转的链接</result>
</action>
在classpath目录下创建一个struts.properties文件并配置
struts.objectFactory=spring或者在struts.xml文件中配置
<constant name="struts.objectFactory" value="spring" />
意思是将action交给spring来管理(这里在struts1.x当中配置plug-in或者在web.xml中配置)
下面web.xml中的配置我就不多说了,我把我做demo时候的配置发上来你看看吧

<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>struts-cleanup</filter-name>
<filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class>
</filter>
<filter-mapping>
<filter-name>struts-cleanup</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<context-param>
<param-name>contextConfigaLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
Clarity-Black 2009-11-13
  • 打赏
  • 举报
回复
楼主说的好乱,感觉好像没有理解框架集成的相关配置概念,直接写一个完整的流程你看看吧
首先页面收集数据,提交到struts,struts将页面的数据封装到你对应的属性中。然后执行方法,再去调用业务逻辑层,要调用业务逻辑层中的方法,那我们就需要有业务逻辑层的对象,以前的方式是我们直接new的,但是现在创建这个对象的事情我们交给spring来帮助我们完成,那就需要我们在配置文件中进行配置,告诉spring应该创建哪个类的对象
具体的spring配置如下:
<bean id="Service" class="com.softeem.agent.Service" />

<bean id="loginAction" class="com.softeem.actions.LoginAction">
<property name="userService" ref="Service"/>
</bean>
action中只要定义一个userService属性就行;其实在你配置的时候,已经声明了loginaction中有一个参数名字是userService,参照的模板是Service,注意ref后面的值必须跟你上面定义的id的值保持一致,而property后面的值必须跟你在action中定义的那个属性的名字一致
liuj822 2009-11-13
  • 打赏
  • 举报
回复
还是通过set方法注入即可,建议楼主还是去看看一些spring的书籍。
baykermr 2009-11-13
  • 打赏
  • 举报
回复
Action中只需要声明把这个接口声明成属性吧,然后必须要有getter,setter方法。
LoginServiceImpl login = null;
然后get,set方法。
zhouhualong 2009-11-13
  • 打赏
  • 举报
回复
建议楼主再看看spring的作用吧,在你要使用某个类时通过spring来调用,就不需要自己手动实例化了,这是我理解的spring思想。
sangshusen_1988 2009-11-12
  • 打赏
  • 举报
回复
1还是2?
youjianbo_han_87 2009-11-12
  • 打赏
  • 举报
回复
<bean name="/MstLcpeAction" class="com.erp.cg.mst.action.MstLcpeAction" singleton="false">
<property name="mstLcpeBD" ref="mstLcpeBD" />
</bean>

红色部分用你的 action里面配置的 path,Action 根本不用分接口和实现,直接用一般的Action就可以了。我这样用2年了。
zl3450341 2009-11-12
  • 打赏
  • 举报
回复
给你个小例子去看看
http://blog.csdn.net/5iasp/archive/2009/06/19/4284221.aspx

在action里面生成get set方法

youjianbo_han_87 2009-11-12
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 duanjianmin 的回复:]
1.在 spring中 为Action注入接口    那么在Action中 应该怎么声明这个接口呢 ?
用这个接口定义 一个对象,生成set ,get方法,这是一种IOC的set注入方法。
2.在spring的配置文件里面配置一下这个action 。格式: <bean>  <property>这里面写上面注入的接口的对象名 </property> </bean>

[/Quote]

谁说一定要接口注入???

木木水夕 2009-11-12
  • 打赏
  • 举报
回复
1.在 spring中 为Action注入接口 那么在Action中 应该怎么声明这个接口呢 ?
用这个接口定义 一个对象,生成set ,get方法,这是一种IOC的set注入方法。
2.在spring的配置文件里面配置一下这个action 。格式:<bean> <property>这里面写上面注入的接口的对象名</property></bean>
sunzhiyongq1 2009-11-12
  • 打赏
  • 举报
回复
如果你是用工具一次性生成SSH框架的话,分几步:
1. 在你那个Action中声明你要注入的接口(这个接口是你已经定义好的),并添加SET和GET方法。
比如:
//在Action中
private IUserBiz(定义的接口) userbiz;
//下面SET和GET方法
2.Spring配置文件中。
<bean name="(这个是你那个Action中的Path属性(如path='/user')) class="(Action中的包名
+Action类名)" >
<property name="(你在Action中声明的那个接口 如:userbiz)" ref=‘一样’/>
</bean>
youjianbo_han_87 2009-11-12
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 aishangit123 的回复:]
引用 3 楼 youjianbo_han_87 的回复:
引用 2 楼 aishangit123 的回复:
Action的方法体怎么写


Action里面的方法和你没用Spring时一样写,没有任何区别。


Action中接口怎么声明和实例    new impl实现类???  或者是context。getbean();
那 写注入还有什么用啊
[/Quote]

action层不用分什么实现类和接口。
KEYSOUL 2009-11-12
  • 打赏
  • 举报
回复
你说的真乱,不知道是这个意思不:
解:
假设 UserService 是业务类,
那么要在xxAction类中添加业务类接口:private UserService userService;
public void setSerService(UerService uerService ){...};
public UerService getUserService{...};
做好这就好解释了,
<property name="userService" ref="userServic">
--name="userService"就是 在xxAction类声明的 userService 属性;
--ref="userServic" 就是在spring 文件中配置的<bean id="userService" class="...">..;
一洽客服系统 2009-11-12
  • 打赏
  • 举报
回复
和其他类一样啊 吧对应的property注入就是了 别忘记设置setter方法。也可以autowire="byName"
紫炎圣骑 2009-11-12
  • 打赏
  • 举报
回复
学习框架
aishangIT123 2009-11-12
  • 打赏
  • 举报
回复
<property name="userService" ref="userService" />

中的这个Name是随便起的吗 起了之后什么地方能用到啊

如果不是随便起的 那写什么地方的名啊 如果是注入 应该Action中有这个name吧 求解
aishangIT123 2009-11-12
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 youjianbo_han_87 的回复:]
引用 2 楼 aishangit123 的回复:
Action的方法体怎么写


Action里面的方法和你没用Spring时一样写,没有任何区别。
[/Quote]

Action中接口怎么声明和实例 new impl实现类??? 或者是context。getbean();
那 写注入还有什么用啊
youjianbo_han_87 2009-11-12
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 aishangit123 的回复:]
Action的方法体怎么写
[/Quote]

Action里面的方法和你没用Spring时一样写,没有任何区别。
加载更多回复(2)

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧