struct hibernate spring 经典框架 搭建 入门实例

在搭建环境以前我们需要准备如下 一些东西(下面是我用的):

structs2.2.3《下载》

hibernate3.3.2(本来用4.0但是spring貌似还不不支持4.0,后面改回来)《下载》

spring 3.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  

我的源码打包好自己下载就可以了

就可以看到我们数据库里面的数据了!在这就告一段落,第一次写文章不红的地方请大家多多指出!


  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值