S2SH框架配置步驟

  如今開發的一個項目使用S2SH框架,配置環境用了一兩天,如今把當時配置環境時寫的文檔整理下發出來,也算增強點記憶。
          html

開發環境

Ø         MyEclipse5.5 java

Ø         JDK 1.6 web

Ø         Java EE 5.0 spring

Ø         Tomcat6.0 sql

Ø         Struts2.1.6 數據庫

Ø         Spring2.5.6 express

Ø         Hibernate3.3.1
apache

 

ssh作好準備

2.1下載包

Ø         Struts2.1.6包下載: api

       http://struts.apache.org/download.cgi#struts216 tomcat

Ø         Hibernate3.3包下載:

https://www.hibernate.org/6.html

Ø         Spring2.5下載:

http://www.springsource.org/download

 

2.2搭建開發環境

       打開MyEclipse,新建一個web project,如圖:

       注意:J2ee版本設爲java ee 5.0



  

點擊Finish完成,建好的工程如圖:



 

若是你的myeclipse尚未配置一個web服務器,那就進行下面的步驟,這裏以tomcat6爲例:

打開 MyEclipse à Preferences 窗口,展開目錄樹以下圖:

 

設置好你的tomcat6的路徑便可,前提你要先安裝好tomcat哦。還有須要注意的一點是,看到目錄樹tomcat6.x下面的JDK了嗎?點擊它,也要把tomcat的JDK設爲jdk1.6才行,以與myeclipse一致。

       好了,工程已經建好了,下面就開始配置struts吧。配置以前先把struts的包下載下來哦,下載地址上面已經給出了。

 

配置Struts2.0

3.1 基礎配置

 

       1)引入Struts必需的五個jar包。下載struts-2.1.6-all.zip解壓後,struts-2.1.6\lib目錄下是struts全部的相關jar包。這麼多jar包並非struts必須得,使用struts只須要把下面五個引入便可,之後用到什麼jar包,再引入。
 

²        Commons-logging-1.0.4.jar

²        Freemarker-2.3.13.jar

²        Ognl-2.6.11.jar

²        Struts2-core-2.1.6.jar

²        Xwork-2.1.2.jar

 

2)修改WEB-INF下的web.xml文件,增長struts2的配置。增長代碼以下:這些配置代碼對於struts2是不變的,直接複製到web.xml便可。

< filter >
        
< filter-name > struts2 </ filter-name >
        
< filter-class >
    org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
        
</ filter-class >
    
</ filter >
    
< filter-mapping >
        
< filter-name > struts2 </ filter-name >
        
