`

s2sh整合annotation配置

    博客分类:
  • J2EE
阅读更多

web.xml配置请参考

 

http://xiaofancn.iteye.com/admin/blogs/986469

 

applicationContext.xml(我放在了WEB-INF目录下了)

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
                        http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
                        http://www.springframework.org/schema/context
                        http://www.springframework.org/schema/context/spring-context-3.0.xsd
                        http://www.springframework.org/schema/aop   
                         http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
                        http://www.springframework.org/schema/tx    
                         http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">

	<!-- annotation on -->
	<context:annotation-config />
	<context:component-scan base-package="org.snailteam"/>

	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
		<property name="driverClassName" value="com.mysql.jdbc.Driver">
		</property>
		<property name="url"
			value="jdbc:mysql://localhost:3306/db?useUnicode=true&amp;amp;amp;characterEncoding=UTF-8">
		</property>
		<property name="username" value="root"></property>
		<property name="password" value="123456"></property>
	</bean>
	<bean id="sessionFactory"
		class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
		<property name="dataSource">
			<ref bean="dataSource" />
		</property>
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">
					org.hibernate.dialect.MySQLDialect
				</prop>
			</props>
		</property>
		<property name="annotatedClasses">
			<list>
				<value>model.Product</value>
			</list>
		</property>
	</bean>
	<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
		<property name="sessionFactory">
			<ref bean="sessionFactory" />
		</property>
	</bean>
	<bean id="transactionManager"
		class="org.springframework.orm.hibernate3.HibernateTransactionManager">
		<property name="sessionFactory">
			<ref local="sessionFactory" />
		</property>
	</bean>
	<tx:advice id="txAdvice" transaction-manager="transactionManager">
		<tx:attributes>
			<tx:method name="add*" propagation="REQUIRED" />
			<tx:method name="*" read-only="false" />
		</tx:attributes>
	</tx:advice>
	<aop:config>
		<aop:pointcut id="allManagerMethod"
			expression="execution(* org.snailteam.service.*.*(..))" />
		<aop:advisor advice-ref="txAdvice" pointcut-ref="allManagerMethod" />
	</aop:config>

</beans>

 

struts.xml配置可就清爽多了

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
	<constant name="struts.devMode" value="true" />
	<constant name="struts.i18n.encoding" value="UTF-8" />
	<constant name="struts.ognl.allowStaticMethodAccess" value="true" />
	<constant name="struts.objectFactory" value="spring" />
	<constant name="struts.multipart.saveDir" value="d://" />
	<constant name="struts.action.extension" value="do,action" />
	<!-- 全局变量 -->
	<package name="global" namespace="/" extends="struts-default">
		<global-results>
			<result name="error">/WEB-INF/pages/error.jsp</result>
			<result name="index">/index.jsp</result>
			<result name="adminLogin">/admin/login.jsp</result>
		</global-results>
		<global-exception-mappings>
			<exception-mapping result="error" exception="Exception"></exception-mapping>
		</global-exception-mappings>
	</package>

</struts>

 

持久层类ProductDaoImpl.java

package org.snailteam.dao;

import javax.annotation.Resource;
import model.Product;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.stereotype.Repository;

@Repository("productDao")
public class ProductDaoImpl implements ProductDao {
	private HibernateTemplate hibernateTemplate;

	@Resource(name = "hibernateTemplate")
	public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
		this.hibernateTemplate = hibernateTemplate;
	}

	public void save(Product p) {
		this.hibernateTemplate.save(p);

	}

}

 

业务层ProductServiceImpl.java

 

package org.snailteam.service;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.annotation.Resource;

import model.Product;

import org.snailteam.dao.ProductDao;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

@Service("productService")
public class ProductServiceImpl implements ProductService{
	private ProductDao dao;
	@Resource(name="productDao")
	public void setDao(ProductDao dao) {
		this.dao = dao;
	}
	//@Transactional(propagation=Propagation.REQUIRED,readOnly=true)
	public void add(Product p) {
		dao.save(p);
		
	}
	@PostConstruct//对象构造之后
	public void init(){
		
	}
	
	@PreDestroy//对象销毁之前
	public void destroy(){
		
	}

}

 

表现层ProductAction.java

package org.snailteam.action;

import javax.annotation.Resource;

import model.Product;

import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;
import org.snailteam.service.ProductService;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

import com.opensymphony.xwork2.ActionSupport;

@Controller("productBean")
@Scope("prototype")
@Namespace("/prod")
@ParentPackage("global")
@Results( { @Result(name = "success", location = "/index.jsp") })
public class ProductAction extends ActionSupport {

	private static final long serialVersionUID = 1L;
	private ProductService service;
	private Product prod;

	public String add() {
		service.add(prod);
		return SUCCESS;
	}

	public String execute() throws Exception {
		// TODO Auto-generated method stub
		return super.execute();
	}

	@Resource(name = "productService")
	public void setService(ProductService service) {
		this.service = service;
	}

	public Product getProd() {
		return prod;
	}

	public void setProd(Product prod) {
		this.prod = prod;
	}

}

 

测试代码

public class ProductActionTest {
	public static ProductAction action;
	@BeforeClass
	public static void setUpBeforeClass() throws Exception {
		ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
		action = (ProductAction) ac.getBean("productBean");
	}

	@Test
	public void testSave() throws Exception {
		 action.setProd(new Product("产品介绍信息"));
		 System.out.println(action.add());
	}

}
分享到:
评论

相关推荐

    s2sh整合annotation

    通过这种方式,S2SH整合Annotation可以极大地减少配置文件的体积,提高代码的可读性和维护性,同时也简化了开发流程。然而,注解并不是万能的,有时过度依赖注解可能会导致代码过于分散,不易于理解和管理。因此,在...

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

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

    s2sh_annotation.rar_S2SH annotation_s2sh_s2sh_annotation

    在本项目“s2sh_annotation.rar”中,开发者使用了注解的方式来配置这些框架,使得代码更加简洁,减少了XML配置文件的使用。 Struts2框架注解: Struts2通过Action和Result注解简化了Action类的配置。@Action注解...

    s2sh_annotation.rar_纯s2sh框架

    【标题】"s2sh_annotation.rar_纯s2sh框架" 涉及的主要知识点是Struts2、Spring和Hibernate(简称S2SH)的整合应用,以及在该框架中的注解(Annotation)使用。 【描述】提到的是一个新人为了帮助其他初学者而创建...

    S2SH整合基于annotation

    总的来说,"S2SH整合基于Annotation"意味着在开发Java Web应用时,通过这三个主流框架的协同工作,结合Annotation,可以实现高效、灵活且易于维护的代码结构。这种整合方式在大型项目中非常常见,因为它能够提高开发...

    S2SH整合例子 注解配置 JSON 泛型Dao

    【S2SH整合】指的是Struts2、Spring和Hibernate三个开源框架的集成应用。这是一个常见的Java Web开发技术栈,用于构建高效、灵活的企业级应用程序。Struts2提供了MVC架构,Spring提供了依赖注入和事务管理,...

    s2sh整合项目,Annotation注入,MySQL数据库,带Jar包

    Struts2SpingHibernate整合学习项目,实现注册功能,用Annotation注入,带jar包,引入工程就能用,用MySql实现,最适合于学习s2sh整合的朋友。千里之行,始于足下,同志们,我们一起努力吧

    基于Annotation并对DAO层封装具有分页功能的S2SH整合实例

    在这个基于Annotation并对DAO层封装具有分页功能的S2SH整合实例中,我们将探讨如何利用这些技术的特性来提高开发效率和代码可维护性。 首先,让我们深入了解一下Struts2。Struts2是基于MVC模式的开源Web应用框架,...

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

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

    s2sh框架整合学习之注解篇

    本主题“s2sh框架整合学习之注解篇”主要聚焦于如何在S2SH框架整合中利用注解进行配置。首先,Struts2允许开发者通过注解来声明Action类及其方法,比如`@Action`用于标记Action类,`@Result`定义结果页面,`@Inject`...

    S2SH小demo

    【S2SH整合开发的小demo】是一个基于Struts2、Spring和Hibernate这三大框架集成的简单示例项目。S2SH是Java Web开发中的经典组合,它们分别负责表现层、控制层和数据持久化层的功能,共同构建了一个完整的MVC(Model...

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

    ### 使用Annotation并对DAO层封装具有分页功能的S2SH整合实例 #### 一、概述与背景 随着软件开发技术的不断进步,越来越多的技术趋势正在影响着开发模式的选择。其中,注解(Annotation)作为Java SE 5引入的一项...

    s2sh框架整合jar及配置方法

    本文将详细阐述如何整合S2SH(Struts2、Spring、Hibernate)框架,并介绍如何添加jar文件以及配置相关步骤。 首先,我们需要理解SSH框架的核心组件: 1. **Struts2**:作为前端控制器,负责处理HTTP请求,提供...

    毕业设计-学生成绩管理系统(基于annontation 的s2sh整合开发的完整实例)

    "毕业设计-学生成绩管理系统(基于annontation 的s2sh整合开发的完整实例)" 这个标题表明这是一个针对学生毕业设计的项目,主要目标是构建一个学生成绩管理系统。系统的核心开发技术是基于注解(Annotation)的Struts...

    S2SH OA项目整合

    7. **开发环境**:进行S2SH整合开发通常需要Java开发工具(如Eclipse或IntelliJ IDEA)、构建工具(如Maven或Gradle)、数据库(如MySQL或Oracle)以及相关的IDE插件,以支持框架的集成和调试。 8. **测试与部署**...

    S2SH三大框架采用注释整合项目案例

    在这个**S2SH_Annotation**项目案例中,开发者可能会学习到如何通过注解将这三个框架无缝集成。首先,Spring会作为整体的调度中心,使用注解管理Struts2的Action类和Hibernate的数据访问对象(DAO)。接着,Struts2...

    S2SH快速搭建

    S2SH框架是指整合了Struts2、Spring和Hibernate三大框架的技术架构,常用于企业级应用开发中。本文将详细介绍S2SH框架的快速搭建步骤,帮助开发者快速上手并构建高效稳定的应用系统。 #### 一、新建Web项目 在开发...

    s2sh+dwr+extjs基于annoation三个项目实战

    在本项目实战中,我们将深入探讨如何利用"Spring 2.5 + Struts 2 + Hibernate (S2SH)"框架,结合Direct Web Remoting (DWR) 和ExtJS技术,来构建一个基于注解(Annotation)的高效Web应用程序。这个实战涵盖了三个...

Global site tag (gtag.js) - Google Analytics