struct hibernate spring 经典框架 搭建 入门实例
original link : http://www.cnblogs.com/DiYuShe/admin/EditPosts.aspx?opt=1
在搭建环境以前我们需要准备如下 一些东西(下面是我用的):
hibernate3.3.2(本来用4.0但是spring貌似还不不支持4.0,后面改回来)《下载》
上面是官网的下载地址
开发工具使用的是eclipse +jdk6 +tomcat + mysql5.1
下面我们开始搭建环境
首先创建一个Dynamic web project 输入任意名字
第一先加载spring环境 我们需要的包有
org.springframework.asm-3.1.0.M2.jar org.springframework.beans-3.1.0.M2.jar org.springframework.context-3.1.0.M2.jar
org.springframework.core-3.1.0.M2.jar org.springframework.expression-3.1.0.M2.jar org.springframework.jdbc-3.1.0.M2.jar
org.springframework.web-3.1.0.M2.jar
建议不要一次性加入 应该先加最核心的运行代码看缺少什么加什么,这样就不会加多余的包进来了,spring3已经把包按功能分开
不像以前一个包,这样个灵活,只要运行我们需要的功能而我们没用到的就不用在硬性的添加进来,关于每个包得功能我在这里就
不在多讲了百度一下很多!
包加好了之后我们开始创建spring应用,创建一个XML文件ApplicationContext.xml(放在src根目录)你也可以写其他名字,
下面是基本结构
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
/*在这里面添加beans */
<beans>
我们来测试一下spring搭建好了没有
创建一个Person类
public class Person {
private String name;
private int age;
/*也可以写get方法这边就不写了,不写也行spring没有要求一定要有*/
public void setName(String name){ this.name=name}
public void setAge(int age){this.age=age}
public String toString(){
return "name : " + name + " age : " + age; //重写toString方法以便输出信息
}
}
然后在
配置文件也就是AppliccationContext.xml里面添加bean相关配置(这是值注入,还有接口和构造注入)
<bean id="nike" class="Person" scope="prototype" >
<property name="name" value="XXX"></property>
<property name="age" value="18"></property>
</bean>
测试代码
public class testPerson {
public static void main(String[] args) {
XmlBeanFactory beansfactory = new XmlBeanFactory(new FileSystemResource("src/ApplicationContext.xml"));
System.out.println(beansfactory);
Person nike = (Person)beansfactory.getBean("nike");
System.out.println(nike);
}
运行效果应该看到: name : nike age : 18
这就证明搭建好了,beans已经自己创建,后面我们先整合hibernate需要的包如下:
antlr-2.7.6.jar commons-collections-3.1.jar dom4j-1.6.jar ejb3-persistence.jar
hibernate3.jar hibernate-annotations.jar hibernate-commons-annotations.jar
javassist-3.9.0.GA.jar jta-1.1.jar
加好之后在spring里面配置hibernate(我们要再数据库创建一个叫做spring的数据库)
<!-- 集成hibernate 配置部分 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close"> <!-- 定义数据源 -->
<property name="driverClassName" value="com.mysql.jdbc.Driver"/><!-- 定义数据库驱动-->
<property name="url" value="jdbc:mysql://localhost:3306/spring?characterEncoding=UTF-8"/><!-- 连接字符串-->
<property name="username" value="root" /><!-- 账号-->
<property name="password" value="198902"/><!-- 密码-->
</bean>
<!-- 配置sessionFactory 配置 -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"
>
<property name="dataSource" ref="dataSource" />
<property name="annotatedClasses" >
<list>
<value>com.spring.beans.Person</value><!-- 定义元素关联,xml文件也可以配置我这边直接用annoration配置 -->
</list>
</property>
<property name="hibernateProperties"><!--hibernate参数-->
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hiberante.format_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
</props>
</property>
</bean>
<!--定义DAO-->
<bean id="me" class="com.hibernate.dao.PersonDao">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
我们将刚才的Person改一下就可以用了
@Entity
@Table(name="person")
public class Person {
@Id
@Column(unique=true,name="person_id",nullable=false)
private int id ;
@Column(name="name",length=20)
private String name;
@Column(name="age")
private int age;
/*也可以写get方法这边就不写了,不写也行spring没有要求一定要有*/
public void setName(String name){ this.name=name}
public void setAge(int age){this.age=age}
public void setId(int id ){this.id = id}
.....后面get方法省了自己写
public String toString(){
return "name : " + name + " age : " + age; //重写toString方法以便输出信息
}
}
下面是DAO接口
public interface IPersonDao {
public void createPerson(Person person);
public List<Serializable> getAll();
public int count();
public void drop(Person person);
}
DAO实现:
public class PersonDao implements IPersonDao{
private SessionFactory sessionFactory;
@Override
public void createPerson(Person person) {
Session session = sessionFactory.openSession();
session.beginTransaction();
session.save(person);
session.beginTransaction().commit();
}
@Override
public List<Serializable>getAll() {
Session session = sessionFactory.openSession();
String sql ="from Person";
session.beginTransaction();
Query query = session.createQuery(sql);
return query.list();
}
@Override
public int count() {
Session session = sessionFactory.openSession();
String sql ="from Person";
session.beginTransaction();
Query query = session.createQuery(sql);
return query.list().size();
}
@Override
public void drop(Person person) {
Session session = sessionFactory.openSession();
session.beginTransaction();
session.delete(person);
session.beginTransaction().commit();
}
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
}
测试方法:
public class testPerson {
public static void main(String[] args) {
XmlBeanFactory beansfactory = new XmlBeanFactory(new FileSystemResource("src/ApplicationContext.xml"));
PersonDao persondao = (PersonDao) beansfactory.getBean("me");
Person person = new Person();
person.setId(5);
person.setFirstname("12223");
person.setLastname("qwe2");
persondao.createPerson(person);
System.out.println(persondao.getAll().size());
}
}
由于数据表我们设置成自动更新,在没有表的情况下他会帮我们自动创建表和他们之间的关系
打开mysql客户端 输入:
use spring ;
select 8 from person;
如果看到我们的数据就证明OK了!
在这我们就已经将hibernate 基本整合好了!
开始整合struts
;老样子:
struts2-core-2.2.3.jar struts2-spring-plugin-2.2.3.jar xwork-core-2.2.3.jar
ognl-3.0.1.jar freemarker-2.3.16.jar commons-logging-api-1.1.jar commons-fileupload-1.2.2.jar
antlr-2.7.2.jar
在src 下创建配置文件struts.xml
我会先从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>spring_structs_ajax</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value> <!--注明spring配置文件位置-->
/WEB-INF/classes/ApplicationContext.xml
</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener> <!--配置拦截-->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name><!--struts配置部分-->
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
struts配置部分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" />
<!--很重要注明工厂-->
<constant name="struts.objectFactory" value="spring"></constant>
<package name="b" extends="struts-default">
<action name="index">
<result>/index.jsp</result>
</action>
<!-- 第一个测试的 -->
<action name="h" class="pca" method="getPe" >
<result name="SUCCESS">/hello.jsp</result>
</action>
</package>
</struts>
我们创建一个ACtion
public class personAction extends ActionSupport {
private static final long serialVersionUID = 1L;
private IPersonDao dao;
/*
* 测试方法
* spring 值注入顺序是按照配置文件值的顺序注入
*/
public String getPe(){
System.out.println(dao);
HttpServletRequest request = ServletActionContext.getRequest();
request.getSession().setAttribute("personlist", dao.getAll());
return "SUCCESS";
}
public IPersonDao getDao() {
return dao;
}
public void setDao(IPersonDao dao) {
this.dao = dao;
}
}
运行时运行了 我们怎么能看到结果了不用急,创建个页面不就搞定了:
在WebContent下面创建一个hello.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>test OK </title>
</head>
<body>
测试OK<br>
<a> 姓 :</a><label>${personlist }</label><br/>
</body>
</html>
运行打开浏览器:输入 http://localhost:8080/项目名/h
就可以看到我们数据库里面的数据了!在这就告一段落,第一次写文章不红的地方请大家多多指出!
posted on 2012-06-19 09:56 Michael.Wang 阅读(531) 评论(0) 编辑 收藏 举报