首页 > 其他分享 >s1sh整合实例 Strut1.2+Spring2.6+Hibernate3.2

s1sh整合实例 Strut1.2+Spring2.6+Hibernate3.2

时间:2023-06-13 10:03:13浏览次数:55  
标签:Hibernate Hibernate3.2 Spring2.6 Spring jar Next Strut1.2 右键 asm


[code]

开发环境:MyEclipse8.5+Mysql
说明:本实例是简单注册程序(只有两个属性)
数据库脚本:user.sql

CREATE TABLE `user` ( 

`Id` int(11) NOT NULL AUTO_INCREMENT, 

`username` varchar(255) DEFAULT NULL, 

`password` varchar(255) DEFAULT NULL, 

PRIMARY KEY (`Id`) 

) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;


开发步骤:

1建立Web项目
选择: Java EE 5.0
2添加Struts支持(项目右键MyEclipse Struts Capabilities …)
选择:

1)Struts specification: Struts 1.2 

2)Base package for 那位classes:com.beyondsoft.s1sh


3添加Spring支持(项目右键MyEclipse Spring Capabilities …)
选择:

1) Spring version:Spring 2.5 

2) Select the libraries to add the buildpath: 

Spring 2.5 AOP Libraries 

Spring 2.5 Core Libraries 

Spring 2.5 Persistence Core Libraries 

Spring 2.5 Persistence JDBC Libraries 

Spring 2.5 Web Libraries 

 3) JAR Library Installation: 

Copy checked Library contents to project folder (TLDs always copied) 

 Next


4) Spring配置文件选择目录Folder:WebRoot/WEB-INF
Finish
4 添加Hibernate支持(项目右键MyEclipse Hibernate Capabilities …)
选择:

1)Hibernate Specification:Hibernate3.2 

 2)Select the libraries to ad to the buildpath:Hibernate 3.2 Core Libraries和Hibernage 3.2 Annoations 

3)JAR Library Installation:Copy checked Library Jars to project folder and add to build-path 

Next 

4)选择:Spring configuration file(applicationContext.xml) Next 

 5)选择:Existing Spring configuration file 

SessionFactory Id: sessionFactory Next 

 6)Bean Id:dataSource 

DB Driver:选择配置好的Hibernate。Next 

 7)不建立SessionFactory(不选择Create SessionFactory class?) 

 8)Finish。



二 数据库方面
Hibernate反向工程:
1).准备数据库,假如名为s1sh,里面有一个User的表


2).在MyEclipse的右上角切换透视图,切换到MyEclipse Database Explorer

3).然后在最左边点击右键,选择New(也就是说新建一个数据库连接,Driver Name叫s1sh,方便下面解释,其它的跟平常用的一样),,配置好连接以后点击Next,进入下一个窗体, 选择第三个单选按钮(Display the selected Schemas),然后点击右边的Add按钮,也就是说添加你的数据库,然后点击完成按钮,这样你的数据库连接就创建好了;


在你刚才创建的s1sh上右键,选择Open connection, 一直展开到s1sh下面的TABLE,展开TABLE,在我们创建的User表上点击右键,选择Hibernate Reverse Engineering(这个就是反向生成),出来一个面板 在Java src folder 选择这个工程的src目录,然后在Java Package上选择刚才我们在工程里面创建好的bean包,接下来就是勾中前三个复选框就可以了,点击Next,又会出现一个面板,这个面板可以不用管,然后点击Next,这个面板也不用管,点击Finish,然后就会生成实体类和映射文件了。

三 建立JSP 页面,Action类

1) 打开struts-config.xml配置文件:右键new Form,Action and JSP 

 2) User case:register 

 Form Impl:New FormBean 

 Properties:username password 

 JSP:选择Create JSP form Next 

3) Action 默认就可以了 Finish 

 4) 配置struts-config.xml文件,将Struts交给Spring管理 

 a) 加入插件 (message-resources标记下) 

<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn"> 

 <set-property property="contextConfigLocation" 

 value="/WEB-INF/applicationContext.xml" /> 

</plug-in> 

b) 将Action类移交(message-resources标记上) 

<controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor"/> 


struts-config.xml文件(全部) 


