SSH框架搭建過程


什么是SSH?

SSH對應 struts spring hibernate
struts 采用MVC模式,主要是作用於用戶交互
spring 采用IOC和AOP~作用比較抽象,是用於項目的松耦合
hibernate 是對象持久化框架,其實就是實體類和數據庫表建立關系,操作類就會觸發相應的sql語句,可以不用寫任何sql語句,完成數據庫編程(引自百度知道)

SSH就是Struts + Spring + Hibernate 3個Java框架的集合,現在Java開發中常用的框架組合。用來開發后台,與前台和數據庫進行數據交互。最初學這個是為了寫JSP。

 

事先需要做的准備工作:

 

1.安裝jdk,這里就不多說了,我使用的是jdk1.8

 

2.需要用到的工具:eclipse,mysql等等

 

好,接下來我們就開始創建項目了。

 

第一步:創建一個叫做ssh的項目吧。但是得提醒大家不要忘記勾選web.xml文件,請看如下截圖。

 

 

 

 

 

第二步:搭建struts2環境

 

首先;引入struts2的包

 

 

接下來需要修改WEB-INF里面的web.xml文件

 

 

 

 

由於待會我們就要引入spring了,所以這個監聽器我們這里一塊配置

 

第三小步就是添加我們的struts.xml文件了

 

 

 

接下來我們需要創建一個action類,名字就叫做indexAction吧

 

中間的話我們先相應的建一個dao類和service類

 

 

剛剛的那個注入,也就替換了以前的new對象。

 

接下來我們來先建jsp文件,我們先不寫里面的內容,只是把流程弄出來

 

第三步:搭建spring和hibernate的環境

 

首先我們也是需要導包的

 

 

這里我們的文件和源碼是不需要導進來的

 

 

到這里包並沒有導完,還需要導struts2-spring的包

 

如下:

 

 

接着我們導hibernate需要的包

 

 

接着我們來看看我們的實現類

 

 

同理dao的實現類也是一樣的

 

 

 

 

hibernate包導完了我們就可以用sessionFactory注入了

 

接下來我們編寫applicationContext.xml文件

 

 

 

看到實體類的映射文件我這里就隨便舉個例子說下

 

 

接着我們繼續弄applicateContext.xml文件

 

 

如上圖那樣的話我們需要在自己寫一份jdbc的屬性,所以我們需要在頭部導入

 

 

接着我們需要創建一份jdbc.properties

 

 

現在我們來運行,發現程序報錯了

 

 

然后發現是c3p0的架包沒有導入

 

 

再來運行

 

 

看到這里我們就知道框架搭建成功了

 

 下面是我畫的一張流程圖,大家可以參考下

 

 

接下來我來跟大家分享用EntityManagerFactory來實現上面一樣的功能

 

由於這樣的話我們需要在dao的實現類注入EntityManagerFactory,

 

代碼如下:

 

復制代碼
package dao; import java.util.List; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.PersistenceContext; import entity.BookCard; public class IndexDaoImpl implements IndexDao { //注入: //private SessionFactory sf; //public void setSf(SessionFactory sf) { //this.sf = sf; //}  @PersistenceContext private EntityManagerFactory emf; public void setEmf(EntityManagerFactory emf) { this.emf = emf; } @Override public List<BookCard> getAllBookCard(){ //這個是沒有交給spring去做的實例化對象 //sf=new Configuration().configure().buildSessionFactory(); //Session session=sf.openSession();//實例化session //session.beginTransaction();//實例化一個事務 /*List<BookCard> list= session.createQuery("from BookCard").getResultList(); session.getTransaction().commit(); session.close(); //sf.close(); */ EntityManager entityManager=emf.createEntityManager(); List<BookCard> list=entityManager.createQuery("from BookCard",BookCard.class).getResultList(); entityManager.close(); //emf.close(); return list; } }
復制代碼

 

大家可以做個對比,其實大同小異

 

但是EntityManagerFactory需要persistence.xml

 

 

代碼如下

 

復制代碼
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0"  
    xmlns:persistence="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence persistence_2_1.xsd "> <persistence-unit name="jpa" transaction-type="RESOURCE_LOCAL"> <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider><!-- 驅動實現類,入口類 --> <mapping-file>entity/BookCard.hbm.xml</mapping-file> <properties> <!-- Common properties --> <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect"></property> <property name="hibernate.show_sql" value="true"></property> <property name="hibernate.format_sql" value="true"></property> <property name="hibernate.hbm2dll.auto" value="update"></property> <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"></property> <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/CardDB"></property> <property name="hibernate.connection.username" value="root"></property> <property name="hibernate.connection.password" value="123456"></property> </properties> </persistence-unit> </persistence>
復制代碼

 

當然也別忘了applicationContext.xml里面需要配置,如下:

 

<bean id="myEntityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">  
        <property name="persistenceUnitName" value="jpa" />  
    </bean> 

 

這里還需要說的一個就是,如果實體類.hbm.xml刪除了,那就要配着注解才可以使用。

 

下面是實體類的映射文件,如下:

 

復制代碼
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="entity"> <!-- 這里的名和數據庫那邊一一對應,不寫則默認一樣 --> <class name="BookCard" table="BookCard"> <id name="cid" column="cid"> <generator class="increment"/> </id> <property name="name"></property> <property name="sex"></property> <property name="cardDate" column="cardDate"></property> <property name="deposit"></property> </class> </hibernate-mapping>
復制代碼

 

再次聲明一下,如果刪除了映射文件,那么就要在實體類那邊注解。

 

 現在,我們把實體類的映射文件刪了,但是我們要在實體類那邊加上注解,如下:

 

 

 

復制代碼
package entity; import java.math.BigDecimal; import java.util.Date; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table(name="BookCard")//如果不加則表明類名和表名相同 public class BookCard { private int cid ; private String name; private String sex ; private Date cardDate; private BigDecimal deposit; public BookCard() { super(); } public BookCard(String name, String sex, Date cardDate, BigDecimal deposit) { super(); this.name = name; this.sex = sex; this.cardDate = cardDate; this.deposit = deposit; } @Id @GeneratedValue(generator="increament") public int getCid() { return cid; } public void setCid(int cid) { this.cid = cid; } @Column public String getName() { return name; } public void setName(String name) { this.name = name; } @Column public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } @Column public Date getCardDate() { return cardDate; } public void setCardDate(Date cardDate) { this.cardDate = cardDate; } @Column public BigDecimal getDeposit() { return deposit; } public void setDeposit(BigDecimal deposit) { this.deposit = deposit; } }
復制代碼

 

運行結果如下:

 

 

 

 

 

 

 


SSH框架搭建步驟很多,但是不難,因為MyEclipse已經幫我們做了大部分的工作,如果純手動添加這個框架的話,那真是夠復雜的了。不過涉及的知識挺多的,適合有一定基礎的人。下面詳細介紹一下SSH框架的搭建步驟並且解決了幾個我在搭建過程中遇到的問題。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM