本文共 3323 字,大约阅读时间需要 11 分钟。
首先建立如下项目:
接着,在项目中引入如下jar包:
楼主本人属于比较笨的那种,总是引丢了。。
1,首先是web.xml中,spring跟strut2的基本配置:
org.springframework.web.context.ContextLoaderListener struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter struts2 *
2,hibernate的连接配置
jdbc:mysql://localhost/testhibernate org.hibernate.dialect.MySQLDialect root true com.mysql.jdbc.Driver
3,编写实体bean,配置bean跟表的对应关系
1,数据访问DAO
package net.blogjava.nokiaguy.models;import java.util.List;import org.springframework.orm.hibernate3.HibernateTemplate;public class MapDAO { private HibernateTemplate template; //需要spring-orm.jar包 public MapDAO(HibernateTemplate template){ this.template=template; } public String getValue(String keyword) { //在Spring中,不直接对Hibernate的Session进行操作,而是提供一个HibernateTemplate类来对Hibernate的Session进行操作。 List value=template.find("select a.value from MapEntity a where a.keyword=?",keyword); //注意引入spring-tx..这个开头的jar包 if(value.size()>0){ return String.valueOf(value.get(0)); } return null; }}
2,业务逻辑Bean
package net.blogjava.nokiaguy.models;public class MapService { private MapDAO dao; public MapService(MapDAO dao){ this.dao=dao; } //验证value是否等于lhc public boolean validate(String keyword){ String value=dao.getValue(keyword); //业务逻辑。。。。 if(value==null){ return false; }else if("lhc".equalsIgnoreCase(keyword)){ return true; } return true; }}
3,控制层Bean
package net.blogjava.nokiaguy.models;import javax.servlet.http.HttpServletRequest;import org.apache.struts2.interceptor.ServletRequestAware;import org.springframework.context.ApplicationContext;import org.springframework.web.context.support.WebApplicationContextUtils;public class FirstSSHAction implements ServletRequestAware { private HttpServletRequest request; public String execute(){ //获得ApplicationContext对象 ApplicationContext applicationContext=WebApplicationContextUtils.getWebApplicationContext(request.getSession().getServletContext()); //获得MapService对象 MapService mapService=(MapService)applicationContext.getBean("mapService"); //调用MapService类的validate方法,并在console中输出返回值 System.out.println(mapService.validate("lhc")); return "success"; } public void setServletRequest(HttpServletRequest request) { // TODO Auto-generated method stub this.request = request; }}
如上代码,我们在获得ApplicationContext对象之后,通过这个对象的getBean方法,传入我们配置文件中配置的Bean的ID来注入Bean。
我们在ssh.xml文件中添加如下注入方式:
当在action中调用业务逻辑层组件的时候,通过spring初始化了DAO层组件,而初始化DAO层Bean的时候,我们又需要之前spring初始化Hibernate组件的结果作为参数。
在这个XML文件中,我们将各层bean直接的依赖关系通过xml写在这里,一旦某曾出现变动,直接编写新的bean,更改这里的配置文件,完美实现各层的解耦合。
PS:为了完成这个Demo,还需将这个配置文件引入applicationContext.xml文件:
+在strut2.xml文件中配置action与jsp页面的对应关系。
待续。。。
转载地址:http://ydfkl.baihongyu.com/