`

SSH全注解-annotation详细配置.

    博客分类:
  • SSH
 
阅读更多
SSH全注解-annotation详细配置 http://www.iteye.com/topic/816574
使用 Spring 2.5 注释驱动的 IoC 功能 https://www.ibm.com/developerworks/cn/java/j-lo-spring25-ioc/
只是参考.

先根据http://panyongzheng.iteye.com/blog/1103591配置好无注解,然后在根据下面的设定来实现全注解。当然,你可以只直接Spring和Hibernate,Struts.xml的东西依然保存。这个看你喜欢。

@Results也可以用于整个Action注解,跟在@ParentPackage("struts-default") 注解的后面,那么这个@Result就相对应整个类。

1.只注解Sprint & Hibernate的内容。
2.Struts,Spring,Hibernate全部注解。
3.使用通配符配置result。



1.实现Spring & Hibernate注解(这里不针对Struts使用注解):
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
	  <display-name></display-name>	
	  <context-param>  
          <param-name>contextConfigLocation</param-name>  
          <param-value>/WEB-INF/classes/applicationContext.xml</param-value>  
      </context-param>  
  
      <listener>  
          <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
      </listener>
    
    
	  <filter>
	  	<filter-name>struts2</filter-name>
	  	<filter-class>
	  		org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
	  	</filter-class>
	  </filter>
	  <filter-mapping>
	  	<filter-name>struts2</filter-name>
	  	<url-pattern>/*</url-pattern>
	  </filter-mapping>
	  
	 
	  <welcome-file-list>
	    <welcome-file>login.jsp</welcome-file>
	    <welcome-file>index.jsp</welcome-file>
	  </welcome-file-list> 
</web-app>



struts.xml,class定义的Action,应该跟Spring的注解@Controller("LoginAction")对应。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
	<package name="struts2" extends="struts-default" namespace="/">
		<action name="login" class="LoginAction">
			<result>/index.jsp</result>
			<result name="input">/login.jsp</result>
		</action>
	</package>

</struts>
   


applicationContext.xml
<?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:tx="http://www.springframework.org/schema/tx"  
	xmlns:aop="http://www.springframework.org/schema/aop"  
	xmlns:context="http://www.springframework.org/schema/context" 
	xsi:schemaLocation="
		http://www.springframework.org/schema/beans 
		http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
		http://www.springframework.org/schema/aop 
		http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
  		http://www.springframework.org/schema/context 
		http://www.springframework.org/schema/context/spring-context-3.0.xsd 
  		http://www.springframework.org/schema/tx 
		http://www.springframework.org/schema/tx/spring-tx-3.0.xsd 
		">

	<aop:aspectj-autoproxy proxy-target-class="true"/>  
	<context:annotation-config />
	<context:component-scan base-package="com" />
	<tx:annotation-driven transaction-manager="transactionManager" />	
	
	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
		<property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver">
		</property>
		<property name="url"
			value="jdbc:sqlserver://localhost:1433;databaseName=CITYU_DEV_TEST">
		</property>
		<property name="username" value="sa"></property>
		<property name="password" value="asl12345"></property>
	</bean>
	<bean id="sessionFactory"
		class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"
		p:dataSource-ref="dataSource" p:packagesToScan="com.pojo"
		>
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">
					org.hibernate.dialect.SQLServerDialect
				</prop>
			</props>
		</property>
	</bean>

	<bean id="transactionManager"  
        class="org.springframework.orm.hibernate3.HibernateTransactionManager">  
        <property name="sessionFactory" ref="sessionFactory" />  
    </bean>
</beans>


DAO:
package com.dao.impl;

import java.util.List;

import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import org.springframework.stereotype.Repository;

import com.dao.IDAO_TEST_TABLE;
import com.pojo.TestTable;

@Repository("DAO_TEST_TABLE")
public class DAO_TEST_TABLE extends HibernateDaoSupport implements IDAO_TEST_TABLE {
	
	/* (non-Javadoc)
	 * @see com.dao.impl.IDAO_TEST_TABLE#list()
	 */
	@Autowired
	public void setSessionFactoryOverride(SessionFactory sessionFactory){
		super.setSessionFactory(sessionFactory);
	}
	
	
	@Override
	public List<TestTable> list(){
		return getHibernateTemplate().find("from TestTable order by id.userName");
	}
	
	/* (non-Javadoc)
	 * @see com.dao.impl.IDAO_TEST_TABLE#save(com.pojo.TestTable)
	 */
	@Override
	public void save(TestTable t){
		getHibernateTemplate().save(t);
	}

}


Service:
package com.service.impl;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import com.dao.IDAO_TEST_TABLE;
import com.pojo.TestTable;
import com.service.ITestTableService;

@Service("TestTableService")
@Transactional
public class TestTableService implements ITestTableService {
	@Resource(name="DAO_TEST_TABLE")
	public IDAO_TEST_TABLE dao;
	/* (non-Javadoc)
	 * @see com.service.impl.ITestTableService#list()
	 */
	@Override
	@Transactional(propagation=Propagation.REQUIRED, readOnly=true)
	public List<TestTable> list(){
		return dao.list();
	}
	/* (non-Javadoc)
	 * @see com.service.impl.ITestTableService#save(com.pojo.TestTable)
	 */
	@Override
	@Transactional(propagation=Propagation.REQUIRED)
	public void save(TestTable t){

	}
	public IDAO_TEST_TABLE getDao() {
		return dao;
	}
	public void setDao(IDAO_TEST_TABLE dao) {
		this.dao = dao;
	}
	
	
}


Action:
package com.action;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Controller;

import com.opensymphony.xwork2.ActionSupport;
import com.service.impl.TestTableService;

@Controller("LoginAction")
public class LoginAction extends ActionSupport {

	/**
	 * 
	 */
	private static final long serialVersionUID = -6434128483294080524L;
	@Resource(name="TestTableService")
	public TestTableService service;
	private String userName;
	private String userPassword;
	
	
	@Override
	public String execute() throws Exception {
		
		System.out.println("Call from action.");
		List list = service.list();
		System.out.println(list.size());
		return super.SUCCESS;
	};
	
	@Override
	public void validate() {
		System.out.println(getText("test.i18n"));
	};
	
	
	
	
	
	
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public String getUserPassword() {
		return userPassword;
	}
	public void setUserPassword(String userPassword) {
		this.userPassword = userPassword;
	}

	public TestTableService getService() {
		return service;
	}

	public void setService(TestTableService service) {
		this.service = service;
	}

}




2.Struts一并使用注解:
修改web.xml
<filter>
	  	<filter-name>struts2</filter-name>
	  	<filter-class>
	  		org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
	  	</filter-class>
	  	<init-param>  
        	<param-name>actionPackages</param-name>  
        	<param-value>com.action,com.actionother</param-value>  
       </init-param> 
	  </filter>
	  <filter-mapping>
	  	<filter-name>struts2</filter-name>
	  	<url-pattern>/*</url-pattern>
	  </filter-mapping>


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


Action.java增加一些注解:
package com.action;

import java.util.List;

import javax.annotation.Resource;

import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;
import org.springframework.stereotype.Controller;

import com.opensymphony.xwork2.ActionSupport;
import com.service.impl.TestTableService;

@Controller("LoginAction")
@Namespace("/")
@ParentPackage("struts-default")
public class LoginAction extends ActionSupport {

	/**
	 * 
	 */
	private static final long serialVersionUID = -6434128483294080524L;
	@Resource(name="TestTableService")
	public TestTableService service;
	private String userName;
	private String userPassword;
	
	
	@Override
	@Action(value="/login",
		results={
			@Result(name="success",location="/index.jsp"),
			@Result(name="input",location="/login.jsp")
			}
	)
	public String execute() throws Exception {
		
		System.out.println("Call from action.");
		List list = service.list();
		System.out.println(list.size());
		return super.SUCCESS;
	};
	
	@Override
	public void validate() {
		System.out.println(getText("test.i18n"));
	};
	
	
	
	
	
	
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public String getUserPassword() {
		return userPassword;
	}
	public void setUserPassword(String userPassword) {
		this.userPassword = userPassword;
	}

	public TestTableService getService() {
		return service;
	}

	public void setService(TestTableService service) {
		this.service = service;
	}
}


或者换一种配置:
struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
	<package name="struts2" extends="struts-default" namespace="/">
	</package>
</struts> 
 


Action.java
@Controller("LoginAction")/*这里是可以省略的*/
@ParentPackage("struts2")
/*
   @Result可以在这里配置。
*/
public class LoginAction extends ActionSupport {
      ......
      ......
}



3.使用通配符配置Result:
@Override
	@Action(value="/*PageAction"
		,results={
				@Result(name="success",location="/{1}.jsp")
			}
	)
	public String execute() throws Exception {
		// TODO Auto-generated method stub
		//return super.execute();
		System.out.println("@@ Call-->PageAction");
		return "success";
	}

调用Aciton的URL: indexPageAction.action





















.





分享到:
评论

相关推荐

    ssh全注解-annotation

    根据给定的信息,本文将对“SSH全注解”这一主题进行深入解析,重点探讨如何在Struts2、Hibernate和Spring框架中运用全注解方式实现无XML配置的开发模式。 ### SSH全注解概念 SSH是Struts2、Spring和Hibernate三个...

    SSH2-Annotation.rar_annotation ssh2_ssh2_ssh2 annotation

    在这个项目中,SSH2被进一步优化,引入了注解(Annotation)的方式,使得配置过程更为简洁,提高了开发效率。下面将详细介绍这个项目的核心知识点。 1. **Spring框架**:Spring是Java应用开发的核心框架,提供依赖...

    SSH全注解环境搭建

    本文将详细介绍如何搭建一个基于全注解配置的SSH环境。 #### 二、准备工作 1. **创建Web项目并添加SSH支持**: - 使用IDE(如Eclipse或IntelliJ IDEA)新建一个Web项目。 - 在项目设置中确保选中了“Enable ...

    Annotations 所需jar包.rar

    本资源“Annotations 所需jar包.rar”显然是为了支持使用注解(Annotation)来配置SSH框架,使得代码更加简洁、可读性更强。注解是一种元数据,它提供了在源代码中嵌入信息的方式,这些信息可以被编译器或运行时环境...

    ssh整合----annotation

    本文将详细讲解使用注解方式进行SSH整合的步骤。 首先,我们需要准备一个开发环境,这里选择了Myeclipse6.5作为IDE,搭配JDK1.6和Tomcat6.0作为运行环境。SSH整合中的Struts2版本为2.1.8,Spring版本为2.5,...

    ssh(struts2.2.1+_hibernate3.6+spring3.0.5)整合配置

    在使用Hibernate时,现在推荐使用Annotation配置,而不是传统的XML配置。例如,你可以直接在实体类上使用`@Entity`、`@Table`等注解,而不是通过`AnnotationConfiguration`创建SessionFactory。 总的来说,SSH整合...

    SSH笔记-annotation配置注入关系1

    在`SSHnote_Spring_2_Annotation`压缩包文件中,你可能找到了进一步的示例和详细解释,包括如何配置Spring以启用注解处理,以及如何利用注解进行更复杂的依赖管理和配置。这些资料将帮助你更好地理解Spring 4.x中...

    SSH全注解开发

    在现代的开发环境中,注解(Annotation)的应用使得代码更加简洁、易读,SSH框架也支持全注解开发,大大简化了配置文件的工作量。本文将深入探讨SSH框架中各组件的注解使用及其背后的原理。 1. **Struts2注解** - ...

    spring_MVC源码

    弃用了struts,用spring mvc框架做了几个项目,感觉都不错,而且使用了注解方式,可以省掉一大堆配置文件。本文主要介绍使用注解方式配置的spring mvc,之前写的spring3.0 mvc和rest小例子没有介绍到数据层的内容,...

    ssh2+oracle 全注解 annotation lib包

    总的来说,这个"ssh2+oracle 全注解 annotation lib包"提供了一套完整的解决方案,让开发者能够安全地远程管理服务器,并且高效地操作Oracle数据库,同时利用Java的注解技术减少了手动配置的工作,提高了开发效率。...

    ssh注解整合

    ### SSH注解整合知识点 #### 一、概述 在软件开发领域,特别是Java Web应用开发中,SSH(Struts + Spring + Hibernate)架构是一种非常流行的轻量级开发框架组合。随着技术的发展,基于注解(Annotation)的配置...

    SSH全注解登录

    "SSH全注解登录"指的是使用SSH框架,并且利用注解(Annotation)的方式来实现登录功能。注解是一种元数据,它可以提供关于代码的额外信息,使得框架能自动配置和管理对象。例如,在Spring中,可以使用`@Autowired`...

    ssh2 Annotation注解 框架+oracle

    在"ssh2 Annotation注解 框架+oracle"的场景下,我们将深入探讨SSH2框架如何结合注解和Oracle数据库进行应用开发。 **Spring Annotation注解** Spring框架允许开发者使用注解来声明Bean、依赖注入、事务管理等。...

    SpringMVC-SSH全注解

    &lt;context:annotation-config/&gt; &lt;!-- 扫描包 --&gt; &lt;context:component-scan base-package="com.org.core"/&gt; &lt;bean id="jspViewResolver" class="org.springframework.web.servlet.view....

    基于注解Annotation的最新版SSH(Struts2.3.7+Hibernate4.1.9+Spring3.2.0)框架整合开发

    基于注解Annotation的最新版SSH(Struts2.3.7+Hibernate4.1.9+Spring3.2.0)整合开发,真正实现零配置。 最新版本Struts、Spring、Hibernate框架整合: struts-2.3.7 spring-framework-3.2.0.RELEASE hibernate-...

    ssh2全annotation配置模板

    这个“ssh2全annotation配置模板”旨在提供一个简洁且高效的整合示例,利用注解(Annotation)来减少XML配置文件的复杂性。接下来,我们将详细讨论SSH2框架中的各个组件以及它们如何通过注解进行配置。 首先,...

    Spring的Annotation配置相关讲义

    `&lt;context:annotation-config&gt;`元素会扫描容器中的所有Bean,查找并处理如`@Autowired`、`@Required`、`@PostConstruct`等注解,实现依赖注入。 `&lt;context:component-scan&gt;`元素用于指定需要扫描的包,这样Spring会...

    SPRING-FRAMEWORK-3.0.M2

    其次,Spring 3.0.0.M2引入了基于注解的配置(Annotation-based Configuration),大大简化了XML配置。例如,@Component、@Service、@Repository和@Controller等注解,可以直接在类上标注,表明类的角色,简化了配置...

Global site tag (gtag.js) - Google Analytics