《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 設計應用 > SSH框架在Web項目開發中的構建和應用實踐
SSH框架在Web項目開發中的構建和應用實踐
來源:微型機與應用2013年第15期
張耀民
(陜西工商職業學院 計算機與信息管理系,陜西 西安 710119)
摘要: 針對目前Web項目開發面臨的諸多問題,結合當今流行的SSH(Struts+Spring+Hibernate)開源框架,通過如何進行環境搭建、配置文件設置、開發流程描述等,給出了進行Web項目開發的全過程,以幫助項目初學者和開發人員快速搭建架構清晰、可復用性好、維護方便的企業級Web項目。最后,通過具體案例實施說明方案的可行性。
Abstract:
Key words :

摘  要: 針對目前Web項目開發面臨的諸多問題,結合當今流行的SSH(Struts+Spring+Hibernate)開源框架,通過如何進行環境搭建、配置文件設置、開發流程描述等,給出了進行Web項目開發的全過程,以幫助項目初學者和開發人員快速搭建架構清晰、可復用性好、維護方便的企業級Web項目。最后,通過具體案例實施說明方案的可行性。
關鍵詞: Web;Struts;Spring;Hibernate SSH

 大、中型企業級Web項目開發通常需要有一個良好的軟件架構,便于協同工作和擴展升級,而傳統的開發模式在一定程度上滿足不了這些要求。本文結合當今主流的框架技術:基于MVC模式的Struts框架、基于IoC模式的Spring框架以及對象/關系映射框架Hibernate,通過如何將這3種規范進行有機整合,形成SSH框架[1-2],使他們之間既相對獨立,又相互協作,是要思考的問題。
1 框架技術
 Java框架如同建筑中的框架式結構。使用了框架(鋼筋+混凝土)以后,所專注的只是業務(非承重墻構建不同格局),當然是在遵守框架的協議上開發業務。好的框架都是松耦合的、易配置的。正如著名的軟件大師RALPH JOHNSON對框架(Framework)進行了如下的定義:框架是整個系統或系統的一部分可重用設計,由一組抽象的類及其實例間的相互作用方式組成[3]。
 通俗一點講:“為了完成一個整體功能,對實現這個功能的Java類的一種分工規范。”這種思想在多人合作開發一個大、中型項目時尤為必要。
2 軟件環境搭建及注意事項
2.1 JAVA安裝與配置JDK(Java Development Kit)

 運行下載的“jdk-6u10-rc2-bin-b32-windows-i586-p-12_sep_2008.exe”軟件包,在安裝過程中可以設置安裝路徑及選擇組件,默認的組件選擇是全部安裝,安裝成功后一定要注意環境變量JavaHome、path、classpath配置和編輯[4]。具體配置如下:
 系統變量:JavaHome,值為“D:\Program Files\Java\ jdk1.6.0_10”(即jdk安裝的主目錄)。
 系統變量:path,在“變量值”欄的命令后添加“;%JavaHome%\bin”。
 系統變量:classpath,值為“.;%JavaHome%\lib”,其中“.”表示當前目錄。
 設置完上述3個變量后,單擊“開始”—“所有程序”—“附件”—“命令提示符”打開DOS窗口,在命令行提示符后輸入“java”或“javac”回車后,如果出現其用法參數提示信息,則安裝正確。
