Struct2、Hibernate3、Spring3框架搭建实战

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Struct2、Hibernate3、Spring3框架搭建实战
采⽤⽬前最新的struts-2.3.1.2、hibernate3.6.10.Final、spring-framework-3.1.1.RELEASE开发包,以及eclipse-jee-indigo-SR2-win32、apache-tomcat-7.0.27服务器、JDK6和mysql5做开发环境,参考了前辈的⼀篇相关⽂章,改正了其中的错误和疏漏,克服了公司分配的“新”机器每⼩时⾃动重启三次的困难,终于把环境给搭好了。

整个过程中遵循的⼀个原则是,避免引⼊⽤不到的jar包,以求搭建⼀个最⼩的SSH 运⾏环境。

⾸先创建⼀个Dynamic web project 输⼊任意名字如SSHBase。

第⼀步:加载Spring环境
我们需要引⼊的包有:
org.springframework.asm-3.1.1.RELEASE.jar
org.springframework.beans-3.1.1.RELEASE.jar
org.springframework.context-3.1.1.RELEASE.jar
org.springframework.core-3.1.1.RELEASE.jar
org.springframework.expression-3.1.1.RELEASE.jar
org.springframework.jdbc-3.1.1.RELEASE.jar
org.springframework.web-3.1.1.RELEASE.jar
org.springframework.orm-3.1.1.RELEASE.jar
由于spring默认开启了⽇志,还需要加⼊commons-logging的jar包,否则会报错。

建议不要⼀次性加⼊应该先加最核⼼的运⾏代码看缺少什么加什么,这样就不会加多余的包进来了,spring3已经把包按功能分开,不像以前⼀个包,这样更灵活,只要运⾏我们需要的功能,⽽没⽤到的就不⽤在硬性的添加进来。

包加好了之后我们开始创建spring应⽤,创建⼀个XML⽂件ApplicationContext.xml(放在src根
⽬录),下⾯是基本结构
[html]view plaincopyprint?
1.
2.
3.xmlns:xsi="/doc/af13914945.html
/2001/XMLSchema-instance"
4.xsi:schemaLocation="/doc/af1391494
5.html
/schema/beans
5./doc/af13914945.html
/schema/beans/spring-beans-3.0.x
sd">
6.
7.
8.
9.
写⼀个⽤例来测试⼀下spring搭建好了没有,创建⼀个Person类:
[java]view plaincopyprint?
2.
3.private String name;
4.private int age;
5.
6./* 也可以写get⽅法这边就不写了,不写也⾏spring没有要求⼀定要有 */
7.
8.public void setName(String name) {
/doc/af13914945.html
= name;
10. }
11.
12.public void setAge(int age) {
13.this.age = age;
14. }
15.
16.public String toString() {
17.return"name : " + name + " age : " + age; // 重写toString⽅法以便输
出信息
18. }
19.
20.}
然后在配置⽂件,也就是AppliccationContext.xml⾥⾯添加bean相关配置,要注意类的包路径(这是值注⼊,还有接⼝和构造注⼊):
[html]view plaincopyprint?
1.
2.
3.
4.
5.
6.
7.
再写⼀个测试类,来进⾏测试:
[java]view plaincopyprint?
1.import org.springframework.beans.factory.xml.XmlBeanFactory;
2.import org.springframework.core.io.FileSystemResource;
4.public class testSpring {
5.
6.public static void main(String[] args) {
7.// TODO Auto-generated method stub
8. XmlBeanFactory beansfactory = new XmlBeanFactory(new FileSystemResou
rce("src/ApplicationContext.xml"));
9. System.out.println(beansfactory);
10. Person nike = (Person)beansfactory.getBean("nike");
11. System.out.println(nike);
12. }
13.
14.}
运⾏效果应该看到: name : XXX age : 18
这就证明搭建好了,beans已经⾃⼰创建。