<?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> 

 <data-sources /> 

 <form-beans> 

 <form-bean name="registerForm" type="com.beyondsoft.bean.RegisterForm"> 

 <form-property name="id" type="java.lang.Integer" /> 

 <form-property name="username" type="java.lang.String" /> 

 <form-property name="password" type="java.lang.String" /> 

 </form-bean> 


 </form-beans> 

 <global-exceptions /> 

 <global-forwards /> 

 <action-mappings> 

 <action attribute="registerForm" input="/form/register.jsp" 

 name="registerForm" path="/register" scope="request" 

 type="com.beyondsoft.s1sh.action.RegisterAction"> 

 <forward name="success" path="/form/main.jsp" /> 

 </action> 

 <!-- 

 <action input="/form/register.jsp" name="registerForm" 

 path="/register" scope="request" 

 type="com.beyondsoft.s1sh.action.RegisterAction"> <forward 

 name="success" path="/form/main.jsp" /> </action> 

 --> 

 </action-mappings> 

 <controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor" /> 

 <message-resources parameter="com.beyondsoft.s1sh.ApplicationResources" /> 

 <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn"> 

 <set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml" /> 

 </plug-in> 

</struts-config> 



5) register.jsp页面(WebRoot/form/register.jsp) 

<%@ page language="java" pageEncoding="utf-8"%> 

<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%> 

<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%> 


<html> 

 <head> 

 <title>JSP for DynaActionForm form</title> 

 </head> 

 <body> 

 <html:form action="/register"> 

 username : <html:text property="username"/><html:errors property="username"/><br/> 

 password : <html:text property="password"/><html:errors property="password"/><br/> 

 <html:submit value="注册"/>    <html:reset value="重置"/> 

 </html:form> 

 </body> 

</html> 


6.在applicationContext.xml里面加入 

<bean name="/register" class="com.beyondsoft.s1sh.action.RegisterAction"> 

 <property name="userDAO"> 

 <ref bean="userDAO" /> 

 </property> 

</bean> 


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" 

 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> 



 <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> 

 <property name="driverClassName" value="com.mysql.jdbc.Driver"> 

 </property> 

 <property name="url" value="jdbc:mysql://localhost:3306/s1sh"></property> 

 <property name="username" value="root"></property> 

 <property name="password" value="root"></property> 

 </bean> 

 <bean id="sessionFactory" 

 class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> 

 <property name="dataSource"> 

 <ref bean="dataSource" /> 

 </property> 

 <property name="hibernateProperties"> 

 <props> 

 <prop key="hibernate.dialect"> 

 org.hibernate.dialect.MySQLDialect 

 </prop> 

 </props> 

 </property> 

 <property name="mappingResources"> 

 <list> 

 <value>com/beyondsoft/bean/User.hbm.xml</value> 

 </list> 

 </property> 

 </bean> 


 <bean id="userDAO" class="com.beyondsoft.bean.UserDAO"> 

 <property name="sessionFactory"> 

 <ref bean="sessionFactory" /> 

 </property> 

 </bean> 


 <bean name="/register" class="com.beyondsoft.s1sh.action.RegisterAction"> 

 <property name="userDAO"> 

 <ref bean="userDAO" /> 

 </property> 

 </bean> 


</beans>



7.在RegisterAction类里面加一个属性userDAO;并实现set和get方法。
再加入

userDAO.save(new User(registerForm.getUsername(),registerForm.getPassword())); 

return mapping.findForward("success");




在运行即可。


但是由于Myeclipse的问题会出现org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: org/objectweb/asm/CodeVisitor

它是由于在使用Spring的AOP编程时,会用到这几个lib:
asm-2.2.3.jar
asm-commons-2.2.3.jar
asm-util-2.2.3.jar
Hibernate使用如果lib:
asm.jar
asm-attrs.jar
其中asm-2.2.3.jar与asm.jar存在类上的冲突!
使用其中之一或两者都使用,可能会出现如下错误:
java.lang.NoClassDefFoundError: org/objectweb/asm/CodeVisitor
java.lang.NoClassDefFoundError: org/objectweb/asm/commons/EmptyVisitor
java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit。。。。。。


所以我们只要去除类路径上的关于Hibernate的3个lib
asm.jar
asm-attrs.jar
cglib-2.1.3.jar 即可运行成功。


这是一个最简单的Strut1.2+Spring2.6+Hibernate3.2整合的一个小实例。如果你要实现更多的功能可以在这个的基础上面再加。


[/code]

标签:Hibernate,Hibernate3.2,Spring2.6,Spring,jar,Next,Strut1.2,右键,asm
From: https://blog.51cto.com/u_16087012/6467252

相关文章