`
高级java工程师
  • 浏览: 410852 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

s2sh整合<二>

    博客分类:
  • s2sh
阅读更多
这里我们需要使用spring的ioc将DAO诸如到service中,所以不要忘记在service实现类中加入DAO作为属性。
PersonServiceImpl.java

Java代码 
1.package test.s2sh.service.impl;   
2.  
3.import java.util.List;    
4.  
5.import test.s2sh.bean.Person;    
6.import test.s2sh.dao.PersonDAO;    
7.import test.s2sh.service.PersonService;    
8.  
9.public class PersonServiceImpl implements PersonService {    
10.    private PersonDAO personDAO;    
11.    public void delete(Person p) {    
12.        this.personDAO.removePerson(p);    
13.    }   
14.  
15.    public List<Person> findAll() {    
16.        return this.personDAO.findAllPersons();    
17.    }   
18.  
19.    public Person findById(Integer id) {    
20.        return this.personDAO.findPersonById(id);    
21.    }   
22.  
23.    public void save(Person p) {    
24.        this.personDAO.savePerson(p);    
25.    }   
26.  
27.    public void update(Person p) {    
28.        this.personDAO.updatePerson(p);    
29.    }   
30.  
31.    public PersonDAO getPersonDAO() {    
32.        return personDAO;    
33.    }   
34.  
35.    public void setPersonDAO(PersonDAO personDAO) {    
36.        this.personDAO = personDAO;    
37.    }   
38.  
39.}  


Java代码
1.package test.<SPAN class=hilite1>s2sh</SPAN>.service.impl;   
2.  
3.import java.util.List;   
4.  
5.import test.<SPAN class=hilite1>s2sh</SPAN>.bean.Person;   
6.import test.<SPAN class=hilite1>s2sh</SPAN>.dao.PersonDAO;   
7.import test.<SPAN class=hilite1>s2sh</SPAN>.service.PersonService;   
8.  
9.public class PersonServiceImpl implements PersonService {   
10.    private PersonDAO personDAO;   
11.    public void delete(Person p) {   
12.        this.personDAO.removePerson(p);   
13.    }   
14.  
15.    public List<Person> findAll() {   
16.        return this.personDAO.findAllPersons();   
17.    }   
18.  
19.    public Person findById(Integer id) {   
20.        return this.personDAO.findPersonById(id);   
21.    }   
22.  
23.    public void save(Person p) {   
24.        this.personDAO.savePerson(p);   
25.    }   
26.  
27.    public void update(Person p) {   
28.        this.personDAO.updatePerson(p);   
29.    }   
30.  
31.    public PersonDAO getPersonDAO() {   
32.        return personDAO;   
33.    }   
34.  
35.    public void setPersonDAO(PersonDAO personDAO) {   
36.        this.personDAO = personDAO;   
37.    }   
38.  
39.}  


package test.s2sh.service.impl;

import java.util.List;

import test.s2sh.bean.Person;
import test.s2sh.dao.PersonDAO;
import test.s2sh.service.PersonService;

public class PersonServiceImpl implements PersonService {
	private PersonDAO personDAO;
	public void delete(Person p) {
		this.personDAO.removePerson(p);
	}

	public List<Person> findAll() {
		return this.personDAO.findAllPersons();
	}

	public Person findById(Integer id) {
		return this.personDAO.findPersonById(id);
	}

	public void save(Person p) {
		this.personDAO.savePerson(p);
	}

	public void update(Person p) {
		this.personDAO.updatePerson(p);
	}

	public PersonDAO getPersonDAO() {
		return personDAO;
	}

	public void setPersonDAO(PersonDAO personDAO) {
		this.personDAO = personDAO;
	}

}





(6)接下来我们开始对action层进行设置,实际项目中的action可能会有很多,所以我们这里需要对action进行分包,因为我们这里针对Person进行操作,所以我们创建test.s2sh.action.person.
这里先做保存操作
SavePersonAction.java

Java代码 
1.package test.s2sh.action.person;   
2.  
3.import test.s2sh.bean.Person;    
4.import test.s2sh.service.PersonService;    
5.  
6.import com.opensymphony.xwork2.ActionSupport;    
7.  
8.public class SavePersonAction extends ActionSupport {    
9.    private Person p;    
10.    private PersonService service;    
11.    public Person getP() {    
12.        return p;    
13.    }   
14.    public void setP(Person p) {    
15.        this.p = p;    
16.    }   
17.    public PersonService getService() {    
18.        return service;    
19.    }   
20.    public void setService(PersonService service) {    
21.        this.service = service;    
22.    }   
23.       
24.    public String execute() throws Exception {    
25.        this.service.save(p);    
26.        return this.SUCCESS;    
27.    }   
28.       
29.    public void validate() {    
30.        if(p.getName()==null||"".equals(p.getName())){    
31.            this.addFieldError("p.name", "name is not null");    
32.        }   
33.    }   
34.       
35.}  
Java代码 
1.package test.<SPAN class=hilite1>s2sh</SPAN>.action.person;   
2.  
3.import test.<SPAN class=hilite1>s2sh</SPAN>.bean.Person;   
4.import test.<SPAN class=hilite1>s2sh</SPAN>.service.PersonService;   
5.  6.import com.opensymphony.xwork2.ActionSupport;   
7.  
8.public class SavePersonAction extends ActionSupport {   
9.    private Person p;   
10.    private PersonService service;   
11.    public Person getP() {   
12.        return p;   
13.    }   
14.    public void setP(Person p) {   
15.        this.p = p;   
16.    }   
17.    public PersonService getService() {   
18.        return service;   
19.    }   
20.    public void setService(PersonService service) {   
21.        this.service = service;   
22.    }   
23.       
24.    public String execute() throws Exception {   
25.        this.service.save(p);   
26.        return this.SUCCESS;   
27.    }   
28.       
29.    public void validate() {   
30.        if(p.getName()==null||"".equals(p.getName())){   
31.            this.addFieldError("p.name", "name is not null");   
32.        }   
33.    }   
34.       
35.}  





package test.s2sh.action.person;

import test.s2sh.bean.Person;
import test.s2sh.service.PersonService;

import com.opensymphony.xwork2.ActionSupport;

public class SavePersonAction extends ActionSupport {
	private Person p;
	private PersonService service;
	public Person getP() {
		return p;
	}
	public void setP(Person p) {
		this.p = p;
	}
	public PersonService getService() {
		return service;
	}
	public void setService(PersonService service) {
		this.service = service;
	}
	
	public String execute() throws Exception {
		this.service.save(p);
		return this.SUCCESS;
	}
	
	public void validate() {
		if(p.getName()==null||"".equals(p.getName())){
			this.addFieldError("p.name", "name is not null");
		}
	}
	
}






下面创建一个保存人员的提交页面
save.jsp

Java代码 

1.<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>   
2.<%@ taglib prefix="s" uri="/struts-tags" %>    
3.  
4.<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">    
5.<html>   
6.  <head>   
7.       
8.    <title>Save Person</title>   
9.  
10.  </head>   
11.     
12.  <body>   
13.    <s:form action="savePerson">    
14.        <s:textfield name="p.name" label="name"></s:textfield>    
15.        <s:textfield name="p.age" label="age"></s:textfield>    
16.        <s:submit></s:submit>   
17.    </s:form>   
18.  </body>   
19.</html>  
Java代码 
1.<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>   
2.<%@ taglib prefix="s" uri="/struts-tags" %>   
3.  
4.<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">   
5.<html>   
6.  <head>   
7.       
8.    <title>Save Person</title>   
9.  
10.  </head>   
11.     
12.  <body>   
13.    <s:form action="savePerson">   
14.        <s:textfield name="p.name" label="name"></s:textfield>   
15.        <s:textfield name="p.age" label="age"></s:textfield>   
16.        <s:submit></s:submit>   
17.    </s:form>   
18.  </body>   
19.</html>  


<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    
    <title>Save Person</title>

  </head>
  
  <body>
    <s:form action="savePerson">
    	<s:textfield name="p.name" label="name"></s:textfield>
    	<s:textfield name="p.age" label="age"></s:textfield>
    	<s:submit></s:submit>
    </s:form>
  </body>
</html>




操作成功页面
save-success.jsp

Java代码 
1.<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>   
2.  
3.<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">    
4.<html>   
5.  <head>   
6.    <title>Save OK</title>   
7.  </head>   
8.     
9.  <body>   
10.    保存成功 <br>   
11.  </body>   
12.</html>  


Java代码

1.<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>   
2.  
3.<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">   
4.<html>   
5.  <head>   
6.    <title>Save OK</title>   
7.  </head>   
8.     
9.  <body>   
10.    保存成功 <br>   
11.  </body>   
12.</html>  
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>Save OK</title>
  </head>
  
  <body>
    保存成功 <br>
  </body>
</html>



接下来我们需要配置struts.xml,创建action

Xml代码 

1.<action name="savePerson" class="savePersonAction">  
2.    <result name="success" type="redirect">/save-success.jsp</result>   
3.    <result name="input">/save.jsp</result>   
4.</action>   
Xml代码 
1.<action name="savePerson" class="savePersonAction">  
2.    <result name="success" type="redirect">/save-success.jsp</result>  
3.    <result name="input">/save.jsp</result>  
4.</action>  
<action name="savePerson" class="savePersonAction">
	<result name="success" type="redirect">/save-success.jsp</result>
	<result name="input">/save.jsp</result>
</action>
1.<bean id="personDAO" class="test.s2sh.dao.impl.PersonDAOImpl" scope="singleton">  
2.    <!-- 由于该类是继承于HibernateDaoSupport,所以需要将sessionFactory注入 -->   
3.    <property name="sessionFactory" >   
4.        <ref bean="sessionFactory"/>   
5.    </property>   
6.</bean>   
7.<bean id="personService" class="test.s2sh.service.impl.PersonServiceImpl">   
8.    <property name="personDAO" ref="personDAO"></property>   
9.</bean>   
10.<bean id="savePersonAction" class="test.s2sh.action.person.SavePersonAction" scope="prototype">   
11.    <property name="service" ref="personService"></property>   
12.</bean>   
Xml代码 
1.<bean id="personDAO" class="test.<SPAN class=hilite1>s2sh</SPAN>.dao.impl.PersonDAOImpl" scope="singleton">  
2.    <!-- 由于该类是继承于HibernateDaoSupport,所以需要将sessionFactory注入 -->  
3.    <property name="sessionFactory" >  
4.        <ref bean="sessionFactory"/>  
5.    </property>  
6.</bean>  
7.<bean id="personService" class="test.<SPAN class=hilite1>s2sh</SPAN>.service.impl.PersonServiceImpl">  
8.    <property name="personDAO" ref="personDAO"></property>  
9.</bean>  
10.<bean id="savePersonAction" class="test.<SPAN class=hilite1>s2sh</SPAN>.action.person.SavePersonAction" scope="prototype">  
11.    <property name="service" ref="personService"></property>  
12.</bean>  
<bean id="personDAO" class="test.s2sh.dao.impl.PersonDAOImpl" scope="singleton">
	<!-- 由于该类是继承于HibernateDaoSupport,所以需要将sessionFactory注入 -->
	<property name="sessionFactory" >
		<ref bean="sessionFactory"/>
	</property>
</bean>
<bean id="personService" class="test.s2sh.service.impl.PersonServiceImpl">
	<property name="personDAO" ref="personDAO"></property>
</bean>
<bean id="savePersonAction" class="test.s2sh.action.person.SavePersonAction" scope="prototype">
	<property name="service" ref="personService"></property>
</bean>




由于现在的action的创建已经由spring所接管,所以这里class里面使用的是别名,该别名与applicationContext.xml中的id对应.

接下来我们需要配置applicationContext的ioc。

Xml代码 



这里说明一下spring中的单例与设计模式中的单例不同,设计模式的单例是在jvm中只产生一个实例,而spring中的单例
是针对每个ioc容器来言,如果存在两个ioc容器,那么每个ioc容器都会生成唯一的类实例
将sessionFactory注入Dao中,这里的Dao来说是无状态的,可以设置为单例singleton。这里的action是使用spring创建的。
struts2与struts1的action有所不同,因为struts2中的action中可能存在属性,这里是Person,所以struts2的action可能是有状态的。
如果是有状态的我们就需要将scope设置成原型模式,即每次请求都新建一个action。
不然可能会出现如果表单提交的第一次出错,之后就再也提交不过去了,值就是应为使用默认的singleton,
当第一次的时候就将FieldError中加入了错误,每次都是这个action,始终带着这个错误,所以就提交不过去了。


分享到:
评论

相关推荐

    S2SH整合 S2SH整合

    S2SH整合指的是Struts2、Spring和Hibernate这三个开源框架的集成应用,它们分别是MVC(Model-View-Controller)架构中的控制层、业务层和数据持久层的优秀解决方案。在Java Web开发中,S2SH整合能提供一个强大、灵活...

    S2SH整合完美教程

    【S2SH整合完美教程】 在Java Web开发中,Struts2、Spring和Hibernate的整合是常见的技术栈,被广泛用于构建MVC架构的应用程序。S2SH整合旨在实现业务逻辑与控制层、持久化层的高效协同,提高代码的可维护性和可...

    s2sh整合所需jar包大全

    **S2sh整合所需jar包大全** 在Java Web开发领域,Struts 2、Spring 和 Hibernate(简称S2SH)是一种常见的集成框架,用于构建高效、可维护的企业级应用程序。这个压缩包“s2sh整合所需jar包大全”提供了一整套支持...

    s2sh整合实例

    **S2SH整合详解** S2SH,全称为Struts2、Spring和Hibernate的整合,是Java Web开发中一种常见的框架组合,用于构建高效、可维护的Web应用程序。这三个框架分别负责不同的职责:Struts2作为MVC(模型-视图-控制器)...

    S2SH框架整合

    #### 二、S2SH框架整合步骤 ##### 1. 建立工程项目 - 首先创建一个新的Java Web项目,例如文中提到的"MyS2SH"项目,并设置好项目的目录结构。 - ![图片说明](pic) ##### 2. 添加Spring框架 - 使用...

    S2SH整合报错

    ### S2SH整合报错分析及解决方法 #### 背景介绍 在进行S2SH(Struts+Spring+Hibernate)项目的开发过程中,开发者可能会遇到整合层面的问题,特别是当项目涉及多种框架协同工作时。本文将针对一个具体的错误信息...

    S2SH 整合 导入即可完整包

    **S2SH整合详解** S2SH,全称为Spring、Struts、Hibernate的组合,是经典的Java Web开发框架。这个框架结合了Spring的依赖注入、事务管理,Struts的MVC设计模式,以及Hibernate的对象关系映射(ORM)工具,为开发者...

    S2SH整合精华版

    ### S2SH整合精华版:Struts 2、Spring 2、Hibernate 3集成实践 #### 关键词:Struts2、Spring2、Hibernate3 本文档旨在介绍如何利用Struts 2、Spring 2 和 Hibernate 3进行系统集成开发,并提供了一套完整的实践...

    S2SH整合分析

    ### S2SH框架整合分析 #### 一、概述 S2SH框架整合是指将Struts2(Struts)、Spring和Hibernate三个技术框架进行整合的一种应用架构模式。这种整合旨在简化企业级Java应用开发过程,提高代码复用性,并增强系统的可...

    s2sh整合完全包

    【标题】"s2sh整合完全包"指的是一个包含了所有必要组件的压缩文件,用于支持基于Struts2、Spring和Hibernate(简称s2sh)的Web应用开发。这个包简化了开发过程,因为它包含了这三个框架的库文件,使得开发者无需...

    s2sh整合demo源码

    在S2SH整合中,Hibernate 3.5.6版本作为ORM(对象关系映射)工具,允许开发者通过对象模型来操作数据库,而无需编写SQL。它支持懒加载、缓存策略和复杂查询,使得数据库操作更加便捷。 **整合过程** S2SH的整合...

    s2sh整合详细jar

    本压缩包"**s2sh整合详细jar**"显然是一份包含了这三个框架核心组件的集合,旨在帮助初学者快速搭建SSH整合环境。以下是对每个框架及其整合细节的详细解释: 1. **Struts2**:Struts2是一个基于MVC设计模式的Java ...

    S2SH整合demo

    这三者结合,被称为S2SH整合,能够构建出高效、灵活且可维护的Java Web应用程序。 **Struts2框架**: Struts2是Struts1的升级版,它引入了拦截器(Interceptor)的概念,增强了动作(Action)与结果(Result)的...

    使用配置文件对DAO层封装具有分页功能的S2SH整合实例_好资源0分送

    ### 使用配置文件对DAO层封装具有分页功能的S2SH整合实例 #### 背景及概述 本文档旨在详细介绍如何使用配置文件的方式完成DAO层的封装,并在此基础上实现分页功能,最终达成S2SH(Struts、Spring、Hibernate)的...

    S2SH整合开发详细二

    `&lt;controller&gt;`元素配置了Spring的DelegatingRequestProcessor,使得Struts可以委托Spring来创建Action对象,这样就不需要在每个Action中显式声明类型。`&lt;plug-in&gt;`元素配置了`ContextLoaderPlugIn`插件,它用于初始...

    基于Annotation的s2sh整合配置实现分页功能

    基于Annotation的s2sh整合配置实现分页功能基于Annotation的s2sh整合配置实现分页功能基于Annotation的s2sh整合配置实现分页功能基于Annotation的s2sh整合配置实现分页功能基于Annotation的s2sh整合配置实现分页功能

    s2sh框架整合

    在S2SH整合中,Spring作为中心枢纽,可以管理Struts2的Action实例,实现依赖注入,同时也可以配置Hibernate的数据源和SessionFactory。 3. **Hibernate**:Hibernate是一个对象关系映射(ORM)框架,它简化了Java...

    完整的S2SH框架整合, 带jar包

    这个“完整的S2SH框架整合,带jar包”资源包含了这些框架的核心库,以及可能的一个实例项目,旨在帮助开发者快速搭建和理解S2SH的应用。 1. **Struts**:Struts 是一个基于MVC设计模式的Web应用框架,主要用于控制...

    s2sh整合实现增删改查源代码(带s2sh整合包)

    这个压缩包提供了实现增删改查功能的源代码,以及完整的S2SH整合包,使得开发者可以直接运行项目,无需从零开始配置环境。 **Struts2** 是一个基于MVC设计模式的Action驱动框架,它负责处理用户的请求,并通过...

    s2sh整合所需 辅助包

    s2sh整合 所需其他jar包 打包下载 spring-dao.jar mysql-connector-java-5.1.6-bin.jar commons-dbcp.jar cglib-nodep.jar

Global site tag (gtag.js) - Google Analytics