第⼆步:整合hibernate
需要的包如下:
antlr-2.7.6.jar commons-collections-3.1.jar commons-logging-1.1.1.jar dom4j-1.6.1.jar
hibernate3.jar slf4j-api-1.6.1.jar hibernate-jpa-2.0-api-1.0.1.Final.jar
javassist-3.12.0.GA.jar jta-1.1.jar ejb3-persistence.jar
加好之后在spring⾥⾯配置hibernate(假定在数据库已经创建了⼀个叫做myTest的数据库)[html]view plaincopyprint? 1.
y-method="close">
2.
3.
4.
5.
6.
7.
8.
9.
10.class="org.springframework.orm.hibernate3.annotation.AnnotationSessi
onFactoryBean">
11.
12.
13.
.neareast.test.Person
15.
16.
17.
18.
.hibernate.dialect.MySQLDia
lect
20.true
21.true
22.update
23.
24.
25.
26.
27.
28.
29.
30.
然后修改⼀下刚才的Person类,并加上注解,就可以⽤了:[java]view plaincopyprint?
1.import javax.persistence.Column;
2.import javax.persistence.Entity;
3.import javax.persistence.Id;
4.import javax.persistence.Table;
5.
6.@Entity
7.@Table(name="person")
8.public class Person {
9.@Id
10.@Column(unique=true,name="id",nullable=false)
11.private int id ;
12.@Column(name="name",length=20)
13.private String name;
14.@Column(name="age")
15.private int age;
16./*也可以写get⽅法这边就不写了,不写也⾏spring没有要求⼀定要有*/
17.public void setName(String name){
/doc/af13914945.html
=name;
19. }
20.public void setId(int id ){
21.this.id = id;
22. }
23.public void setAge(int age){
24.this.age=age;
25. }
26.
27.public String toString() {
28.return"name : " + name + " age : " + age;//重写toString⽅法以便输出信息
29. }
30.}
DAO接⼝中定义了四个简单的⽅法:
[java]view plaincopyprint?
1.public interface IPersonDao {
2.public void createPerson(Person person);
3.public List getAll();
4.public int count();
5.public void drop(Person person);
6.}
其实现如下:
[java]view plaincopyprint?
1.import org.hibernate.Query;
2.import org.hibernate.Session;
3.import org.hibernate.SessionFactory;
4.
5.public class PersonDao implements IPersonDao {
6.
7.private SessionFactory sessionFactory;
8.
10.public void createPerson(Person person) {
11. Session session = sessionFactory.openSession();
12. session.beginTransaction();
13. session.save(person);
14. session.beginTransaction().commit();
15. }
16.
17.@Override
18.public List getAll() {
19. Session session = sessionFactory.openSession();
20. String sql = "from Person";
21. session.beginTransaction();
22. Query query = session.createQuery(sql);
23.return query.list();
24. }
25.
26.@Override
27.public int count() {
28. Session session = sessionFactory.openSession();
29. String sql = "from Person";
30. session.beginTransaction();
31. Query query = session.createQuery(sql);
32.return query.list().size();
33. }
34.
35.@Override
36.public void drop(Person person) {
37. Session session = sessionFactory.openSession();
38. session.beginTransaction();
39. session.delete(person);
40. session.beginTransaction().commit();
41.
42. }
43.
44.public void setSessionFactory(SessionFactory sessionFactory) {
45.this.sessionFactory = sessionFactory;
46. }
47.
48.}
然后再写⼀个简单的⽤例来测试:
[java]view plaincopyprint?
1.import org.springframework.beans.factory.xml.XmlBeanFactory;
2.import org.springframework.core.io.FileSystemResource;
3.
4.public class TestHibernate {
5.public static void main(String[] args) {
6. XmlBeanFactory beansfactory = new XmlBeanFactory(
7.new FileSystemResource("src/ApplicationContext.xml"));
8. PersonDao persondao = (PersonDao) beansfactory.getBean("personDao");
9. Person person = new Person();
10. person.setAge(123);
11. person.setName("哈哈哈");
12. persondao.createPerson(person);
13. System.out.println(persondao.getAll().size());
14. }
15.}
由于数据表设置成⾃动更新,在没有表的情况下,hibernate会帮我们⾃动创建表和他们之间的关系。

打开mysql客户端输⼊:use mytest;
select * from person;
如果看到我们的数据就证明OK了!
在这我们就已经将hibernate 基本整合好了!
第三步:整合Struts2
引⼊下列jar包:
struts2-core-2.3.1.2.jar struts2-spring-plugin-2.3.1.2.jar xwork-core-2.3.1.2.jar
commons-io-2.0.1.jar commons-lang-2.5.jar
ognl-3.0.4.jar freemarker-2.3.18.jar commons-logging-api-1.1.jar commons-fileupload-1.2.2.jar 在WEB-INF⽬录下,创建并编辑web.xml⽂件:
[html]view plaincopyprint?
1.
2.
/xml/ns/javaee" xmlns:web="/doc/af13914945.html /xml/ns/javaee/web-app_2_5.xsd"
4.xsi:schemaLocation="/doc/af1391494
5.html
/xml/ns/javaee http://java.sun.co
m/xml/ns/javaee/web-app_3_0.xsd"
5.id="WebApp_ID" version="3.0">
6.
7.SSHBase1.0
8.
9.
10.index.jsp
11.
12.
13.
14.contextConfigLocation
15./WEB-INF/classes/ApplicationContext.xml
16.
17.
.springframework.web.context.ContextLoaderListene
r
19.
20.
21.
22.struts2
.apache.struts2.dispatcher.FilterDispatcher
-class>
24.
25.
26.
27.struts2
28./*
29.
30.
31.
在src下创建配置⽂件struts.xml:
1.
2.
3. "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
4. "/doc/af1391494
5.html
/dtds/struts-2.0.dtd">
5.
6.
7.
8.
9.
10.
11.
12.
13./index.jsp
14.
15.
16.
17./hello.jsp
18.
19.
20.
接下来,创建相应的Action,(注意此处可能需要⼿动引⼊服务器的Server Runtime 库),例如: [java]view plaincopyprint?
1.import javax.servlet.http.HttpServletRequest;
2.
3.import org.apache.struts2.ServletActionContext;
4.
5.import com.opensymphony.xwork2.ActionSupport;
6.public class HelloAction extends ActionSupport {
7.
8.private static final long serialVersionUID = 1L;
9.private IPersonDao dao;
10.
11./*
12. * 测试⽅法 spring 值注⼊顺序是按照配置⽂件值的顺序注⼊
14.public String getPerson() {
15. System.out.println(dao);
16. HttpServletRequest request = ServletActionContext.getRequest();
17. request.getSession().setAttribute("personlist", dao.getAll());
18.return"SUCCESS";
19. }
20.
21.public IPersonDao getDao() {
22.return dao;
23. }
24.
25.public void setDao(IPersonDao dao) {
26.this.dao = dao;
27. }
28.
29.}
然后在spring的配置⽂件⾥,配置相应的class bean:
[html]view plaincopyprint?
1.
2.
3.
接下来创建个页⾯来进⾏测试,可在WebContent下⾯创建⼀个hello.jsp页⾯:[html]view plaincopyprint?
1.<%@ page language="java" contentType="text/html; charset=utf-8"
2.pageEncoding="utf-8"%>
3.
4.01 Transitional//EN" "http://www.w
/doc/af13914945.html
/TR/html4/loose.dtd">
4.
5.
6.
7.
8.
9.
10.测试OK
12.姓:
13.${personlist}
14.
15.
16.
最后,启动服务器,在浏览器中输⼊:http://localhost:8080/SSHBase/helloAction,就可以看到我们数据库⾥的数据了。

⾄此,最基本的SSH已经整合完毕!
整个项⽬的代码我已经打包上传,欢迎下载,链接如
下:/doc/af13914945.html
/detail/neareast/4223692。

相关文档
最新文档