Spring + Struts 完整J2EE三层架构开发测试
2007-02-12 10:12
441 查看
Spring + Struts 完整J2EE三层架构开发测试
1. OOD
2. DAO, Spring DI初步
3. Service 与DAO焊接
4. Struts
5. Struts 与 Service焊接
一. 一切都是对象,所以在实例中遍布对象!数据库也是根据对象来设计的,虽然示例中只有一个对象,但结合DAO就会发现,其实这个程序是没有”表”的概念的.
二. 所有的数据访问都是通过DAO来操作,业务与数据库没有任何关系.DAO通过Spring的IOC和DI进行无缝焊接.一下代码说明了DAO与数据源的依赖关系
由于com.zhaoda.test.spring.dao.impl.PeopleDaoImpl继承了
org.springframework.jdbc.core.support.JdbcDaoSupport
所以, PeopleDaoImpl需要一个DataSource或者一个JdbcTemplate(这个是Spring框架中的类)
一下XML显示了依赖注入的配置.
三. 业务层处理所有的业务数据,它通过DAO取得数据,这两个层依然通过Spring的IOC容器和DI协调完成.
由前面一点看到,依赖注入就是这么简单,但是它是根据什么来注入的呢?业务层依赖DAO是最好的说明
先看Java代码
以上代码中,除了一个业务方法外,其它的就是一个严格按照JavaBean的规范写的.Spring就是根据set/get方法来对相应的属性注入值.
从以上两个XML中可以看出,Spring配置的就是Bean,它是根据id属性来标识一个bean的,正常的bean还有一个class属性,表示由哪个类来产生实例.使用WebApplicationContext.getBean(String name)得到bean对象
四. Struts是目前应用最广的开源MVC框架,虽然已经暴露很多缺点,但由于其入门门槛低,以及它成熟的技术,依然受到开发者的青睐.
说白了吧,Struts最终也只是一个Servlet,只是这个Servlet后面的事情太复杂了.
说它是Servlet因为它在web.xml中是如下配置的
但其实,只是这样配置了并不能使用Struts,它还需要config中指定的另一个配置文件/WEB-INF/struts-config.xml,这个就是Struts的核心配置文件,
一个Action的定义如下:
在自定义的Action中,通过ActionMapping. findForward(String name)来跳转到forward指定的path
五. Struts只是一个控制器,它本身没有任何的业务逻辑,并且为了搞扩展性和可移植性,所以不能直接把Service层和Struts耦合,因此,Spring提供了专门应用于WEB应用的接口,那就是WebApplicationContextUtils和ContextLoaderListener.
如果在WEB中需要使用,最好的方法是在web.xml中配置如下代码
然后在使用ServletContext来得到WebApplicationContext,在Struts中有如下代码初始化WebApplicationContext:
然后使用getBean(String name)得到Bean对象,例如:需要得到前面配置的 testService ,那么只需要像这个代码:
由于博客不支持附件,所以需要代码的朋友请到java_fancy@163.com下载附件,密码是: new_java
1. OOD
2. DAO, Spring DI初步
3. Service 与DAO焊接
4. Struts
5. Struts 与 Service焊接
一. 一切都是对象,所以在实例中遍布对象!数据库也是根据对象来设计的,虽然示例中只有一个对象,但结合DAO就会发现,其实这个程序是没有”表”的概念的.
二. 所有的数据访问都是通过DAO来操作,业务与数据库没有任何关系.DAO通过Spring的IOC和DI进行无缝焊接.一下代码说明了DAO与数据源的依赖关系
由于com.zhaoda.test.spring.dao.impl.PeopleDaoImpl继承了
org.springframework.jdbc.core.support.JdbcDaoSupport
所以, PeopleDaoImpl需要一个DataSource或者一个JdbcTemplate(这个是Spring框架中的类)
一下XML显示了依赖注入的配置.
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <!-- 初始化一个数据源,因为这里设计的数据库操作需要用到,这里通过JNDI初始化一个对象 --> <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName" value="java:comp/env/jdbc/test"></property> </bean> <!-- DAO依赖于数据源 --> <bean id="peopleDao" class="com.zhaoda.test.spring.dao.impl.PeopleDaoImpl"> <!-- 这里给DAO注入数据源 --> <property name="dataSource"> <ref bean="dataSource" /> </property> </bean> </beans> |
由前面一点看到,依赖注入就是这么简单,但是它是根据什么来注入的呢?业务层依赖DAO是最好的说明
先看Java代码
public class TestServiceImpl implements TestService { private PeopleDao dao; /** * @return the dao */ public PeopleDao getDao() { return dao; } /** * @param dao * the dao to set */ public void setDao(PeopleDao dao) { this.dao = dao; } /** * * @see com.zhaoda.test.spring.service.TestService#add(com.zhaoda.test.spring.vo.People) */ public int add(People p) { PeoplePo po = new PeoplePo(); po.setAge(p.getAge()); po.setName(p.getName()); return dao.add(po); } …… } |
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <bean id="testService" class="com.zhaoda.test.spring.service.impl.TestServiceImpl"> <!-- DAO的初始化就是前面的代码定义的.这里依赖DAO --> <property name="dao"> <ref local="peopleDao" /> </property> </bean> </beans> |
四. Struts是目前应用最广的开源MVC框架,虽然已经暴露很多缺点,但由于其入门门槛低,以及它成熟的技术,依然受到开发者的青睐.
说白了吧,Struts最终也只是一个Servlet,只是这个Servlet后面的事情太复杂了.
说它是Servlet因为它在web.xml中是如下配置的
<servlet> <servlet-name>struts</servlet-name> <servlet-class> org.apache.struts.action.ActionServlet </servlet-class> <init-param> <param-name>config</param-name> <param-value>/WEB-INF/struts-config.xml</param-value> </init-param> <init-param> <param-name>debug</param-name> <param-value>3</param-value> </init-param> <init-param> <param-name>detail</param-name> <param-value>3</param-value> </init-param> <load-on-startup>0</load-on-startup> </servlet> <servlet-mapping> <servlet-name>struts</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> |
一个Action的定义如下:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd"> <struts-config> <action-mappings> <action path="/people" type="com.zhaoda.test.struts.action.TestAction" > <forward name="edit" path="/people.jsp"></forward> <forward name="findAll" path="/all.jsp"></forward> </action> </action-mappings> </struts-config> |
五. Struts只是一个控制器,它本身没有任何的业务逻辑,并且为了搞扩展性和可移植性,所以不能直接把Service层和Struts耦合,因此,Spring提供了专门应用于WEB应用的接口,那就是WebApplicationContextUtils和ContextLoaderListener.
如果在WEB中需要使用,最好的方法是在web.xml中配置如下代码
<context-param> <!-- Spring 的配置文件 --> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext*.xml</param-value> </context-param> <!-- Spring 配置文件载入监听器 --> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> |
private WebApplicationContext context = null; /** * * @see org.apache.struts.action.Action#setServlet(org.apache.struts.action.ActionServlet) */ public void setServlet(ActionServlet servlet) { context = WebApplicationContextUtils .getRequiredWebApplicationContext(servlet.getServletContext()); } |
private WebApplicationContext context = null; /** * * @see org.apache.struts.action.Action#setServlet(org.apache.struts.action.ActionServlet) */ public void setServlet(ActionServlet servlet) { context = WebApplicationContextUtils .getRequiredWebApplicationContext(servlet.getServletContext()); } Object o = context.getBean(“testService”); //然后强制转型成对应类型就OK了. |
相关文章推荐
- 常见Struts、Hibernate、Spring、J2EE、ibatis、Oracle等开发框架架构图及其简介
- [转]基于struts+spring+ibatis的轻量级J2EE开发
- 基于struts+spring+ibatis的轻量级J2EE开发
- Struts、Hibernate和Spring的轻型J2EE架构的研究
- 基于struts+spring+ibatis的轻量级J2EE开发
- 文章推荐-基本struts+spring+ibatis的 J2EE 开发
- 基于struts+spring+ibatis的轻量级J2EE开发
- 基于springboot+bootstrap+mysql+redis搭建一套完整的权限架构【四】【编写基础开发工具】
- ssh三大框架,三层架构 整合测试!完整分页代码,JdbcTemplate等测试,存储过程调用,留着以后复习吧
- 基于struts+spring+ibatis的轻量级J2EE开发
- 基于struts+spring+ibatis的轻量级J2EE开发
- 基于 struts+spring+ibatis 的轻量级 J2EE 开发
- 基于struts+spring+ibatis的 J2EE 开发
- 基于struts+spring+ibatis的轻量级J2EE开发
- 基于struts+spring+ibatis的轻量级J2EE开发
- GPS部标平台的架构设计(三) 基于struts+spring+hibernate+ibatis+quartz+mina框架开发GPS平台
- Struts+Spring+Hibernate开发环境架构配置
- 基于struts+spring+ibatis的轻量级J2EE开发
- J2EE框架(TomcatStrutsHibernateSpringAjax(dojo))开发步骤
- J2EE框架(TomcatStrutsHibernateSpringAjax(dojo))开发步骤: