首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Struts与Spring的调整

2012-09-22 
Struts与Spring的整合学了一段时间的Struts与Spring,老师让把Struts与Spring整合,于是今天尝试做了一个登

Struts与Spring的整合

学了一段时间的Struts与Spring,老师让把Struts与Spring整合,于是今天尝试做了一个登陆,模拟使用SQLSERVER验证登陆,下面讲讲自己的心得吧!


工欲善其事必先利其器,要想整合Struts与Spring,我们就得先搭建Struts与Spring环境,其实我们强大的MyEclipse已经给我们提供了十分便捷的方法:1、 ?创建工程web project 命名为 StrutsAndSpring
2、 ?添加Struts支持
项目文件夹单击右键 Myeclipse ? Add Struts capabilities… ?点选Struts1.3
勾选Install Struts TLDs ? ?finish
3、 ?添加Spring 支持
项目文件夹单击右键Myeclipse ? ?Add Spring capabilities… 选择所需jar包(视情况而定,也可需要时在添加Build path,我选择了四个,最好是了解不同包的功能,只添加使用的,节省资源。AOP,Core,Persistence Core,Persistence JDBC.
之后按照我创建了两个JSP页面,分别是成功与失败后的页面,然后添加了Form,和Action.
然后创建了一个数据层和业务层,数据层中主要是模拟对数据库的操作,而业务层就是用来给用户调用的。为了便于扩展,数据层使用了一个接口类,loginDao.java,loginDao4SqlServer.java实现了loginDao.java接口。Struts与Spring的调整??
首先我们修改web.xml,加入listener:

<listener>

?? <listener-class>org.springframework.web.context.?
??? ContextLoaderListener</listener-class>

</listener>


为了在Struts中加载Spring context,需要在struts-config.xml文件中加入如下部分:
<struts-config>
? <plug-in
???????? className="org.springframework.web.struts.ContextLoaderPlugIn">
???? <set-property property="contextConfigLocation"
???????? value="/WEB-INF/applicationContext.xml" />
? </plug-in>
</struts-config>
??? 通过Struts的plug-in在Struts和Spring之间提供了良好的结合点。通过plug-in我们实现了Spring context的加载,不过仅仅加载Spring context并没有什么实际的意义,还应该经过配置将Struts的Action交给Spring容器进行管理。<action-mappings>
? <action path="/login"
???????????? type="com.suda.struts.action.LoginAction"
???????????? name="loginForm">
????? <forward name="success" path="/success.jsp" />
????? <forward name="failure" path="/failure.jsp" />
</action></action-mappings><!--设置spring代理-->?<controller processor/> ?
??? 在form bean这个节点上与传统的Struts配置没有什么区别,而在Action上面则发生了变化。在传统的action节点上type属性写入action类的完整类名,而和Spring结合后在这点上是使用了Spring提供的DelegatingActionProxy作为action的type属性,DelegatingActionProxy同样是org.apache.struts.action.Action的一个子类,它将把调用请求转交给真正的Action实现。通过这样的方式,Spring获得了Action实例的管理权,它将对Action进行调度,并为Struts提供所需的Action实例。这样,就可以将Action看作是Spring的一个bean,它就可以享受Spring的所有服务,如依赖注入、实例管理、事务管理等。
??? 在applicationContext.xml中相应的配置如下的节点:
<beans>
?? ?<bean id="loginDao4SqlServer" ref="loginDao4SqlServer"/>?? ?</bean>?? ??? ?<bean name="/login" ……>
……
</action>节点相对应,这样,Spring Bean Name与Struts Action Path相关联,当Struts加载对应的Action时,DelegatingActionProxy就根据传入的path属性,在Spring Context寻找对应bean,并将其实例返回给Struts。与此同时,还可以看到,"/login" bean 中包含了一个login引用,Spring 在运行期将根据配置为其提供login实例,以及围绕login的事务管理服务。这样一来,对于Struts 开发而言,我们既可以延续Struts 的开发流程,也可以享受Spring 提供的事务管理服务。
??? 至此,SS组合已经将Struts MVC以及Spring中的Bean管理、事务管理融为一体。我们就获得了一个全面、成熟、高效、自顶而下的Web 开发框架。
具体到我们的登录,我们通过在Action的execute中处理:
private UserManager login;public ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) {LoginForm loginForm = (LoginForm) form;// TODO Auto-generated method stubString username=loginForm.getUsername();String password=loginForm.getPassword();if (login.validate(username, password)) {return mapping.findForward("success");}else {return mapping.findForward("failure");}}public UserManager getLogin() {return login;}public void setLogin(UserManager login) {this.login = login;}
?做完这些我们的小整合就可以进行了!

?

热点排行