`
yiyiboy2010
  • 浏览: 132527 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

SSH框架整合示例

    博客分类:
  • ssh
ssh 
阅读更多

 

本文描述的是框架SSH集成的示例,由于在这个过程中有一些小的细节容易被遗忘,特别撰写了一篇小的博文来记录这个过程,希望对自己以及后来者能够起到积极意义。

本文中使用的框架和版本号为:

struts-2.3.1.2、hibernate-3.6.10、spring-3.1.1

其下载地址分别为:

http://struts.apache.org/download.cgi#struts2312

http://sourceforge.net/projects/hibernate/files/hibernate3/3.6.10.Final/

http://www.springsource.org/download/community?project=Spring%2520Framework&version=3.1.1.RELEASE

分别将其解压,需要注意的是本例中hibernate3还需要的是log4j,spring还需要commons-loging、commons-dbcp和commons-pool,在这里就不再赘述出其下载地址了。

需要删除的重复包为:asm-commons-3.3.jar和javassist-3.11.0.GA.jar

需要使用的JAR包截图:



 接下来在jee中新建一个Dynamic Web Project,选择好运行环境:



 相关文件组织如下:



 源代码列举如下:

UserAction.java

package com.ssh.action;import com.opensymphony.xwork2.ActionSupport;
import com.ssh.pojo.User;
import com.ssh.service.UserService;

public class UserAction extends ActionSupport {

	private static final long serialVersionUID = 1L;

	private User user;
	private UserService service;
	public UserService getService() {
		return service;
	}
	public void setService(UserService service) {
		this.service = service;
	}
	public User getUser() {
		return user;
	}
	public void setUser(User user) {
		this.user = user;
	}
	
	public String execute(){
		if (service.save(user)!=null) {
			return SUCCESS;
		}else {
			return ERROR;
		}
	}
}

 

 User.java

 

package com.ssh.pojo;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name="user")
public class User {
	private Integer id;
	private String username;
	private String password;
	@Id
	@GeneratedValue
	@Column(name="hr_id")
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
}

 UserService.java

 

package com.ssh.service;

import org.hibernate.Session;
import org.hibernate.SessionFactory;

import com.ssh.pojo.User;

public class UserService {
	private SessionFactory factory = null;
	public SessionFactory getFactory() {
		return factory;
	}
	public void setFactory(SessionFactory factory) {
		this.factory = factory;
	}
	public User save(User user){
		Session session = factory.getCurrentSession();
		session.beginTransaction();
		session.save(user);
		session.getTransaction().commit();
		return user;
	}
}

 log4j.properties

 

### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

### direct messages to file hibernate.log ###
#log4j.appender.file=org.apache.log4j.FileAppender
#log4j.appender.file.File=hibernate.log
#log4j.appender.file.layout=org.apache.log4j.PatternLayout
#log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

### set log levels - for more verbose logging change 'info' to 'debug' ###

log4j.rootLogger=warn, stdout

#log4j.logger.org.hibernate=info
#log4j.logger.org.hibernate=debug

### log HQL query parser activity
#log4j.logger.org.hibernate.hql.ast.AST=debug

### log just the SQL
#log4j.logger.org.hibernate.SQL=debug

### log JDBC bind parameters ###
#log4j.logger.org.hibernate.type=info
#log4j.logger.org.hibernate.type=debug

### log schema export/update ###
log4j.logger.org.hibernate.tool.hbm2ddl=debug

### log HQL parse trees
#log4j.logger.org.hibernate.hql=debug

### log cache activity ###
#log4j.logger.org.hibernate.cache=debug

### log transaction activity
#log4j.logger.org.hibernate.transaction=debug

### log JDBC resource acquisition
#log4j.logger.org.hibernate.jdbc=debug

### enable the following line if you want to track down connection ###
### leakages when using DriverManagerConnectionProvider ###
#log4j.logger.org.hibernate.connection.DriverManagerConnectionProvider=trace

 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" />
	<package name="ssh" extends="struts-default">
		<action name="loginApp" class="userAction">
			<result name="error">/WEB-INF/content/error.jsp</result>
			<result name="success">/WEB-INF/content/success.jsp</result>
		</action>
		<action name="*">
			<result>/WEB-INF/content/{1}.jsp</result>
		</action>
	</package>
</struts>

 error.jsp

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>出错页面</title>
</head>
<body>
对不起,出错了
</body>
</html>

 register.jsp

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>注册页面</title>
</head>
<body>
欢迎注册,请在这里输入必要的注册信息:
<s:form action="loginApp" method="post">
	<s:textfield name="user.username" label="用户名"></s:textfield>
	<s:password name="user.password" label="密码"></s:password>
	<s:submit label="提交"></s:submit>
</s:form>
</body>
</html>

 success.jsp

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>成功页面</title>
</head>
<body>
成功了
</body>
</html>

 applicationContext.xml

 

<?xml version="1.0" encoding="utf-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://www.springframework.org/schema/beans"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
	http://www.springframework.org/schema/beans/spring-beans-3.1.xsd">

	<bean id="dataSource" destroy-method="close"
		class="org.apache.commons.dbcp.BasicDataSource">
		<property name="driverClassName" value="com.mysql.jdbc.Driver" />
		<property name="url" value="jdbc:mysql://localhost:9906/ssh" />
		<property name="username" value="root" />
		<property name="password" value="root" />
	</bean>
	
	<bean id="sessionFactory"
		class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
		<property name="dataSource" ref="dataSource" />
		<property name="annotatedClasses">
			<list>
				<value>com.ssh.pojo.User</value>
			</list>
		</property>
		<property name="hibernateProperties">
			<value>
				hibernate.dialect=org.hibernate.dialect.MySQLDialect
				hibernate.show_sql=true
				hibernate.hbm2ddl.auto=update
				hibernate.current_session_context_class=thread
			</value>
		</property>
	</bean>
	
	<bean id="userService" class="com.ssh.service.UserService">
		<property name="factory" ref="sessionFactory"></property>
	</bean>
	<bean id="user" class="com.ssh.pojo.User"></bean>
	<bean id="userAction" class="com.ssh.action.UserAction">
		<property name="user" ref="user"></property>
		<property name="service" ref="userService"></property>
	</bean>
</beans>

 web.xml

 

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
	id="WebApp_ID" version="3.0">

	<display-name>ssh03_demo</display-name>

	<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>index.html</welcome-file>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>
</web-app>

 然后在Tomcat7上部署该项目即可,在浏览器中输入地址:http://localhost:8080/ssh_demo/register即可进入下面的页面:



 至此,SSH框架整合完成。

相关源码和jar包放在附件中。

 

  • 大小: 58.6 KB
  • 大小: 19.4 KB
  • 大小: 19.7 KB
  • 大小: 46.4 KB
44
5
分享到:
评论
18 楼 jladjgah 2016-11-15  
建的web工程,搞不出来
17 楼 yanabel 2015-02-04  
感谢分享,今天才能下载,刚刚搭好,以后再学spring事务了
16 楼 云端月影 2014-11-14  
  
15 楼 jjm460428795 2014-09-24  
学习一下,正好需要这个
14 楼 tashanzhishi 2014-09-23  
13 楼 misterzxy 2013-12-19  
写的有点小问题,出错页面不起作用。
12 楼 break_009 2013-12-08  
很详细,不错
11 楼 LancCJ 2013-09-22  
帮到我了,十分感谢
10 楼 Mr_扛扛 2013-02-26  
学习了太感谢了      
9 楼 花藤_ 2012-12-18  
我怎么导入不进去呢
8 楼 raxliao 2012-12-15  
mark

如果能一步一步的都写出来,就更好了
7 楼 田步升 2012-12-05  
楼主太感谢你了!
6 楼 b_l_east 2012-11-13  
shiyihou 写道
看上去真的不错,晚上好好练练手

敬告大家这个现在已经过时了,无论是在版本上还是在技术组合上。

spring现在已经3了,更流行的是SpringMVC + Spring + MyBatis组合了。
5 楼 shiyihou 2012-11-06  
看上去真的不错,晚上好好练练手
4 楼 noddle0592 2012-10-24  
不错,正好需要,谢谢啦
3 楼 Tiden 2012-10-09  
经典,强烈推荐!额折腾了好久  
2 楼 宝同小虾 2012-02-20  
线看看,学习下
1 楼 b_l_east 2012-02-20  
没有结合spring的事务管理!

相关推荐

    SSH框架整合示例(Spring、Struts2、Hibernate)

    该资源为SSH框架整合示例(Spring、Struts2、Hibernate),里面包含源代码、jar包等,是直接从MyEclipse中导出的可正常运行的完整项目。其中另含完整开发笔记一份,为此项目搭建的开发过程笔记,可供读者开发练习...

    ssh框架整合参考示例

    总的来说,这个SSH框架整合示例是一个实用的学习资源,它涵盖了Web开发中的关键环节,帮助开发者建立起从客户端请求到数据库操作的完整流程认知。通过深入研究和实践,不仅可以掌握SSH框架的整合,还能提升Java Web...

    SSH框架整合完整版

    这个"SSH框架整合完整版"显然提供了一个完整的示例,可以帮助开发者理解如何将这三个框架协同工作,以构建高效的企业级应用。接下来,我们将深入探讨SSH框架整合的关键知识点。 首先,**Spring框架**是IoC...

    SSH框架整合源码简单示例

    本示例提供了一个简单易懂的SSH框架整合应用,适用于初学者学习和实践。 **Spring框架**:Spring是一个全面的后端开发框架,它提供了依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented ...

    J2EE SSH框架整合教程

    《J2EE SSH框架整合详解》 在Java企业级开发中,SSH(Struts、Spring、Hibernate)框架的整合是常见的技术实践,它能够提供强大的表现层、业务逻辑层和数据持久化层的支持。SSH框架整合的核心在于如何将这三个框架...

    SSH框架整合包3.x

    SSH框架整合包3.x是一个经典的Java Web开发框架组合,由Spring、Struts2和Hibernate三个开源框架集成。这个整合包提供了完整的示例项目和必要的配置文件,帮助开发者快速搭建基于这些框架的应用。以下是对SSH框架...

    ssh框架整合完整版,附有学习文档和登录实例

    这个"ssh框架整合完整版"包含了这三个框架的集成示例,以及相关的学习文档和一个登录实例,帮助开发者更好地理解和掌握SSH框架的使用。 1. **Struts**:Struts是一个基于MVC(Model-View-Controller)设计模式的Web...

    ssh 框架注解示例

    SSH框架,全称为Struts2、Hibernate和Spring的组合,是Java Web开发中常见的MVC架构。这个框架的集成使得开发者能够充分利用各自的优势,实现高效、灵活和可维护的项目。下面将详细介绍SSH框架中的注解及其在各层的...

    SSH框架整合简单示例

    下面将详细阐述SSH框架整合的相关知识点。 **Struts2** 是一个基于MVC设计模式的Action驱动的Web应用框架,负责处理HTTP请求,并通过Action转发到相应的业务逻辑。它提供了拦截器(Interceptor)机制,可以实现如...

    SSH框架整合实例(含jar包)

    SSH框架整合是Java Web开发中常见的一种技术组合,它包括Spring、Struts2和Hibernate这三个核心框架。这个实例提供了一个完整的SSH整合应用,适合已经对SSH有一定基础的开发者进行学习和实践。 首先,Spring框架是...

    SSH框架整合笔记

    ### SSH框架整合知识点详解 #### 一、框架的搭建与配置 SSH框架指的是Spring、Struts2和Hibernate三个开源框架的结合使用。本篇笔记主要介绍如何搭建基于Struts2的Web应用程序,并进行简单的配置。 ##### 1. 创建...

    ssh框架整合代码样例

    SSH框架整合是Java Web开发中常见的一种技术组合,主要包括Spring、Struts2和Hibernate三个开源框架。这个资源包提供了一个SSH框架整合的代码样例,适用于初学者快速掌握这三个框架的协同工作方式。 Spring框架是...

    SSH框架整合源码和文档(结合MySQL实现简单的用户登录)

    本压缩包包含SSH框架整合源码和文档(结合MySQL实现简单的用户登录),源码共四个实例,分别是以保留ssh框架自己的配置文件,不使用hibernate.cfg.xml,使用spring-struts,struts不整合到spring,注解实现等四个示例...

    ssh简单整合示例(带有数据库)

    SSH整合是Java Web开发中常见的技术栈组合,主要...通过这个简单的SSH整合示例,开发者能够了解和掌握SSH框架的基本用法,以及它们如何协同处理Web应用的请求和数据库操作。这将为后续的复杂项目开发打下坚实的基础。

Global site tag (gtag.js) - Google Analytics