2.2 數據庫安裝(Mysql)
 運行下載的“mysql-essential-5.0.87-win32.msi”軟件包,在安裝過程中選擇“Custom”安裝類別,可方便熟悉安裝過程。可以自定義安裝路徑,建議不要放在與操作系統同一分區,這樣可以防止系統備份還原的時候,數據被清空。設置完后,按“Install”開始安裝,直到出現“finish”界面。在“finish”界面,選中“Configure the Mysql Server now”,點“Finish”結束軟件的安裝并啟動mysql配置向導。選擇“Detailed Configuration” 配置方式,方便熟悉配置過程。在選擇服務器類型時選“Server Machine”。在數據庫的大致用途時選擇“Multifunctional Database”,按“Next”繼續。在選擇網站的一般mysql訪問量時選“Decision Support(DSS)/OLAP)”,按“Next”繼續。在對mysql默認數據庫語言編碼進行設置,選擇第3個,然后在Character Set下選擇或填入“gbk”,當然也可以用“gb2312”,就可以正常的使用漢字(或其他文字)了,否則不能正常顯示漢字。這里選“gb2312”,按“Next”繼續,設置完畢,直到“Finish”界面。按“Finish”結束,mysql的安裝與配置就啟動了。注意,這里有一個常見的錯誤,最后一步不能“Start service”,出現這種現象是以前安裝過mysql在服務器上,解決的辦法是先保證以前安裝的mysql服務器徹底卸載掉或檢查是否按上一步所說,之前的密碼是否有修改,照上面的操作;如果依然出錯,將mysql安裝目錄下的data文件夾備份,然后刪除,在安裝完成后,將安裝生成的data文件夾刪除,備份的data文件夾移回來,再重啟mysql服務就可以了,這種情況下,需要將數據庫檢查一下,然后修復一次,防止數據出錯。
2.3 安裝Apache Tomcat
 直接將下載的“apache-tomcat-7.0.5”文件復制到指定路徑(可以不放置在jdk安裝的目錄中)。按照安裝向導進行安裝,中間須注意選擇Tomcat運行所需的jre,沒有jre將不能進行后續安裝,直到出現“Finish”界面。
2.4 Myeclipse安裝與設置
 運行下載的“myeclipse-10.1-offline-installer-windows.exe”軟件包,在安裝過程中可以設置安裝路徑及選擇組件,完成后進行preferences設置:進入window—Preferences,在type filter text過濾器中輸入要配置的東西:首先設置默認的全局JRE;其次設置工作空間全局編碼:選擇UTF-8;最后修改文件默認編碼。否則對于漢字容易出現亂碼。
 最后,若已經安裝了Tomcat,在MyEclipse中配置Tomcat。從Preferences左側菜單下找到MyEclipse,打開其中的Servers項,找到Tomcat,選擇安裝的版本,此處可選擇“Tomcat7.x”,將其設為Enable,在Browse...目錄下選擇Tomcat的安裝目錄即可。
 到此,框架的運行環境基本就搭建起來了,接下來開始進行配置文件的設置。
 3 SSH(Struts+Spring+Hibernate)框架配置文件設置
首先創建Java-Web Project工程(工程名為Demo1),為了以后不要再找包,把所有的包都復制到/WebRoot /WEB-INF/lib目錄下,在以后用到時直接導入。
3.1 配置Struts[5]
 (1)創建struts.xml文件(注意:一定要在src根目錄下)
struts.xml文件主要負責管理應用中的Action映射,以及該Action包含的Result定義等。struts.xml內容主要包括:Action、Interceptor、Packages和Namespace等。
代碼如下:
<?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"/>
    <package name="front" extends="struts-default"
namespace="/">
        <action name="init" class="com.snbcedu.
system.UserAction" method="init">
            <result name="success">/WEB-INF/init.
jsp</result>
        </action>
    </package>
</struts>
(2)配置web.xml文件,添加Struts的核心控制器
代碼如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-
instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <display-name></display-name>    
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
    <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>
    <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>
</web-app>
 測試發布,Struts2開發環境配置完畢。每當配置完成一個開發組件時,在tomcat發布一下,以便容易查找錯誤,否則全部環境配置完畢,不便于查錯。
3.2 配置Spring
 創建Spring配置文件applictionContext.xml,Spring如何知道Hibernate的存在,這就是Spring的魅力所在,它讓依賴性的綁定變得非常簡單。
 applicationContext.xml代碼如下:
<?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:context="http://www.springframework.org/schema/context"
    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-3.0.xsd
                http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
                http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
                http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"
                default-autowire="byName">
    <context:annotation-config/>
    <context:component-scan base-package="com.snbcedu.system"/>
    <context:property-placeholder
        location="WEB-INF/classes/jdbc.properties"/>
    <bean id="dataSource"
        class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName"value="
${driverName}"></property>
        <property name="url" value="${url}"></property>
        <property name="username"value="${username}"
></property>
        <property name="password"value="${password}"><
/property>
        <property name="maxActive"value="30">