< url-pattern > /* </ url-pattern >
    
</ filter-mapping >

 

3)添加struts配置文件。 在WEB-INF/classes目錄下,新建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 >
</ struts >

 

好了,struts基本配置完畢,是否是很簡單?

如今把工程發佈到tomcat上去測試一下,在工程名字上點擊右鍵,選擇MyEclipseàAdd and Remove project Deployments,在打開的窗口裏,點擊Add,選擇咱們以前配置好的tomcat6服務器,以下圖:


 

發佈好了,啓動tomcat,若是啓動無異常,則說明配置成功。

注意:可能會出現struts-default.xml相關異常,根據提示引入相關jar包。我測試的時候是缺乏fileupload相關jar包,因而引入了commons-fileupload-1.2.1.jar

 

3.2 配置一個Action

下面開始配置一個Action吧,以用戶登陸爲例:

1)首先新建一個登錄頁面login.jsp,代碼以下:

<% @ page language="java" import="java.util.*" pageEncoding="UTF-8" %>
<% @ taglib prefix="s" uri="/struts-tags"  %>
<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" >
< html >
  
< head >
    
< title > 登陸 </ title >
    
< meta  http-equiv ="pragma"  content ="no-cache" >
    
< meta  http-equiv ="cache-control"  content ="no-cache" >
    
< meta  http-equiv ="expires"  content ="0" >     
  
</ head >
  
< body >
   
< s:form  name ="form1"  action ="login"   >
       
< s:textfield   name ="username"  label ="username"   ></ s:textfield >
       
< s:password  name ="password"  label ="password"   ></ s:password >
       
< s:submit  label ="submit" ></ s:submit >
   
</ s:form >
   
< s:actionerror />
  
</ body >
</ html >

 

2)在咱們已經建好的struts.xml中來配置登陸的action。這裏定義登陸action的名字爲login,配置代碼以下:

<? 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 >
    
< package  name ="struts2"  extends ="struts-default" >
        
< action  name ="login"  class ="test.LoginAction" >
            
< result  name ="success"  type ="redirect" > index.jsp </ result >
            
< result  name ="input" > login.jsp </ result >
            
< result  name ="error" > login.jsp </ result >
        
</ action >
    
</ package >
</ struts >
 

3)下面就來編寫具體的action類了。代碼以下:


 1 package  test;
 2 import  com.opensymphony.xwork2.ActionSupport;
 3 public   class  LoginAction  extends  ActionSupport  {
 4    public String username;
 5    public String password;
 6    public String execute(){
 7        if(!username.equals("admin")){
 8            super.addFieldError("username""用戶名錯誤!");
 9            return ERROR;
10        }

11        if(!password.equals("001")){
12            super.addFieldError("password""密碼錯誤!");
13            return ERROR;
14        }

15        return SUCCESS;
16    }

17    public void validate(){
18        if(username==null||username.length()==0){
19            super.addActionError("用戶名不能爲空");
20        }

21        if(password==null||password.length()==0){
22            super.addActionError("密碼不能爲空");
23        }

24    }

25}

26

 

4)好了,一個Action就建立完成了,重啓tomcat測試一下吧。若是第一次使用struts,你可能你明白上面的代碼,之後慢慢學習便可,如今先來看一下效果吧。

打開登陸頁面http://localhost:8080/test/login.jsp,輸入正確或錯誤的用戶名和密碼,看看有什麼提示。

 

配置Hibernate

4.1 基礎配置

1)        導入最小jar包,即便用Hibernate3所必需的jar包。下載hibernate-distribution-3.3.1.GA解壓後,必需jar包都在lib"required目錄下。必需jar包以下:

²        hibernate3.jar-----------------------------核心類庫

²        antlr-2.7.6.jar-----------------------------代碼掃描器,用來翻譯HQL語句

²        commons-collections-3.1.jar----------- Apache Commons包中的一個,包含了一些Apache開發的集合類,功能比java.util.*強大

²        dom4j-1.6.1.jar----------------------------是一個JavaXML API,相似於jdom,用來讀寫XML文件的

²        javassist-3.4.GA.jar----------------------- Javassist 字節碼解釋器

²        jta-1.1.jar------------------------------------標準的JTA API

²        slf4j-api-1.5.2.jar

²        slf4j-nop-1.5.2.jar

 

1)        建立Hibernate配置文件。在WEB-INF"calsses目錄下(工程的src包下)新建hibernate.cfg.xml。這是hibernate鏈接數據庫的配置文件。這裏以鏈接Oracle爲例:


<? xml version='1.0' encoding='UTF-8' ?>
<! DOCTYPE hibernate-configuration PUBLIC
          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
       "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"
>

< hibernate-configuration >
    
< session-factory >
        
< property  name ="connection.driver_class" >
            oracle.jdbc.driver.OracleDriver
        
</ property >
        
< property  name ="connection.url" >
            jdbc:oracle:thin:@192.168.0.141:1521:TEST
        
</ property >
        
< property  name ="myeclipse.connection.profile" > TEST </ property >
        
< property  name ="connection.username" > test </ property >
        
< property  name ="connection.password" > test </ property >
        
< property  name ="dialect" >
            org.hibernate.dialect.Oracle9Dialect
        
</ property >
        
< property  name ="show_sql" > true </ property >
        
< mapping  resource ="test/hibernate/TUser.hbm.xml"   />
    
</ session-factory >
</ hibernate-configuration >

 

1)        建立Session工廠類HibernateSessionFactory

讓咱們先了解一下Session, Hibernat 對數據庫的操做是經過Session來實現的,這裏的session不一樣於頁面間傳遞參數的session,而是相似於JDBC中的ConnectionSessionHibernate運做的中心,對象的生命週期、事務的管理、數據庫的存取都與session息息相關。

Session是由HibernateSessionFactory建立的,是線程安全的,可讓多個執行線程同時存取HibernateSessionFactory而不會有數據共享的問題,但不能讓多個線程共享一個Session

HibernateSessionFactory能夠用myeclispe自動建立,這裏就不貼出代碼了。

    注意:別忘了把數據庫驅動包引入到工程中。對於oracleclass12.jar

 

4.2 示例

        這個本身去測試一下吧。
 

配置Spring2.5

5.1 基礎配置

1)        導入spring包。下載spring-framework-2.5.6並解壓後,在spring-framework-2.5.6"dist目錄下找到spring.jar,引入到工程中。

說明:spring.jar是包含有完整發布的單個jar包,spring.jar中包含除了 spring-mock.jar裏所包含的內容外其它全部jar包的內容,由於只有在開發環境下才會用到spring-mock.jar來進行輔助測試,正式應用系統中是用不得這些類的。除了spring.jar文件,Spring還包括有其它13個獨立的jar包,各自包含着對應的Spring組件,用戶能夠根據本身的須要來選擇組合本身的jar包,而沒必要引入整個spring.jar的全部類文件。這裏,爲了使用方便,咱們引入整個spring.jar

2)        配置web.xml文件。Jar包引入完成後,就開始配置spring了,首先修改web.xml文件,增長以下代碼:

     <!--  
* 從類路徑下加載spring的配置文件, 多個配置文件能夠用逗號和空格區分
* classpath: 關鍵字特指類路徑下加載
-->
    
< context-param >
        
< param-name > contextConfigLocation </ param-name >
        
< param-value >
            classpath*:spring/applicationContext*.xml
        
</ param-value >
    
</ context-param >

 

在這裏,咱們指定了spring配置文件的路徑,即WEB-INF/classes/spring目錄下的全部以applicationContext開頭命名的xml文件。

3)        src下面新建applicationContext.xml文件。首先給這個文件加上spring的標頭:

<? xml version="1.0" encoding="UTF-8" ?>
< beans  xmlns ="http://www.springframework.org/schema/beans"
         xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
         xmlns:aop
="http://www.springframework.org/schema/aop"
         xmlns:tx
="http://www.springframework.org/schema/tx"
         xsi:schemaLocation
="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"
>
</ beans >

 

注意:標頭是2.5 不要引入2.0 錯了可能Spring就不能正確加載。


 

5.2 示例

       Spring基本配置完畢,讓咱們建個示例來測試一下吧,首先在test.spring包下建立兩個java文件:TUser.javaSpringTest.java

TUser.java:


 1 package  test.spring;
 2
 3 public   class  TUser  implements  java.io.Serializable  {
 4    private String username;
 5    private String allname;
 6    private String address;
 7
 8    public String getUsername() {
 9        return this.username;
10    }

11    public void setUsername(String username) {
12        this.username = username;
13    }

14    public String getAllname() {
15        return this.allname;
16    }

17    public void setAllname(String allname) {
18        this.allname = allname;
19    }

20    public String getAddress() {
21        return this.address;
22    }

23    public void setAddress(String address) {
24        this.address = address;
25    }

26}

27
 

SpringTest.java:


 1 package  test.spring;
 2
 3 import  org.springframework.context.ApplicationContext;
 4 import  org.springframework.context.support.ClassPathXmlApplicationContext;
 5
 6 public   class  SpringTest  {
 7    public static void main( String[] args ) {
 8        //加載spring配置文件,初始化IoC容器
 9        ApplicationContext ac = new ClassPathXmlApplicationContext("spring/applicationContext.xml");
10        //從容器 接管Bean
11        TUser user = (TUser) ac.getBean("TUser");
12        //輸出歡迎信息
13        System.out.println( "Hello:" + user.getUsername() + ";u is in " + user.getAddress() + " ; and u is  " + user.getAllname() );
14    }

15}

16
 

建立完畢後,就剩最後一步了,在applicationContext.xml中配置一個bean,在xml中增長以下代碼:

< bean  id ="TUser"  class ="test.spring.TUser" >
        
< property  name ="username"  value ="小張" ></ property >
        
< property  name ="allname"  value ="張三" ></ property >
        
< property  name ="address"  value ="青島市" ></ property >
    
</ bean >

 

好了,下面運行一下吧,右鍵單擊SpringTest.java選擇run as àJava Application,運行結果以下:



 

若是你的運行結果和上面同樣,且沒有異常,則說明Spring配置成功了。是否是很簡單?不要驕傲,重要的是SpringHibernateStruts的整合。繼續吧!


 

5.3 整合Struts

       SpringStruts的整合其實就是把StrutsAction類交給Spring來管理,下面開始吧!

1)        導入jar包。在Struts2.1.6lib目錄中找到struts2-spring-plugin-2.1.6.jar,引入到工程中。

2)        配置web.xml文件。在web.xml中加入如下代碼:


 
< listener >

     
< listener-class >

         org.springframework.web.context.ContextLoaderListener

     
</ listener-class >

 
</ listener >

 

1)        如今就來看如何把strutsaction交給spring。以struts示例中的login.action爲例,首先建立一個LoginAction類的Bean。在applicationContext.xml中增長以下代碼:

<bean id="loginAction" class="test.action.LoginAction" scope="prototype">

</bean>

這裏,咱們把這個beanid設爲loginActionScope設爲prototype,含義是每一次請求建立一個LoginAction類的實例,Scope還有另外一個值「singleton」意爲「單例模式」。


 

接下來修改struts.xml文件,把原來login.action的配置作以下修改:

<action name="login" class=" test.action.LoginAction ">

改成

<action name="login" class="loginAction">

注意到有什麼區別了嗎?class值設爲了loginAction,即LoginAction類的beanID。這樣咱們就把LoginAction類交給了spring管理。至於具體是怎麼處理的,祕密在struts2-spring-plugin-2.1.6.jar中,有空本身就去研究吧,如今會用就能夠了。


 

5.4 整合Hibernate

       Spring整合Hibernate主要是對hibernateSession進行管理,包含Session的建立、提交、關閉的整個生命週期。Spring對事務的管理應用了AOP的技術,配置前請先了解一下AOP的知識。

1)        配置sessionFactoryspring來建立Session。在applicationContext.xml中增長以下代碼:

<!--  配置sessionFactory  -->

 
< bean  id ="sessionFactory"  class ="org.springframework.orm.hibernate3.LocalSessionFactoryBean" >

     
< property  name ="configLocation" >

         
< value > classpath:spring/hibernate.cfg.xml </ value >

     
</ property >    

 
</ bean >    

       咱們原來是用HibernateSessionFactory.java來建立Session的,如今刪除便可,交給Spring建立。這裏,建立了一個Session工廠類的Bean,其ID爲「sessionFactory」。

2)        配置事務管理器。增長以下代碼:

  <!--  配置事務管理器  -->

 
< bean  id ="transactionManager"  class ="org.springframework.orm.hibernate3.HibernateTransactionManager" >

     
< property  name ="sessionFactory" >

         
< ref  bean ="sessionFactory" />

     
</ property >    

 
</ bean >

       這裏建立了一個idtransactionManager的事務管理器,它匹配一個session工廠,<ref bean="sessionFactory"/>這個sessionFactory是指session工廠的ID

3)        對事務管理器進行事務設置。增長以下代碼:

< tx:advice  id ="smAdvice"  transaction-manager ="transactionManager" >

     
< tx:attributes >

         
< tx:method  name ="save*"  propagation ="REQUIRED" />

         
< tx:method  name ="del*"  propagation ="REQUIRED" />

         
< tx:method  name ="update*"  propagation ="REQUIRED" />

     
</ tx:attributes >

 
</ tx:advice >

       這裏建立了一個advice(通知),對事務管理器進行事務設置,這裏意思是指,對於以savedelupdate開頭的方法應用事務。

4)        下面就把事務應用到具體的類。看以下代碼:

< aop:config >

     
< aop:pointcut  id ="smMethod"  

expression
="execution(* test.service.impl.*.*(..))" />

     
< aop:advisor  pointcut-ref ="smMethod"  advice-ref ="smAdvice" />

 
</ aop:config >

       這裏配置的做用是把咱們上面建立的advice應用到具體的類中。以上代碼的意思指,給test.service.impl下的全部類的全部方法應用smAdvice

5)        示例:使用Session

     配置基本完畢了,本身去測試吧,這裏就不先寫了。
相關文章
相關標籤/搜索