`
Reverie夜
  • 浏览: 21482 次
  • 性别: Icon_minigender_1
  • 来自: 惠州
社区版块
存档分类
最新评论

SSH案例

    博客分类:
  • JAVA
阅读更多

~Spring+Strtus2+Hibernate的整合案例~

项目结构:ლ(╹◡╹ლ)请无视过滤器、监听器以及CKEdtior等……


 

 配置文件都在WEI-INF下,web.xml和applicationContext.xml主要配置↓↓↓↓↓↓↓↓↓↓↓↓↓↓

web.xml:

 

<!-- 启动服务器时,实例化Spring容器 -->
	<context-param>
	    <param-name>contextConfigLocation</param-name>
		<!-- 指定Listener要加载的Spring配置文件 -->
	    <param-value>/WEB-INF/applicationContext.xml,classpath*:applicationContext.xml</param-value>
	</context-param>
	<!-- 启动服务器时实例化Listener对象,此时实例化Spring容器对象 -->
	<listener>
    	<!-- <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> -->
    	<listener-class>com.web.listener.CountLineListener</listener-class>
	</listener>
	<!-- 设置session超时时间 -->
	<session-config>
		<session-timeout>60</session-timeout>
	</session-config>
	<!-- 配置前端控制器 -->
	<filter>
		<filter-name>struts2</filter-name>
		<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
		<!--  <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>-->
	</filter>
	
	<filter-mapping>
		<filter-name>struts2</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
 

 

applicationContext.xml:

 

<!-- 让spring注入SessionFactory
	<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
		<property name="configLocation" value="classpath:hibernate.cfg.xml"></property>	
	</bean>		
	 -->
	 
	<bean id="userDao" class="com.dao.impl.UserDaoImpl">
		<property name="mySessionFactory" ref="mySessionFactory"></property>
	</bean>
	
	<bean id="userService" class="com.service.impl.UserServiceImpl">
		<property name="userDao" ref="userDao"></property>
	</bean>
	
	<bean id="userAction" class="com.web.action.UserAction" scope="prototype">
		<property name="userService" ref="userService" />
	</bean>
	
	<bean id="editorAction" class="com.web.action.MyEditor" scope="prototype">
		<property name="userService" ref="userService" />
	</bean>
	
	<!-- 数据源->连接数据库 -->
	<bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
		<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
		<property name="url" value="jdbc:mysql://localhost/test"/>
		<property name="username" value="root"/>
		<property name="password" value="root"/>
	</bean>
	
	<bean id="mySessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
		<property name="dataSource" ref="myDataSource"/>
		<property name="mappingResources">
			<list>
				<value>com/entity/User.hbm.xml</value>
			</list>
		</property>
		<property name="hibernateProperties">
			<!-- 
			<value>hibernate.dialect=org.hibernate.dialect.MySQLDialect</value>
			 -->
			<props>
				<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
				<prop key="hibernate.show_sql">true</prop>
				<prop key="hibernate.format_sql">true</prop>
			</props>
		</property>
	</bean>
	
	<!-- 事物管理 -->
	<bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
		<property name="sessionFactory" ref="mySessionFactory"></property>
	</bean>
	<!-- 配置事物通知 
		下面是Spring中Propagation类的事务属性详解: 
		REQUIRED:支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。 
		SUPPORTS:支持当前事务,如果当前没有事务,就以非事务方式执行。 
		MANDATORY:支持当前事务,如果当前没有事务,就抛出异常。 
		REQUIRES_NEW:新建事务,如果当前存在事务,把当前事务挂起。 
		NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。 
		NEVER:以非事务方式执行,如果当前存在事务,则抛出异常。 
		NESTED:支持当前事务,如果当前事务存在,则执行一个嵌套事务,如果当前没有事务,就新建一个事务。 -->
	<tx:advice id="txAdvice" transaction-manager="txManager">
		<tx:attributes>
			<tx:method name="add*" propagation="REQUIRED"></tx:method>
			<tx:method name="del*" propagation="REQUIRED"></tx:method>
			<tx:method name="modi*" propagation="REQUIRED"></tx:method>
			<tx:method name="*" propagation="SUPPORTS" read-only="true"/>
		</tx:attributes>
	</tx:advice>
	
	<aop:config>
		<aop:pointcut id="serviceServiceMethods" expression="execution(* com.service.impl.*.*(..))"/>
		<aop:advisor advice-ref="txAdvice" pointcut-ref="serviceServiceMethods"/>
	</aop:config>

 

然后编写数据访问层、业务层、实体类(仅用查询做测试_(:з」∠)_)

IUserDao.java:

 

package com.dao;

……
public interface IUserDao {
	/**
	 * 查询
	 * @param user
	 * @param pageSize
	 * @param page
	 * @return
	 * @throws Exception
	 */
	public List<User> userFind(User user, int pageSize, int page) throws Exception;
	
}
 
UserDaoImpl.java:

 

 

package com.dao.impl;

……
public class UserDaoImpl extends HibernateDaoSupport implements IUserDao {
	
	private Logger log = Logger.getLogger(UserDaoImpl.class);
//	private HibernateTemplate ht; //不继承HibernateDaoSupport
	
//	public void setMySessionFactory(SessionFactory mySessionFactory) {
//		ht = new HibernateTemplate(mySessionFactory);
//	}
	
//	private SessionFactory sessionFactory;	
//	
//	public SessionFactory getSessionFactory() {
//		return sessionFactory;
//	}
	
	public void setMySessionFactory(SessionFactory mySessionFactory) {
		System.out.println("ლ(╹◡╹ლ)");
		super.setSessionFactory(mySessionFactory);
	}

	public List<User> userFind(User u, final int pageSize, final int page) {
		System.out.println("find 始め~");
		try {
			List<User> list = super.getHibernateTemplate().execute(new HibernateCallback<List<User>>() {
				public List<User> doInHibernate(Session session) throws HibernateException, SQLException {
					String sql = "from User";
//					List<Object> params = new ArrayList<Object>();
					Query query = session.createQuery(sql);
//					query.setParameter(1, "");
					query.setFirstResult((page - 1) * pageSize);
					query.setMaxResults(pageSize);
					return query.list();
				}
			});
			
			if(list.isEmpty())return null;
			return list;
			
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
		
	}
	
}
 

 

User.java:
package com.entity;

public class User {
	private Integer id;	
	private String username;	
	private String password;
	private String editor;
	……get、set……
}
 
User.hbm.xml:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="com.entity"  >
	<class name="User" table="t_user" lazy="false">
		<id name="id" column="USER_ID">
			<generator class="native"></generator>
		</id>
		<property name="username" column="U_USERNAME" length="20" ></property>
		<property name="password" column="U_PASSWORD" length="20" ></property>
		<property name="editor" column="U_EDITOR" ></property>
	</class>	
</hibernate-mapping>
 
IUserService.java:
package com.service;

import java.io.File;
import java.util.List;

import com.entity.User;

public interface IUserService {
	public void add(User u) throws Exception;
	public void del(User u) throws Exception;
	public void modi(User u) throws Exception;
	public List<User> find(User user, int pageSize, int page) throws Exception;
	public int getTotalPage(User user, int pageSize) throws Exception;
	public void upLoad(File file, String fileName) throws Exception;
	public void delUpLoad(String fileName) throws Exception;
}
 
UserServiceImpl.java:
package com.service.impl;

import java.io.File;
import java.util.List;

import com.dao.IUserDao;
import com.entity.User;
import com.service.IUserService;

public class UserServiceImpl implements IUserService {
	
	private IUserDao userDao;	
	
	public UserServiceImpl() {
		super();
	}
	public IUserDao getUserDao() {
		return userDao;
	}
	public void setUserDao(IUserDao userDao) {
		this.userDao = userDao;
	}
	public List<User> find(User user, final int pageSize, final int page) throws Exception {
		return userDao.userFind(user, pageSize, page);
	}
}
 
页面请求处理什么的,strut2就不介绍了,写个测试类( ̄_, ̄ ),需要注意的是applicationContext.xml的路径√
public static void main(String[] args) throws Exception {
		
//		ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
		//WEB-INF下的路径
		BeanFactory ac = new FileSystemXmlApplicationContext("WebRoot/WEB-INF/applicationContext.xml");
		IUserDao userDao = (IUserDao)ac.getBean("userDao");
		
		for(User u : userDao.userFind(null, 5, 1)){
			System.out.println("→_→ " + u.getUsername() + "\t" + u.getPassword());
		}
	}
 如果:

 
 
  • 大小: 26.9 KB
  • 大小: 11.2 KB
  • 大小: 20.6 KB
分享到:
评论

相关推荐

    SSH案例和所有jar

    在这个SSH案例中,包含了所有lib目录下的jar包,这意味着我们可以深入研究这三个框架的集成与工作原理。 首先,Spring框架是核心的依赖注入(DI)和面向切面编程(AOP)容器。它负责管理应用程序的组件,提供事务...

    maven整合ssh案例

    Maven整合SSH案例 ************************************************************************************* 注意:运行前请配置Maven环境,和修改config.properties中数据库名称用户和密码,并且修改Tuser中的...

    ssh 案例下载

    在"ssh案例下载"中,我们看到的是一个基于这些框架开发的管理信息系统。 标题"ssh案例下载"表明这是一个实际应用了SSH框架的项目实例,可能是为了教学、学习或者参考。这样的案例通常包含完整的代码结构,可以帮助...

    SSH案例(增删改查)

    这个压缩包中的"SSH案例(增删改查)"显然是一个教学或实践项目,旨在帮助初学者理解如何使用SSH框架进行基本的数据操作:增加、删除、修改和查询。 首先,Struts作为MVC框架的核心,负责处理HTTP请求并调度控制...

    SSH案例-最基础的ssh框架使用案例

    SSH框架,全称为Struts2、...通过这个"SSH案例-最基础的ssh框架使用案例",你可以掌握SSH框架的基础使用,为后续更复杂的企业级项目开发打下坚实的基础。在实践中不断学习和优化,将使你对SSH框架的理解更加深入。

    ssh案例

    ssh案例

    SSH案例--留言板

    在这个SSH案例——“留言板”中,我们将深入探讨这三个框架如何协同工作来实现一个简单但功能齐全的在线交流平台。 首先,Struts2作为MVC(Model-View-Controller)框架,负责处理HTTP请求,执行业务逻辑,并将结果...

    SSH完整资源案例

    "UserRegistration"可能是这个SSH案例中的一个关键模块,可能涉及到用户注册的功能。在这个模块中,Struts2可能会定义一个用户注册的动作类,接收并处理前端提交的注册表单数据。Spring会管理这些动作类的生命周期,...

    SSH案例(分页)

    在这个SSH案例中,我们主要关注如何利用这三大框架实现分页功能。 首先,Struts是MVC(模型-视图-控制器)架构的一个实现,它负责处理HTTP请求,调度业务逻辑,并将结果呈现给用户。在分页场景下,Struts通常会接收...

    JBPM4.4SSH案例,有jar包

    【JBPM4.4 SSH案例】是一个基于Java技术栈的业务流程管理(BPM)示例项目,结合了Struts2、Spring和Hibernate这三大流行框架。JBPM4.4是JBoss公司提供的一个开源BPM平台,它允许开发者设计、执行和管理业务流程。在...

    SSH案例实现

    这个“SSH案例实现”显然包含了使用这三个框架协同工作的实例代码,特别是提到了“含拦截器”,这意味着我们将深入探讨SSH架构中的拦截器机制。 首先,Spring是这个组合中的核心,它提供了一个统一的依赖注入容器,...

    ssh案例源代码(spring+struts+hibernate)

    在MyEclipse下部署这个SSH案例,你需要先配置Tomcat服务器,然后导入项目并设置相关的运行配置。Tomcat是一个流行的开源Servlet容器,可以运行Java Web应用。一旦配置完成,你可以启动Tomcat,通过浏览器访问应用,...

    别人ssh案例

    标题中的“别人ssh案例”可能是指分享或学习他人如何使用SSH(Secure Shell)进行远程连接、管理服务器或自动化任务的实例。SSH是一种网络协议,用于安全地在不同系统之间进行命令行交互,常用于运维工作。现在我们...

    SSH完整案例

    这里提到的"SSH完整案例"很可能是提供了一个使用这三个框架的实际项目示例。 1. **Spring框架**:Spring是Java企业级应用的核心框架,它提供了依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-...

    SSH小案例代码

    在SSH案例中,Spring可能负责配置和管理应用程序的bean,包括数据库连接池、业务逻辑组件和服务接口等。 Struts作为MVC(模型-视图-控制器)框架,主要处理HTTP请求,将用户界面与业务逻辑分离。在这个小案例中,...

    ssh案例(登录动态生成菜单)

    本案例将详细介绍如何利用SSH框架实现登录并动态生成菜单的功能。 首先,Spring作为整体的依赖注入(DI)容器,管理着应用程序中的对象和组件。在SSH项目中,Spring负责配置和管理Bean,包括Struts2的动作类、...

    SSH整合的一个案例

    SSH整合在IT行业中通常指的是Spring、Struts和Hibernate这三个开源框架的集成应用。Spring作为核心容器,负责管理对象(依赖注入DI)和事务处理;Struts则是MVC(Model-View-Controller)设计模式的实现,处理用户...

    MyEclipse6.0.1整合SSH案例

    本案例是基于MyEclipse6.0.1版本的SSH项目,旨在提供一个基础的、易于理解的应用实例。 首先,让我们详细了解一下SSH框架的各个组成部分: 1. **Struts**:这是一个开源的MVC框架,负责处理HTTP请求,管理视图和...

    SSH整合经典实例

    SSH整合经典实例主要涉及到的是Java开发中的三大框架:Spring、Struts和Hibernate的集成应用,这些框架在J2EE体系中被广泛使用,为开发者提供了高效、便捷的开发环境。SSH整合是Java企业级开发中一种常见的解决方案...

Global site tag (gtag.js) - Google Analytics