</property>
        <property name="maxIdle" value="10"></property>
        <property name="minIdle" value="5"></property>
        <property name="maxWait"value="5000">
</property>
    </bean>
    <bean id="sessionFactory"
    class="org.springframework.orm.hibernate3.annotation.
AnnotationSessionFactoryBean">
        <property name="dataSource">
            <ref bean="dataSource"/>
        </property>
         <property name="packagesToScan">
            <list>
                <value>com.snbcedu.system</value>        
            </list>
        </property>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org
.hibernate.dialect.MySQLDialect</prop>
            <prop key="hibernate.format_sql">true</prop>
            <prop key="hibernate.show_sql">true</prop>
            </props>
        </property>
    </bean>
</beans>
3.3 配置Hibernate
 在此之前先創建數據庫,接下來進行jdbc.properties配置,代碼如下:
 driverName=com.mysql.jdbc.Driver
 url=jdbc\:mysql\://localhost\:3306/security
 username=root
 password=870928
4 Web項目開發步驟

 


 在具體開發前要做的預備工作:用mysql先創建一個security數據庫,然后創建user表和userinfo表,完成后按照下述步驟進行項目開發。
 (1)創建項目(file-new-web project)Demo1。
 (2)復制java類庫(import或者直接從已有的項目中復制,放置在WebRoot-(WEB-INF)-Lib中。
 (3)在src下建立包。選中src,點右鍵:依次new-package,輸入包名,如:com.snbcedu.system(必須以com開始)。接下來依次創建applicationContext.xml,jdbc.properties(DB配置),struts.xml配置。
 (4)創建文件夾src/entity,選中項目名,點右鍵依次選擇new-source folder。在此文件夾下首先創建包(包名為com.snbcedu.system),然后在包下再創建類(類名就是數據庫中的表名),先選中包名,點右鍵依次選擇new-class。完成后,開始創建類,在此注意兩點[7]:@Entity、@Id與@GeneratedValue(strategy=GenerationType.AUTO)的使用,最后在空白位置點右鍵,依次選source-generate setters and getters。
 (5)創建文件夾src/java,選中項目名,點右鍵依次選擇new-source folder。然后在包下再依次創建Dao、Service、Action。
 ①創建Dao[8]。在創建之前先創建包(包名為com.snbcedu.system.dao),依次創建UserDao與UserDaoImpl,UserInfoDao與UserInfoDaoImpl兩組,在創建之前先復制AGenericHibernateDao.java和IGenericDao.java兩個類。出錯處理:先刪掉有問題的包,然后建立com.snbcedu.system.util包,復制PageBean.java類到該包下,最后再重新導入即可。
 ②創建Service[9]。在創建之前先創建包(包名為com.snbcedu.system.service),依次創建UserService、UserInfoService、UserLoginService 3個接口與UserServiceImp、UserInfoServiceImp、UserLoginServiceImp 3個類。
 ③創建Action[10]。在創建之前先創建包(包名為com.snbcedu.system.action),創建UserLoginAction之前,先復制BaseAction.java、HomeAction.java、HTHomeAction.java這3個包。
 (6)在WebRoot-js下建立user_login.js文件。先建立js文件夾,復制common.js、init.js、jquery.js 3個文件后創建user_login.js。
 (7)在WebRoot-(WEB-INF)-jsp下建立user_login.jsp。先建立jsp文件夾,選中后點右鍵,依次new-jsp。
 (8)部署、發布項目。
 通過上述配置,一個項目的基本框架就基本形成了,如圖1所示。

 通過以上分析和應用,人們可能有一個疑問,Spring如何以一個外部XML配置文件實現各種功能呢?這其實沒有任何神秘而言,每個框架都有許多類包,這些類包就是專門實現這些事情的。類包是如何介入寫的類代碼或其他框架的呢?當然必須通過一定途徑才能調用其他類代碼,有時Spring把這個細節隱藏了起來,使人們感到不可思議,細究一下,不難發現不外乎通過這兩種方式調用其他類代碼:一是把類寫在它的配置文件里,二是類繼承它的接口。到此,對SSH框架有了一個初步了解,同時對于大、中型企業級Web項目開發流程也有了一個清楚的認識,相信對項目初學者和開發人員快速搭建架構清晰、可復用性好、維護方便的企業級Web項目有直接的借鑒作用。
參考文獻
[1] 陳亞輝,繆勇.Structs+Spring+Hibernate框架技術與項目實戰[M].北京:清華大學出版社,2012.
[2] 李剛.輕量級Java EE企業應用實戰(第3版)—Structs+Spring+Hibernate整合開發[M].北京:電子工業出版社,2013.
[3] GAMMA E, HELM R, JOHNSON R, et al. Design patterns: Elements of reusable object-oriented software[M]. Addison Wesley, 2000.
[4] 計磊,李里,周偉.精通J2EE—EclipseStruts Hibernate Spring整合應用案例[M].北京:人民郵電出版社,2006.
[5] 李寧.Struts2教程3:struts.xml常用配置解析[OL].[2008-04-16](2013-4-12)http://www.blogjava.net/nokiaguy/archive/2008/04/16/193457.html.
[6] Wesley002.搭建簡單Web項目:spring3.0基礎配置(1)  [OL].[2010-10-27](2013-4-12)http://blog.csdn.net/wzl002/article/details/5969469
[7] 邵雪航,王大鵬.基于SSH框架技術下的WEB項目的研究與實現[J].數字技術與應用,2012(10):126-127.
[8] 鄧榮.Linux平臺下基于Open SSH的安全遠程登錄服務的設計與實現[J].電腦知識與技術,2010(11):8970-8971.
[9] 王愛松,姜楠,白鳳珍.以SSH協議為基礎加強高校校園網信息化安全[J].內蒙古民族大學學報(自然科學版),2008(6):626-628.
[10] 簡思遠.基于SSH架構的高校校園網站備案系統的構建[J].福建電腦,2010(5):125-126.

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
欧美一区午夜视频在线观看| 亚洲精品影院在线观看| 今天的高清视频免费播放成人| 欧美午夜电影网| 欧美激情精品久久久久久变态| 久久丁香综合五月国产三级网站| 亚洲视频1区| 亚洲另类自拍| 亚洲国产一区视频| 亚洲国产综合在线| 亚洲国产mv| 亚洲成色精品| 亚洲电影第1页| 亚洲高清不卡在线观看| 亚洲电影av在线| 亚洲韩国青草视频| 亚洲黄色成人| 日韩亚洲成人av在线| 亚洲三级影院| 99精品欧美一区| 亚洲视频1区| 亚洲男同1069视频| 欧美亚洲一区二区在线| 久久av红桃一区二区小说| 欧美一区二区三区在| 欧美一区二区啪啪| 久久av一区二区三区亚洲| 久久精品99无色码中文字幕| 久久精品国产欧美激情| 久久久国产精品亚洲一区| 久久精品国产清自在天天线| 久久久久这里只有精品| 久久亚洲精品伦理| 久久久综合免费视频| 另类av一区二区| 麻豆精品精品国产自在97香蕉| 久久午夜精品一区二区| 久久久蜜桃一区二区人| 久久九九精品99国产精品| 欧美在线资源| 久久精品91| 久久人人看视频| 蜜桃久久av| 欧美电影打屁股sp| 欧美精品www在线观看| 欧美va亚洲va国产综合| 欧美韩日亚洲| 欧美日韩hd| 欧美午夜不卡在线观看免费 | 欧美成人日本| 欧美激情视频网站| 欧美日韩亚洲综合| 国产精品卡一卡二| 国产精品一区在线观看| 国产在线一区二区三区四区| 国内精品福利| 亚洲国产综合在线看不卡| 亚洲精品一区二区在线观看| 一区二区三区成人| 羞羞视频在线观看欧美| 亚洲电影免费观看高清| 亚洲精品欧美日韩| 亚洲视频香蕉人妖| 性欧美超级视频| 久久免费视频在线| 欧美成黄导航| 欧美视频在线观看一区| 国产欧美日本一区视频| 伊人久久大香线蕉综合热线| 91久久精品国产91性色tv| 一区二区欧美激情| 亚洲欧美一区二区在线观看| 久久gogo国模裸体人体| 亚洲精品一区在线观看| 亚洲欧美日韩人成在线播放| 久久午夜激情| 欧美日韩在线播放一区二区| 国产裸体写真av一区二区| 在线观看一区| 亚洲图片欧美日产| 久久精品日韩| 亚洲免费观看高清完整版在线观看熊| 亚洲精品永久免费| 久久三级视频| 欧美午夜精品一区| 激情国产一区| 99精品国产99久久久久久福利| 午夜在线不卡| 亚洲最新中文字幕| 久久精品国产综合| 欧美精品二区三区四区免费看视频| 国产精品久久久久久久电影| 伊人狠狠色j香婷婷综合| 一本到12不卡视频在线dvd| 久久成人免费| 亚洲五月六月| 久久精品av麻豆的观看方式| 欧美日韩国产123区| 国产日韩精品在线播放| 亚洲人成在线免费观看| 午夜精品一区二区在线观看| 一本久道久久综合狠狠爱| 久久国产精品一区二区三区| 欧美啪啪成人vr| 国内外成人免费激情在线视频网站| 一二美女精品欧洲| 亚洲国产精品一区二区www| 亚洲欧美不卡| 欧美国产日韩一区| 国产真实精品久久二三区| 日韩视频在线播放| 一本久久精品一区二区| 看片网站欧美日韩| 国产欧美精品日韩| 99视频在线观看一区三区| 亚洲电影观看| 欧美在线视频一区| 国产精品久久久久国产a级| 亚洲国产精品一区二区第四页av | 亚洲视频网站在线观看| 亚洲精品国产欧美| 久久久国产精品亚洲一区 | 久久成年人视频| 香蕉视频成人在线观看| 欧美日韩精品福利| 亚洲大片在线| 亚洲高清在线观看一区| 欧美一级专区免费大片| 欧美天天视频| 亚洲国产精品99久久久久久久久| 亚洲国产精品综合| 久久亚洲一区二区三区四区| 国产欧美日韩专区发布| 亚洲小说欧美另类婷婷| 亚洲素人一区二区| 欧美精品国产| 在线精品视频一区二区三四| 欧美一区午夜精品| 性欧美精品高清| 国产麻豆精品theporn| 亚洲一区精品视频| 午夜精品久久久久影视| 国产精品爱久久久久久久| 一本色道久久88综合亚洲精品ⅰ | 久久久国产精品一区| 国产香蕉久久精品综合网| 午夜精品福利在线观看| 欧美亚洲自偷自偷| 国产日产高清欧美一区二区三区| 亚洲香蕉在线观看| 午夜精品久久久99热福利| 国产精品青草久久| 亚洲专区国产精品| 久久成人资源| 国产一区二区三区高清在线观看| 西瓜成人精品人成网站| 欧美在线国产| 国内精品久久久久久久果冻传媒| 欧美一区二区三区喷汁尤物| 欧美大胆a视频| 亚洲精品一区中文| 亚洲一区二区免费看| 国产精品毛片在线| 午夜欧美不卡精品aaaaa| 欧美综合二区| 精品电影一区| 日韩视频免费大全中文字幕| 欧美破处大片在线视频| 一本久久a久久免费精品不卡| 亚洲精品中文字幕在线| 欧美日韩成人激情| 亚洲天堂网站在线观看视频| 久久高清国产| 在线观看福利一区| 一区二区三区四区五区视频 | 中文欧美在线视频| 欧美在线观看视频在线 | 国产一区再线| 亚洲欧洲日韩在线| 欧美精品亚洲一区二区在线播放| 亚洲人成在线免费观看| 亚洲一区图片| 狠久久av成人天堂| 99综合精品| 国产精品美女xx| 久久狠狠久久综合桃花| 欧美精品乱人伦久久久久久 | 亚洲成人资源| 亚洲影视中文字幕| 国色天香一区二区| 夜夜嗨av一区二区三区免费区| 国产精品啊啊啊| 久久精品一区二区三区四区| 欧美~级网站不卡| 国产三级欧美三级| 国产精品99久久99久久久二8| 国产欧美在线观看| 亚洲免费播放| 国产精品一二三四| 亚洲六月丁香色婷婷综合久久|