- 浏览: 72209 次
- 性别:
- 来自: 湖南
文章分类
最新评论
-
793059909:
不错。报了个错及解决办法:java.lang.Security ...
Ext中对于多种store数据分页实现示例 -
间谍james:
PS:追加一下,楼主显示图片是通过id,没有id无法显示
图片以二进制保存到Oracle,取出并显示到页面示例 -
间谍james:
感谢楼主,但是楼主给的jsp代码是否未考虑id,index界面 ...
图片以二进制保存到Oracle,取出并显示到页面示例 -
NeverGiveUpToChange:
谢谢,挺好,问题也解决了……
JFreeChart中图表中文信息显示为乱码解决方法 -
~音乐盒~:
非常好,谢谢
图片以二进制保存到Oracle,取出并显示到页面示例
1.首先准备好整合用的jar包
Hibernate的jar包:hibernate3.jar、lib\required下的所有jar包(共6个)、lib\optional\ehche下的ehcache-1.2.3.jar、slf4j-nop-1.5.2.jar共9个包
Spring的jar包:dist\spring.jar、lib\jakarta-commons下的commons-logging.jar、commons-dbcp.jar、commons-pool.jar、lib\aspectj下的两个jar包、lib\cglib\cglib-nodep-2.1_3.jar、lib\j2ee下的common-annotations.jar、lib\log4j\log4j-1.2.15.jar、dist\modules\spring-webmvc-struts.jar共10个包
Struts的jar包:lib下面的包除antlr-2.7.6.jar(由于Spring中已经存在一个antlr-2.7.6.jar,所以把Struts中的antlr-2.7.2.jar删除,避免jar冲突)外,全部都要,共19个
另外还有数据库驱动包,我用的是MySQL数据库,mysql-connector-java-5.0.5-bin.jar
2.在创建好的WEB项目中引入Hibernate、Spring、Struts以及数据库驱动等所必须的jar包
3.先整合Spring和Hibernate,在SpringXML配置文件中配置数据源
4.在SpringXML配置文件中配置Hibernate的SessionFacotry
5.SpringXML配置文件中配置事务管理
6.建立user表的pojo类
7.实体Bean配置Userinfo.hbm.xml
8.创建业务层服务接口UserinfoService
9.建立业务层服务类UserinfoServiceBean
最后把下面这代码加入到SpringXML配置文件中去
10.对业务层UserinfoServiceBean的每个方法进行单元测试
测试结果如下:
到此已经将Spring与Hibernate整合成功,接下来再整合Struts
11.在Web容器中配置Struts,即在web.xml中配置
12.在Web容器中实例化Spring容器,在web.xml中配置如下:
13.建立Struts的Action文件UserinfoAction
14.建立Struts配置文件struts-config.xml,把UserinfoAction配置好
15.创建一个显示查询结果的userinfoList.jsp页面
[size=medium]页面显示结果如下:
虽然已成功将SSH整合成功了,但有一点缺陷的地方就是在Action每次要取得Spring容器时,都要通过
16.使用SpringIOC依赖注入管理Struts的Action
把struts.cfg.xml的内容改为如下形式:[/size]
将下面这行代码加到SpringXML配置文件中去
在UserinfoAction中可以写成如下形式:
org.springframework.web.struts.DelegatingRequestProcessor处理流程如下:
由于用到的库文件太多,在此我只能把源码和数据库文件传上来,希望对刚接触SSH的人有所帮助。
新手,学习ing,呵呵
Hibernate的jar包:hibernate3.jar、lib\required下的所有jar包(共6个)、lib\optional\ehche下的ehcache-1.2.3.jar、slf4j-nop-1.5.2.jar共9个包
Spring的jar包:dist\spring.jar、lib\jakarta-commons下的commons-logging.jar、commons-dbcp.jar、commons-pool.jar、lib\aspectj下的两个jar包、lib\cglib\cglib-nodep-2.1_3.jar、lib\j2ee下的common-annotations.jar、lib\log4j\log4j-1.2.15.jar、dist\modules\spring-webmvc-struts.jar共10个包
Struts的jar包:lib下面的包除antlr-2.7.6.jar(由于Spring中已经存在一个antlr-2.7.6.jar,所以把Struts中的antlr-2.7.2.jar删除,避免jar冲突)外,全部都要,共19个
另外还有数据库驱动包,我用的是MySQL数据库,mysql-connector-java-5.0.5-bin.jar
2.在创建好的WEB项目中引入Hibernate、Spring、Struts以及数据库驱动等所必须的jar包
3.先整合Spring和Hibernate,在SpringXML配置文件中配置数据源
<?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/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"> <!-- 配置数据源 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="org.gjt.mm.mysql.Driver" /> <!--&是XML支持的&符号,在XML文件中一定记得转义--> <property name="url" value="jdbc:mysql://localhost:3306/czcspring?useUnicode=true&characterEncoding=UTF-8" /> <property name="username" value="root" /> <property name="password" value="netjava" /> <!--连接池启动时的初始值--> <property name="initialSize" value="1" /> <!--连接池的最大值--> <property name="maxActive" value="500" /> <!--最大空闲值,当经过一个高峰时间后,连接池可以慢慢将已经用不到的链接慢慢释放一部分,一直减少到maxIdle为止--> <property name="maxIdle" value="2" /> <!--最小空闲值,当空闲的链接数少于阀值时,连接池就会预申请去一些链接,以免洪峰来时来不及申请--> <property name="minIdle" value="1" /> </bean> <context:annotation-config /> </beans>
4.在SpringXML配置文件中配置Hibernate的SessionFacotry
<!-- 用于定义SessionFactory对象,对象在容器中是一个单例的形式 --> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <!-- 数据源属性 --> <property name="dataSource" ref="dataSource" /> <!-- hibernate实体bean的映射文件,可以配置有多个映射文件 --> <property name="mappingResources"> <list> <value>cn/netjava/bean/Userinfo.hbm.xml</value> </list> </property> <!--用来配置hibernate的属性信息--> <property name="hibernateProperties"> <value> hibernate.dialect=org.hibernate.dialect.MySQL5Dialect hibernate.hbm2ddl.auto=update hibernate.show_sql=false hibernate.format_sql=false </value> </property> </bean>
5.SpringXML配置文件中配置事务管理
<!-- 配置事务管理 --> <bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory"></property> </bean> <!--采用@Transaction注解方式使用事务 事务管理器由txManager配置好的--> <tx:annotation-driven transaction-manager="txManager" />
6.建立user表的pojo类
package cn.netjava.pojo; public class Userinfo { private Integer id; private String name; private Integer age; public Userinfo() { } public Userinfo(String name) { this.name = name; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public String toString() { return "id: " + id + " name: " + name + " age: " + age; } }
7.实体Bean配置Userinfo.hbm.xml
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <!-- 这里一定要指明不延迟加载才行 --> <class name="cn.netjava.pojo.Userinfo" table="user" lazy="false"> <id name="id" column="id"> <generator class="native" /> </id> <property name="name" column="name" length="20" not-null="true"> </property> <property name="age" column="age" not-null="true"></property> </class> </hibernate-mapping>
8.创建业务层服务接口UserinfoService
package cn.netjava.service; import java.util.List; import cn.netjava.pojo.Userinfo; public interface UserinfoService { /** * 保存Userinfo * * @param user */ public void save(Userinfo user); /** * 更新Userinfo * * @param user */ public void update(Userinfo user); /** * 获取Userinfo * * @param userId * @return */ public Userinfo getUserinfo(Integer userId); /** * 获取所有Userinfo * * @return */ public List<Userinfo> getUserins(); /** * 删除指定id的Userinfo * * @param userId */ public void delete(Integer userId); }
9.建立业务层服务类UserinfoServiceBean
package cn.netjava.service.impl; import java.util.List; import javax.annotation.Resource; import org.hibernate.SessionFactory; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import cn.netjava.pojo.Userinfo; import cn.netjava.service.UserinfoService; //spring xml文件中配置事务时采用注解方式进行配置的,所以在此处我们要加上@Transaction @Transactional public class UserinfoServiceBean implements UserinfoService { // 使用SpringIOC依赖注入的方式注入SessionFactory对象 @Resource private SessionFactory sessionFactory; public void delete(Integer userId) { sessionFactory.getCurrentSession() .delete( sessionFactory.getCurrentSession().load(Userinfo.class, userId)); System.out.println("用户删除成功"); } @Transactional(propagation = Propagation.NOT_SUPPORTED, readOnly = true) public Userinfo getUserinfo(Integer userId) { return (Userinfo) sessionFactory.getCurrentSession().load( Userinfo.class, userId); } @Transactional(propagation = Propagation.NOT_SUPPORTED, readOnly = true) @SuppressWarnings("unchecked") // 终止警告 public List<Userinfo> getUserins() { //这个hql语句里面的Userinfo不是表名,而是pojo类名字 return sessionFactory.getCurrentSession().createQuery("from Userinfo") .list(); } public void save(Userinfo user) { // 调用persist方法进行保存 sessionFactory.getCurrentSession().persist(user); System.out.println("用户保存成功"); } public void update(Userinfo user) { // 从Spring容器中得到当前被Spring容器管理的Session对象 调用merge方法进行更新。 sessionFactory.getCurrentSession().merge(user); System.out.println("用户信息更新成功"); } }
最后把下面这代码加入到SpringXML配置文件中去
<bean id="userinfoService" class="cn.netjava.service.impl.UserinfoServiceBean"> </bean>
10.对业务层UserinfoServiceBean的每个方法进行单元测试
package cn.netjava.test; import java.util.List; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import cn.netjava.pojo.Userinfo; import cn.netjava.service.UserinfoService; public class TestUtil { private static UserinfoService userinfoService; public static void setUpBeforeClass() throws Exception { ApplicationContext applicationContext = new ClassPathXmlApplicationContext( "spring.xml"); userinfoService = (UserinfoService) applicationContext .getBean("userinfoService"); } public static void main(String args[]) throws Exception { setUpBeforeClass(); List<Userinfo> userlist = userinfoService.getUserins(); for (Userinfo u : userlist) { System.out.println(u.toString()); } } }
测试结果如下:
到此已经将Spring与Hibernate整合成功,接下来再整合Struts
11.在Web容器中配置Struts,即在web.xml中配置
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <!-- 配置struts --> <servlet> <servlet-name>struts</servlet-name> <servlet-class> org.apache.struts.action.ActionServlet </servlet-class> <init-param> <param-name>config</param-name> <param-value>/WEB-INF/struts-config.xml</param-value> </init-param> <load-on-startup>0</load-on-startup> </servlet> <servlet-mapping> <servlet-name>struts</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
12.在Web容器中实例化Spring容器,在web.xml中配置如下:
<!-- 制定Spring配置文件,默认从Web根目录寻找配置文件, --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring.xml</param-value> </context-param> <!-- 在Web容器中实例化Spring容器,并将实例放入Application范围内 --> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener>
13.建立Struts的Action文件UserinfoAction
package cn.netjava.action; import java.util.List; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; import cn.netjava.pojo.Userinfo; import cn.netjava.service.UserinfoService; public class UserinfoAction extends Action { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { // 取得被放置在Application范围里边的Spring容器实例 WebApplicationContext ctx = WebApplicationContextUtils .getWebApplicationContext(this.servlet.getServletContext()); // 通过Spring容器得到业务bean实例 UserinfoService userinfoService = (UserinfoService) ctx .getBean("userinfoService"); List<Userinfo> userinfoList = userinfoService.getUserins(); System.out.println("得到总数:" + userinfoList.size()); request.setAttribute("userinfoList", userinfoList); return mapping.findForward("list"); } }
14.建立Struts配置文件struts-config.xml,把UserinfoAction配置好
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd"> <struts-config> <action-mappings> <action path="/userinfo" type="cn.netjava.action.UserinfoAction" scope="request"> <forward name="list" path="/userinfoList.jsp" /> </action> </action-mappings> </struts-config>
15.创建一个显示查询结果的userinfoList.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> <base href="<%=basePath%>"> <title>用户信息列表</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <h1> Test Reslut </h1> <c:forEach items="${userinfoList}" var="user"> ID=${user.id},Name=${user.name},Age=${user.age}<br> </c:forEach> </body> </html>
[size=medium]页面显示结果如下:
虽然已成功将SSH整合成功了,但有一点缺陷的地方就是在Action每次要取得Spring容器时,都要通过
WebApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(this.servlet.getServletContext());去获取Spring容器实例,其实我们可以通过Spring的依赖注入原理省去其中的步骤
16.使用SpringIOC依赖注入管理Struts的Action
把struts.cfg.xml的内容改为如下形式:[/size]
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd"> <struts-config> <!--采用SpringIOC的依赖注入,此处的type可以不配置。 如果配置type,请求处理器会在Spring容器寻找不到的Bean实例情况下, 会交给Struts进行处理,Struts会创建该对象并放入缓存中。 建议:如果使用了Spring的依赖注入,type也就无需要配置了。 --> <action-mappings> <action path="/userinfo" scope="request"> <forward name="list" path="/userinfoList.jsp" /> </action> </action-mappings> <!-- 配置spring的请求控制器 --> <!-- 请求路径是/userinfo.do 首先交给ActionServlet处理,接下来交给Spring的请求处理器来处理 Spring的请求处理器的工作就是: 请求处理器会根据用户请求的路径(/userinfo),到Spring容器中寻找和名称匹配的Bean, 寻找到之后就采用Bean实例处理用户的请求。 --> <controller> <set-property property="processorClass" value="org.springframework.web.struts.DelegatingRequestProcessor"></set-property> </controller> </struts-config>
将下面这行代码加到SpringXML配置文件中去
<!-- 配置struts中处理bean的Action--> <bean name="/userinfo" class="cn.netjava.action.UserinfoAction"></bean>注意:一定要确保action的path属性值与bean的名称相同,尤其别掉了"/"
在UserinfoAction中可以写成如下形式:
package cn.netjava.action; import java.util.List; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; import cn.netjava.pojo.Userinfo; import cn.netjava.service.UserinfoService; public class UserinfoAction extends Action { @Resource UserinfoService userinfoService; public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) List<Userinfo> userinfoList = userinfoService.getUserins(); System.out.println("得到总数:" + userinfoList.size()); request.setAttribute("userinfoList", userinfoList); return mapping.findForward("list"); } }
org.springframework.web.struts.DelegatingRequestProcessor处理流程如下:
由于用到的库文件太多,在此我只能把源码和数据库文件传上来,希望对刚接触SSH的人有所帮助。
- src.rar (4.9 KB)
- 下载次数: 112
- czcspring.rar (928 Bytes)
- 下载次数: 95
评论
5 楼
qingBYqing
2010-08-24
我不顶下,都不好意思离开
4 楼
caiseyunchuang
2010-08-24
支持下楼主 最近正想弄弄
3 楼
My*Love
2010-08-19
hzygt 写道
虽说老点,看在博主认真写的份上,支持一下
新手,学习ing,呵呵
2 楼
uniquejava
2010-08-18
收藏 长长长
1 楼
hzygt
2010-08-18
虽说老点,看在博主认真写的份上,支持一下
相关推荐
Struts2、Spring2.5和Hibernate3.2是Java Web开发中经典的三大框架,它们的整合使用在过去的许多年里被广泛应用于企业级应用系统。这个完整的项目提供了从开发环境到运行环境的所有必要组件,包括数据库脚本,使得...
Struts1.2、Spring2.5和Hibernate3.2是经典的Java企业级开发框架组合,它们各自在应用程序的不同层次上发挥着重要作用。Struts1.2是一个MVC(Model-View-Controller)框架,主要负责处理用户界面与业务逻辑之间的...
struts2.0+spring2.5+hibernate3.0整合框架,下载导入到eclipse下即可。。启动tomcat前先修改jdbc.properties文件。由于lib文件较大,所以请自行导入相关lib包。
总的来说,Struts2.1、Spring2.5和Hibernate3.3的整合为开发者提供了一个强大的开发平台,可以高效地构建复杂的Java Web应用。尽管现代框架如Spring Boot已逐渐取代这种传统的整合方式,但对于理解企业级开发的底层...
【jbpm4整合struts2+spring2.5+hibernate3.3】的集成是企业级应用开发中常见的技术栈组合,旨在利用各框架的优势实现高效、灵活的业务流程管理。jbpm4是一个开源的工作流管理系统,用于定义、执行和管理业务流程。...
Struts1、Spring2.5和Hibernate3.0是Java Web开发中经典的SSH(Spring、Struts、Hibernate)集成框架的三个组件,它们在2000年代末期至2010年代初广泛应用于企业级应用开发。SSH框架组合为开发者提供了模型-视图-...
Struts2、Spring和Hibernate是Java Web开发中的三...以上就是关于“Struts2+Spring2.5+Hibernate3.2整合示例”的主要知识点,这个整合实例涵盖了Java Web开发中的重要技术,对于开发者来说,深入学习和实践将非常有益。
Struts2.1、Spring 2.5 和 Hibernate 3.2 是经典的Java Web开发框架组合,用于构建高效、可维护的企业级应用。这个详细例子将深入探讨如何使用这三个框架协同工作,实现数据库的增(Add)、删(Delete)、改(Modify...
整合S2SH+Freemarker,后台用Spring管理各个bean,Hibernate做数据库持久化,viewer用Freemarker。整合中对Struts2,Hibernate,Spring都采用Annotation进行注解类。
在Java Web开发中,"Eclipse中Struts2+Spring2.5+Hibernate3整合"是一个常见的技术栈,用于构建高效、模块化的Web应用程序。这三个框架分别是:Struts2(MVC框架)、Spring2.5(依赖注入和企业服务框架)和Hibernate...
SSH整合包(S1.3+S2.5+H3.3)是一个常见的Java Web开发框架组合,由Struts 1.3、Spring 2.5和Hibernate 3.3这三大开源框架集成而成。这个整合包是开发人员进行企业级应用开发时常用的一种工具集合,便于快速构建基于...
总结来说,"Struts1.3+Spring4.x+Hibernate4.x框架整合实现对书籍的增删改查(含分页)"项目展示了如何使用SSH框架来构建一个功能完善的书籍管理系统。Struts处理用户请求,Spring管理应用组件并提供事务支持,...
struts2+spring2.5+hibernate3.2 + freemarker 全新功能实现的增删改查+freemarker 摸版 struts2 的方式自己去看简单。 spring2.5 是用注释来注入 hibernate3.2 是用ejb3注解映射关系 hibernate3 +个属性可以自动...
1、可以运行(发布后,删除\Tomcat 6.0\webapps\ssh\WebRoot\WEB-INF\lib下的asm-2.2.3.jar) 2、采用Struts1.2 + Spring2.5 + Hibernate3.2 整合开发 3、SSH入门级实例
cdst ssh代码生成器,免费的,功能强悍的struts2+spring2.5+hibernate3.2的一套 代码生成系统。.zip cdst ssh代码生成器,免费的,功能强悍的struts2+spring2.5+hibernate3.2的一套 代码生成系统。.zip cdst ssh代码...
By ppm10103 Struts1.3 + Srping2.5 + Hibernate3.2 + MySQL5 数据库DDL 在 doc 中 MyEclipse8 开发用其部署会产生冲突的asm-2.2.3.jar,删除之
struts1.3+spring2.5+ibatis2.3.4整合