`

Struts2.1.6 + Spring2.5+Hibernate3.2整合

    博客分类:
  • J2EE
阅读更多

http://www.cnblogs.com/kay/archive/2009/07/07/1518278.html

首先来看需要的jar包:

spring

在web.xml中的配置:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 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_2_5.xsd">

	<!-- Struts2 -->
	<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>
	
	<!-- OpenSession In View -->
	<filter>
		<filter-name>openSessionInView</filter-name>
		<filter-class>
			org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
		</filter-class>
	</filter>

	<filter-mapping>
		<filter-name>openSessionInView</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

	<!-- Spring配置 指定spring配置文件位置-->
	<context-param>
		<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>



	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>
</web-app>
在Struts2的配置文件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="myStruts" extends="struts-default" namespace="/">
		<!-- 使用通配符 -->
		<action name="*_*" class="{1}" method="{2}"> 
			<result name="list">/{1}/list.jsp</result>
			<result name="input">/{1}/update.jsp</result>
			<result name="reload" type="chain">{1}_list</result>
		</action>
	</package>
</struts>
需要注意的是class的名字要和Spring中管理Action的Bean的名字相同。

由于需要将Struts2的Action交给Spring去管理,我们在struts.properties配置文件中加入:

struts.objectFactory=spring

再来看看Spring的配置文件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: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-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">

	<!-- 启用自动扫描 -->
	<context:component-scan base-package="com.javaonroad"></context:component-scan>

	<!-- 事务管理 -->
	<tx:annotation-driven transaction-manager="transactionManager" />
	<bean id="transactionManager"
		class="org.springframework.orm.hibernate3.HibernateTransactionManager">
		<property name="sessionFactory" ref="sessionFactory"></property>
	</bean>

	<bean id="dataSource"
		class="com.mchange.v2.c3p0.ComboPooledDataSource">
		<property name="driverClass" value="com.mysql.jdbc.Driver" />
		<property name="jdbcUrl" value="jdbc:mysql:///struts2" />
		<property name="maxIdleTime" value="25000" />
		<property name="properties">
			<props>
				<prop key="user">root</prop>
				<prop key="password">root</prop>
				<prop key="c3p0.acquire_increment">2</prop>
				<prop key="c3p0.max_size">20</prop>
				<prop key="c3p0.min_size">1</prop>
			</props>
		</property>
	</bean>


	<!-- 定义Hibernate SessionFactory -->
	<bean id="sessionFactory"
		class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
		<!-- dataSource可以为任意的数据源 例如DBCP、C3P0 -->
		<property name="dataSource" ref="dataSource"></property>
		<!-- 映射文件路径 -->
		<property name="mappingResources">
			<value>com/javaonroad/pojo/User.hbm.xml</value>
		</property>
		<!-- 其他的Hibernate常用配置 -->
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">
					org.hibernate.dialect.MySQLDialect
				</prop>
				<prop key="hibernate.show_sql">true</prop>
			</props>
		</property>
	</bean>
</beans>

由于启用了自动扫描,所以在dao、service以及action中都要使用注解进行标记:

DAO类:

package com.javaonroad.dao;

import java.util.List;

import javax.annotation.Resource;

import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.stereotype.Repository;

import com.javaonroad.pojo.User;

@Repository
public class UserDAO {
	
	@Resource
	private SessionFactory sessionFactory;
	
	private Session getSession(){
		return sessionFactory.getCurrentSession();
	}
	
	public void save(User user)
	{
		getSession().save(user);
	}
	public void update(User user)
	{
		getSession().update(user);
	}
	public User get(int id)
	{
		return (User) getSession().get(User.class, id);
	}
	public User findUserByNameAndPwd(User user)
	{
		String hql = "from User where name = :name and pwd = :pwd";
		Query query = getSession().createQuery(hql);
		query.setString("name", user.getName());
		query.setString("pwd", user.getPwd());
		return (User) query.uniqueResult();
	}
	public void delete(int id)
	{
		getSession().delete(get(id));
	}
	@SuppressWarnings("unchecked")
	public List<User> findAll()
	{
		Criteria cri = getSession().createCriteria(User.class);
		List<User> list = cri.list();
		return list;
	}
}
Service类:
其中事务同样采用注解:
package com.javaonroad.service;

import java.util.List;

import javax.annotation.Resource;

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

import com.javaonroad.dao.UserDAO;
import com.javaonroad.pojo.User;

@Transactional
@Service
public class UserService {

	@Resource
	private UserDAO userDAO;
	
	public User login(User user)
	{
		return userDAO.findUserByNameAndPwd(user);
	}
	
	public void save(User user)
	{
		userDAO.save(user);
	}
	public void update(User user)
	{
		userDAO.update(user);
	}
	public User get(String id)
	{
		return userDAO.get(Integer.valueOf(id));
	}
	
	public void delete(String id)
	{
		userDAO.delete(Integer.valueOf(id));
	}
	public List<User> findAll()
	{
		return userDAO.findAll();
	}
}

最后是我们的Action类,由于Struts2的Action的线程安全的所以在注解的时候需要改变Spring默认的Scope属性:

package com.javaonroad.web;

import java.util.List;

import javax.annotation.Resource;
import javax.servlet.http.HttpSession;

import org.apache.struts2.ServletActionContext;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

import com.javaonroad.pojo.User;
import com.javaonroad.service.UserService;
import com.opensymphony.xwork2.ActionSupport;

@Controller("user")
@Scope("prototype")
public class UserAction extends ActionSupport {

	@Resource
	private UserService userService;
	
	private User user;
	
	private String id;
	private List<User> list;
	/**
	 * 
	 */
	private static final long serialVersionUID = 5638432269244791021L;
	
	
	/*业务方法*/
	public String login()throws Exception
	{
		User currUser = userService.login(user);
		if(currUser != null)
		{
			HttpSession session = ServletActionContext.getRequest().getSession();
			session.setAttribute("currUser", currUser);
			return list();
		}
		else
		{
			return "input";
		}
	}
	public String list()throws Exception
	{
		list = userService.findAll();
		return "list";
	}
	public String add()throws Exception
	{
		userService.save(user);
		return "reload";//list();
	}
	public String delete()throws Exception
	{
		userService.delete(id);
		return "reload";
	}
	public String update()throws Exception
	{
		userService.update(user);
		return "reload";
	}
	public String toUpdate()throws Exception
	{
		user = userService.get(id);
		return "input";
	}
	/*geterAndSeter*/
	public User getUser() {
		return user;
	}

	public void setUser(User user) {
		this.user = user;
	}

	public List<User> getList() {
		return list;
	}

	public void setList(List<User> list) {
		this.list = list;
	}
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
}
列表页面list.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>列表页面</title>
  </head>
  
  <body>
  	<a href="<%=basePath %>/user/add.jsp">添加用户</a>
    <table border="1" width="60%">
    	<tr>
    		<td>用户名</td>
    		<td>是否可用</td>
    		<td>操作</td>
    	</tr>
    	<c:forEach items="${list}" var="u">
    	<tr>
    		<td>${u.name }</td>
    		<td>${u.enable }</td>
    		<td>
    			<a href="<%=basePath %>/user_delete.action?id=${u.id }">删除</a>
    			<a href="<%=basePath %>/user_toUpdate.action?id=${u.id }">修改</a>
    		</td>
    	</tr>
    	</c:forEach>
    </table>
  </body>
</html>
结束
分享到:
评论

相关推荐

    struts2.1.6 +spring2.5 +hibernate3.2 整合开发的 jar包 _ 02部分

    struts2.1.6 +spring2.5 +hibernate3.2 整合开发的 jar包 _ 01部分 struts2.1.6 +spring2.5 +hibernate3.2 整合开发的 jar包 _ 02部分 大家只要将这两个部分的包全部下载下来,就可以搭建struts2 + spring + ...

    struts2.1.6 +spring2.5 +hibernate3.2整合开发的 jar包 _ 01部分

    struts2.1.6 +spring2.5 +hibernate3.2 整合开发的 jar包 _ 01部分 struts2.1.6 +spring2.5 +hibernate3.2 整合开发的 jar包 _ 02部分 大家只要将这两个部分的包全部下载下来,就可以搭建struts2 + spring + ...

    struts2.1.6+spring2.5=hibernate3.2整合实例

    struts2.1.6+spring2.5+hibernate3.2整合实例,绝对原创,绝对运行正常,jar文件的截图和sql都有 由于自己学习时耗了很多时间所以要分,请大家理解,有什么问题可以和我联系http://blog.163.com/lzy_eagle

    Struts1.2+Struts2.1.6+spring 2.0+hibernate3.1+Ibatis2.3(第二部分)

    Struts1.2+Struts2.1.6+spring 2.0+hibernate3.1+Ibatis2.3 SSH

    Struts2.1.6+Struts2.0+Hibernate3.1整合示例

    目的:给学习SSH(Struts2.1.6+Spring2.0+Hibernate3.1)整合的学生。从使用角度看,Struts2的SSH事例比Struts1.x的SSH简单。至于声明式事务部分,你可以参见另外一个资源“Spring 2.0 + Struts 1.2 + Hibernate 3.2 +...

    struts2.1.6+spring2.0.7+hibernate3.2整合例子

    在"struts2.1.6+spring2.0.7+hibernate3.2整合例子"中,开发者将这三个框架集成在一个项目中,以便充分利用它们的功能。Struts2作为前端控制器,负责接收用户的请求并分发到相应的业务逻辑层。Spring作为核心容器,...

    Struts1.2+Struts2.1.6+spring 2.0+hibernate3.1+Ibatis2.3(第一部分)

    Struts1.2+Struts2.1.6+spring 2.0+hibernate3.1+Ibatis2.3内个框架的集成

    Struts2.1.6+Spring2.5.6+Hibernate3.3.1框架整合开发

    Struts2.1.6+Spring2.5.6+Hibernate3.3.1框架整合开发 http://www.cnitblog.com/intrl/archive/2009/04/13/56322.aspx 这篇文章的源码由于他的上传的空间用户可能下载失败,作者相当牛而且具有奉献精神

    Struts2.1.6+Spring2.5.6+Hibernate3.3.2整合包

    Struts2.1.6、Spring2.5.6和Hibernate3.3.2是三个在Java Web开发中广泛使用的开源框架,它们的整合为开发者提供了强大的后端支撑。这个整合包是为了解决企业在构建基于Java的Web应用程序时面临的复杂性问题,通过将...

    解决struts2.1.6+spring+hibernate 中文乱码

    ### 解决Struts2.1.6 + Spring + Hibernate 中文乱码问题 在Web开发过程中,特别是使用Java EE框架时,字符编码问题一直是开发者关注的重点之一。对于使用Struts2.1.6、Spring以及Hibernate这三个框架组合的项目而...

    Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解

    在深入探讨Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解的实现细节之前,我们先回顾一下这三个框架的基本概念及其在JavaEE企业级开发中的作用。 ### Struts2框架 Struts2是一个开源的Web应用框架,它遵循MVC...

    struts2.1.6+spring2.0+hibernate3.2常用配置包

    另外三大框架的添加顺序也需要注意下,我的添加顺序是 struts2.1.6、spring2.0、hibernate3.2 spring版本差异(包方面)没有研究过,大致雷同,也应该保持版本一致,即在同一个稳定发行包中下载的包。 以下包后面跟...

    struts2.1.6+spring2.5+hibernate3.3最新配置更新

    Struts2.1.6、Spring2.5和Hibernate3.3是三个经典的Java开源框架,它们在2009年左右是企业级Java应用开发的主流选择。这个配置组合通常被称为SSH(Struts2、Spring、Hibernate)三位一体,用于构建高效、灵活且可...

    Struts2.1.6+Spring2.5.6+Hibernate3.3.1整合

    ### Struts2.1.6 + Spring2.5.6 + Hibernate3.3.1 整合 在本文中,我们将详细介绍如何将Struts2.1.6、Spring2.5.6以及Hibernate3.3.1进行整合,并构建一个简单的MVC应用。通过这个过程,读者将了解到这三种框架的...

    Struts2.1.6+Spring2.5+Hibernate3.3的框架配置详解

    Struts2.1.6、Spring2.5和Hibernate3.3是经典的Java Web开发框架组合,被称为S2SH。这个框架整合提供了模型-视图-控制器(MVC)架构,使得开发者能够高效地构建企业级应用。下面将详细介绍这三个框架的配置步骤。 *...

    Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解(含JAR包)

    Struts2.1.6、Spring2.5.6和Hibernate3.3.1是Java Web开发中的三个重要框架,合称为SSH(Struts2、Spring、Hibernate)。这个全注解实例详解旨在帮助开发者理解如何在不使用XML配置的情况下,通过注解实现这三大框架...

    Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解

    Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解,涉及的是JavaEE开发中常见的SSH框架(Struts2、Spring、Hibernate)的整合,尤其强调了注解在开发中的应用,旨在简化配置,提高开发效率。SSH框架的组合在...

    Struts2.1.6+Spring2.0+Hibernate3.1

    根据给定文件的信息,本文将详细介绍如何配置Struts2.1.6、Spring2.0与Hibernate3.1这三个框架的整合开发环境。这是一套经典的MVC(Model-View-Controller)架构组合,适用于构建复杂的Java Web应用程序。 ### 一、...

    Struts2.1.6+Hibernate3+Spring2.5整合所需jar包

    下面将详细介绍Struts2.1.6、Hibernate3和Spring2.5整合所需的关键知识点。 1. **Struts2.1.6**:Struts2是一个基于MVC设计模式的Web应用框架,用于构建可维护性、扩展性强的Java Web应用程序。在Struts2.1.6版本中...

Global site tag (gtag.js) - Google Analytics