您的位置:首页 > 编程语言 > Java开发

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

2011-11-24 09:54 465 查看
文章出处:http://blog.csdn.net/zmzsoftware/article/details/6992994

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

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

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

就可以看到我们数据库里面的数据了!在这就告一段落,第一次写文章不红的地方请大家多多指出!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: