java最新框架技術,新鮮出爐--Struct2、Hibernate3、Spring3框架搭建實戰

 2023-10-21 阅读 29 评论 0

摘要:采用目前最新的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做開發環境,參考了前輩的一篇相關文章,改正了其中的錯誤和疏漏,克服

采用目前最新的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根目錄),下面是基本結構

<?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>

再寫一個測試類,來進行測試:

import org.springframework.beans.factory.xml.XmlBeanFactory; import org.springframework.core.io.FileSystemResource; public class testSpring { public static void main(String[] args) { // TODO Auto-generated method stub XmlBeanFactory beansfactory = new XmlBeanFactory(new FileSystemResource("src/ApplicationContext.xml")); System.out.println(beansfactory); Person nike = (Person)beansfactory.getBean("nike"); System.out.println(nike); } }

運行效果應該看到: name : XXX age : 18

這就證明搭建好了,beans已經自己創建。

第二步:整合hibernate

需要的包如下:

java最新框架技術、

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的數據庫)

<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/mytest?characterEncoding=UTF-8"/><!-- 連接字符串--> <property name="username" value="root" /><!-- 賬號--> <property name="password" value="root"/><!-- 密碼--> </bean> <!-- 配置sessionFactory 配置 --> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="annotatedClasses" > <list> <value>com.neareast.test.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="personDao" class="com.neareast.test.PersonDao"> <property name="sessionFactory" ref="sessionFactory"></property> </bean>


然后修改一下剛才的Person類,并加上注解,就可以用了:

import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table(name="person") public class Person { @Id @Column(unique=true,name="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 setId(int id ){ this.id = id; } public void setAge(int age){ this.age=age; } 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); }

Mybatis框架、

其實現如下:

import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.SessionFactory; 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; } }

然后再寫一個簡單的用例來測試:

import org.springframework.beans.factory.xml.XmlBeanFactory; import org.springframework.core.io.FileSystemResource; public class TestHibernate { public static void main(String[] args) { XmlBeanFactory beansfactory = new XmlBeanFactory( new FileSystemResource("src/ApplicationContext.xml")); PersonDao persondao = (PersonDao) beansfactory.getBean("personDao"); Person person = new Person(); person.setAge(123); person.setName("哈哈哈"); persondao.createPerson(person); System.out.println(persondao.getAll().size()); } }

由于數據表設置成自動更新,在沒有表的情況下,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文件:

<?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>SSHBase1.0</display-name> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/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> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>

在src下創建配置文件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="myPackage" extends="struts-default"> <action name="index"> <result>/index.jsp</result> </action> <!-- 第一個測試的 --> <action name="helloAction" class="hello" method="getPerson"> <result name="SUCCESS">/hello.jsp</result> </action> </package> </struts>

接下來,創建相應的Action,(注意此處可能需要手動引入服務器的Server Runtime庫),例如:

import javax.servlet.http.HttpServletRequest; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport; public class HelloAction extends ActionSupport { private static final long serialVersionUID = 1L; private IPersonDao dao; /* * 測試方法 spring 值注入順序是按照配置文件值的順序注入 */ public String getPerson() { 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; } }

然后在spring的配置文件里,配置相應的class bean:

<bean id="hello" class="com.neareast.test.HelloAction"> <property name="dao" ref="personDao"></property> </bean>

接下來創建個頁面來進行測試,可在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/SSHBase/helloAction,就可以看到我們數據庫里的數據了。

至此,最基本的SSH已經整合完畢!

整個項目的代碼我已經打包上傳,歡迎下載,鏈接如下:?http://download.csdn.net/detail/neareast/4223692

轉載于:https://www.cnblogs.com/JPAORM/archive/2012/04/13/2509771.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/4/154106.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息