学了一段时间的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接口。
首先我们修改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 processorClass="org.springframework.web.struts.DelegatingRequestProcessor" />
在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" class="com.suda.spring.dao.LoginDao4SqlServer"></bean>
<bean id="userManager" class="com.suda.spring.manager.UserManager">
<property name="loginDao" ref="loginDao4SqlServer"/>
</bean>
<bean name="/login" class="com.suda.struts.action.LoginAction">
<property name="login">
<ref bean="userManager"/>
</property>
</bean>
</beans>
最后这个bean的配置是关键,这个名为"/login"的bean与Struts中的
<action path="/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 stub
String 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;
}
做完这些我们的小整合就可以进行了!
- 大小: 22.3 KB
分享到:
相关推荐
Struts技术资料 hibernate技术资料 spring技术资料 ssh整合技术(struts与hibernate整合,struts与spring整合,hibernate与spring整合,struts,hibernate,spring整合)
以上就是Struts与Spring整合的关键点,整合这两个框架可以使应用程序更易于测试和维护,同时充分利用Spring的强大功能,如依赖注入和事务管理,提高开发效率和应用质量。在实际项目中,需要根据具体需求选择合适的...
在"EJB3与Struts与Spring整合开发(SSE)"的场景中,开发者可能将EJB3作为业务逻辑层,处理复杂的业务操作;Struts作为前端控制器,负责用户交互和请求转发;而Spring则作为整个应用的“胶水”,实现各层间的协调和...
在整合过程中,开发者需要注意配置文件的正确设置,包括Struts2的struts.xml、Hibernate的hibernate.cfg.xml以及Spring的applicationContext.xml等。还需要确保各框架之间的依赖注入正确无误,例如,Spring需要知道...
将Struts与Spring整合可以充分利用两者的优点,实现更高效、更灵活的开发。 **Struts框架详解** Struts是Apache软件基金会的一个开源项目,基于MVC设计模式,主要解决了JSP模型2架构中的控制器问题。它通过...
**Eclipse Struts与Spring整合详解** 在Java Web开发领域,Struts和Spring都是非常重要的框架,它们分别在MVC模式和依赖注入方面扮演着关键角色。Struts作为一个经典的MVC框架,帮助开发者构建可维护的、结构清晰的...
用DelegatingRequestProcessor和DelegatingActionProxy两种方法实现struts和spring的整合,不同的地方就在struts-config.xml文件中,当前文件中DelegatingRequestProcessor是注释的。
4. **Struts与Spring整合**:在Struts的配置文件中,设置Action类由Spring管理,通过`<interceptor-ref>`引用Spring的ModelDriven拦截器,实现模型驱动。 5. **MyBatis与Spring整合**:使用Spring的...
5. **Struts与Spring整合**: 使用Spring的Struts插件,将Action实例化的工作交给Spring,通过`org.springframework.web.struts.DelegatingActionProxy`实现。 通过SSH整合,开发者可以更专注于业务逻辑的实现,而不...
在实际应用中,随着Struts2的出现和Spring Boot的流行,这种Struts1与Spring的整合方式逐渐被新的框架组合取代,如Spring MVC或Spring Boot的WebFlux。然而,对于学习和理解框架整合以及依赖注入的概念,这些基础...
虽然题目中没有提及,但在实际开发中,Spring MVC往往被看作是Struts与Spring整合的最佳实践。Spring MVC是Spring框架的一部分,它提供了一套完整的MVC实现,相比于Struts,Spring MVC更加轻量级,与Spring的集成...
通过以上步骤,一个基本的Struts、Spring和Hibernate整合的应用就搭建完成了。这个整合的关键在于Struts处理HTTP请求,Spring管理业务对象和依赖,而Hibernate则处理数据库操作。这样的架构可以实现松耦合,便于代码...
- **Struts与Spring整合的注意事项**: - 避免直接在Action类中访问Spring上下文,以免破坏Spring的封装性。 - 对Struts的定制可以通过自定义Action代理或者拦截器来实现。 通过以上几个方面的介绍,可以看出SSH...
Struts和Spring之间通过ActionServlet和Spring的DispatcherServlet协同工作,而Spring与Hibernate之间的整合通常通过SessionFactoryBean和HibernateTemplate完成。 8. **用户注册流程**:用户提交注册信息后,...
struts1 spring ibatis整合项目源码struts1 spring ibatis整合项目源码struts1 spring ibatis整合项目源码struts1 spring ibatis整合项目源码struts1 spring ibatis整合项目源码struts1 spring ibatis整合项目源码
1. **Struts与Spring整合**:主要通过Struts2-Spring-plugin实现,配置Struts2的核心配置文件(struts.xml)以指定Spring作为Action的创建者。同时,Action类需要继承SpringActionSupport,并通过`@Component`、`@...
Struts 与Spring整合时,可以通过Spring的Action代理,实现Action的依赖注入,进一步提高代码的可测试性和解耦。 2. **Spring框架**:Spring 提供了一个容器,用于管理应用对象的生命周期和依赖关系。它允许通过XML...
struts struts hibernate spring 整合 PUBhibernstruts hibernate spring 整合 PUBate spring 整合 PUB