`
kidiaoer
  • 浏览: 808096 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

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

阅读更多

开发环境: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="注册"/>&nbsp;&nbsp;&nbsp;&nbsp;<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整合的一个小实例。如果你要实现更多的功能可以在这个的基础上面再加。


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics