SSH框架搭建詳細圖文教程(轉)

愛做飯的小瑩子發表於2014-09-16

這篇文章看的我醍醐灌頂的感覺,比之前本科時候學習的SSH架構 要清晰數倍 

非常感覺這篇博主的文章

文章連結為:http://blog.sina.com.cn/s/blog_a6a6b3cd01017c57.html

因為覺得寫的太好了 想收藏一下

 

什麼是SSH?


SSH對應 struts spring hibernate
struts 採用MVC模式,主要是作用於使用者互動
spring 採用IOC和AOP~作用比較抽象,是用於專案的鬆耦合
hibernate 是物件持久化框架,其實就是實體類和資料庫表建立關係,操作類就會觸發相應的sql語句,可以不用寫任何sql語句,完成資料庫程式設計(引自百度知道)
SSH就是Struts + Spring + Hibernate 3個Java框架的集合,現在Java開發中常用的框架組合。用來開發後臺,與前臺和資料庫進行資料互動。最初學這個是為了寫JSP。
 
SSH框架搭建步驟很多,但是不難,因為MyEclipse已經幫我們做了大部分的工作,如果純手動新增這個框架的話,那真是夠複雜的了。不過涉及的知識挺多的,適合有一定基礎的人。下面詳細介紹一下SSH框架的搭建步驟並且解決了幾個我在搭建過程中遇到的問題。<wbr>


事先準備工作:

AS3學習筆記3-Flash程式設計師常用開發工具1.JDK

這個是一切的前提,相信大家都有。沒有的話下面的步驟也不用看了,先安裝JDK,配置環境變數吧。
JDK 7.0 下載:http://www.onlinedown.net/soft/61003.htm
配置Java環境變數教程:http://jingyan.baidu.com/article/f96699bb8b38e0894e3c1bef.html<wbr><wbr>


AS3學習筆記3-Flash程式設計師常用開發工具2.MyEclipse

我們主要用MyEclipse來搭建SSH, 所以這個必須有,我用MyEclipse 8.5搭建過SSH,沒問題。沒有的話建議下載高版本的,與時俱進嘛。漢化或者不漢化看個人習慣,我覺得中文用起來比較舒服。
Myeclipse 10 下載:http://www.pc6.com/softview/SoftView_57131.html
Myeclipse 漢化包及漢化教程:http://blog.csdn.net/cntanghai/article/details/6310200


AS3學習筆記3-Flash程式設計師常用開發工具3.MySQL

資料庫,注意安裝時設定的密碼千萬別忘了。
MySQL詳細圖文安裝教程:http://jingyan.baidu.com/article/642c9d34aa809a644a46f717.html<wbr><wbr>
MySQL 5.5.28 下載:http://down.chinaz.com/soft/29015.htm


AS3學習筆記3-Flash程式設計師常用開發工具4.Navicat for MySQL

MySQL檢視化管理及開發工具,主要用他來操作MySQL。推薦安裝,非必須。
Navicat for MySQL v10.1.7簡體中文特別版下載:http://www.xiazaiba.com/html/2122.html

5.mysql-connector-java-5.0.8-bin.jar

Java連線MySQL資料庫時需要用到的jar包。
jar下載:http://pan.baidu.com/share/link?shareid=444190&uk=4262258889

6.在MySQL中新建一個表,用來測試資料

我在這裡準備做一個註冊登入功能,所以在test裡建了一個user表,表裡的欄位有id、username、password、nickname四個欄位。nickname用來測試中文是否亂碼。
SQL語句:

CREATE TABLE `user` (
  `id` bigint(20) unsigned NOT NULL auto_increment COMMENT 'ID',
  `username` varchar(40) character set utf8 NOT NULL COMMENT '使用者名稱',
  `password` varchar(40) collate utf8_unicode_ci NOT NULL COMMENT '密碼',
  `nickname` varchar(40) character set utf8 NOT NULL COMMENT '暱稱',
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='使用者資訊表';<wbr><wbr><wbr><wbr><wbr><wbr>





SSH框架搭建步驟:

1.新建一個專案。開啟MyEclipse,新建一個Web專案,起名就叫SSH吧,點選完成,若彈出提示點Yes即可。
SSH框架搭建詳細圖文教程
SSH框架搭建詳細圖文教程

2.新增Struts框架。右鍵這個專案,選擇MyEclipse->Add Struts Capabilities。 在彈出的選單中把包的路徑改一下, Base package for new classes選項中的路徑com.yourcompany.struts改成com.ssh.struts, 點選完成。

SSH框架搭建詳細圖文教程

展開WebRoot中的WEB-INF資料夾,看到目錄結構如下圖,證明Struts框架新增完成。
SSH框架搭建詳細圖文教程

3.新增Spring框架。右鍵這個專案,選擇MyEclipse->Add Spring Capabilities。

SSH框架搭建詳細圖文教程

在選單中選擇如下6個庫,點選下一步。
SSH框架搭建詳細圖文教程

更改Folder路徑,選擇SSH專案WebRoot資料夾下的WEB-INF,完成。

SSH框架搭建詳細圖文教程

現在專案的目錄結構如下,Spring框架新增完成。

SSH框架搭建詳細圖文教程

4.連線資料庫。點選右上角的圖示"開啟透檢視",選擇MyEclipse Database Explorer。在視窗中右鍵->New 新建一個資料庫連線。

SSH框架搭建詳細圖文教程

Driver template 選擇 MySQL Connector/J
Driver name 起名叫test
Connection URL 更改為jdbc:mysql://自己的IP地址:埠號/資料庫名稱
User name 填寫MySQL的使用者名稱
Password 填寫MySQL的密碼
Driver JARs 點選Add JARs按鈕,瀏覽到事先準備的
mysql-connector-java-5.0.8-bin.jar
Save password 選上

SSH框架搭建詳細圖文教程

點選Test Driver,測試結果:資料庫配置正確,點選完成。

SSH框架搭建詳細圖文教程

雙擊新增的test連線,展開目錄,可以發現我們事先建立的user表。

SSH框架搭建詳細圖文教程



5.新增Hibernate框架。右鍵SSH專案,選擇MyEclipse->Add Spring Capabilities。

SSH框架搭建詳細圖文教程

點選下一步。
SSH框架搭建詳細圖文教程

配置中選擇第二項"Spring configuration file"。把Spring與Hibernate整合到一起,點選下一步

SSH框架搭建詳細圖文教程

在選單中選第二項"Existing Spring configuration file",點選下一步。


SSH框架搭建詳細圖文教程

DB Driver選擇在新增Spring框架時配置的test,點選下一步。

SSH框架搭建詳細圖文教程

取消Create SessionFactory class?這個選項,點選完成。

SSH框架搭建詳細圖文教程

現在的目錄結構如下,SSH框架大體搭建完成。
SSH框架搭建詳細圖文教程

6.測試功能。

先部署一下專案,訪問首頁看看效果。選擇視窗上方圖示"Deploy MyEclipse J2EE Project to Server"->點選add新增SSH專案->Server選擇MyEclipse Tomcat。

SSH框架搭建詳細圖文教程

專案部署成功。

SSH框架搭建詳細圖文教程

點選視窗上方圖示"Run MyEclipse Servers"啟動Tomcat。

SSH框架搭建詳細圖文教程

在瀏覽器中訪問SSH專案地址,別忘了加上Tomcat的預設埠,8080埠。
輸入地址:
http://localhost:8080/SSH,Tomcat會訪問SSH專案WebRoot下的index.jsp。

SSH框架搭建詳細圖文教程

現在修改一下index.jsp中給的內容,在Body中新增"這是我的首頁"。Ctrl+S儲存。

SSH框架搭建詳細圖文教程

這裡出現了一個問題,頁面預設的編碼為ISO-8859-1,不支援中文字元,無法儲存。我們先把這個提示關掉。

選擇視窗->首選項->MyEclipse->JSP->Files and Editors->JSP,把編碼改為ISO 10646/Unicode(UTF-8)->應用->確定。

SSH框架搭建詳細圖文教程

編碼問題是一個很常見的問題,為避免出現這類我提我們儘量將工作空間的所有編碼格式統一,無論前臺後臺還是資料庫,否則會引發許多問題,例如中文亂碼。

選擇視窗->首選項->常規->工作空間->文字檔案編碼選擇其他->其他選項裡選擇UTF-8->應用->確定。


SSH框架搭建詳細圖文教程

這樣設定後,我們的工作空間編碼就比較統一了,再生成的JSP頁面就是UTF-8編碼格式了,能夠很好的支援中文字元,不過之前生成的JSP頁面編碼格式要我們手動更改。
把index.jsp中<%@ page language="java" import="java.util.*" pageEncoding="XXX"%> 的pageEncoding改為UTF-8,再儲存頁面。這時再訪問
http://localhost:8080/SSH , 正確顯示中文,這回沒問題了。

SSH框架搭建詳細圖文教程

現在寫個註冊登入的功能來測試一下框架整合的結果。

切換到MyEclipse DataBase Explorer檢視,通過Spring框架的逆向工程功能把user表逆向成Java實體類。右鍵user表選擇"Hibernate Reverse Engineering"。
SSH框架搭建詳細圖文教程

Java src folder 選擇SSH專案下的src資料夾。
Java package 填寫com.ssh.user

勾選前三個選項:Create POJO、Java Data Obect和Java Data Access Object。POJO類是資料庫表格所對應的Java類,JDO類是MyEclipse自動生成的對資料庫的一些操作,這裡會封裝一些常用的操作,基本上可以滿足我們的各種需要了,選擇下一步。


SSH框架搭建詳細圖文教程

Id Generator 選擇 native,點選完成。


SSH框架搭建詳細圖文教程


此時的目錄結構如下,我們可以看到系統生成了3個類,一個配置檔案。
User 繼承自AbstractUser,是User表的實體類。
UserDAO 封裝了一些對資料庫的常用操作。
User.hbm.xml 是hibernate-mapping對映配置檔案,配置了哪個實體類對映哪個表,配置了實體類的哪個屬性對映表裡的哪列。
如果這些東西不用hibernate生成,那麼我們就要自己寫,要浪費很多時間,hibernate的作用就體現出來了。


SSH框架搭建詳細圖文教程

現在來寫測試頁。開啟WEB-INF資料夾下的struts-config.xml檔案,切換到設計檢視(design)。右鍵->New->Form Action and JSP。

SSH框架搭建詳細圖文教程

填寫Form表單屬性:
Use case: login
Name:loginForm
在下方Form Properties中新增兩個屬性
username: JSP input type text
password: JSP input type password


SSH框架搭建詳細圖文教程

切換到JSP選項,填寫JSP屬性:
勾選Create JSP form
路徑修改為/jsp/login.jsp
點選完成。


SSH框架搭建詳細圖文教程

此時的目錄結構如下,可以看到在WebRoot/jsp/下 生成了一個login.jsp頁。


SSH框架搭建詳細圖文教程

我們檢視一下現在的目錄結構,並把struts-config.xml切換到Source檢視,看看struts框架幫我們幹了什麼。

可以看到目錄裡多了3個檔案:LoginFrom.java、LoginAction.java、login.jsp。這正是我們在設計檢視裡選擇Form,Action and JSP所配置的檔案。而struts-config.xml裡也相應的新增了這3個檔案的對映配置資訊。如果這些不用struts生成的話,就需要我們自己寫,會浪費很多時間,struts的作用體現出來了。

這裡說一下頁面請求的執行順序:
1、login.jsp使用者填寫了登入資訊並點選了登入按鈕,傳送了一個請求(loginFrom.do)。
2、struts會通過struts-config.xml找到相應的對映配置(Action name==loginFrom)。
3、把登入表單的屬性對映到loginForm.java裡(bean)。
4、把loginForm和mapping、request、response一起交給LoginAction處理。
5、LoginAction執行完後的通過mapping找到跳轉頁面forward(這個下面會提到)
SSH框架搭建詳細圖文教程


現在新增兩個頁面:登入成功頁和登入失敗頁實現登入後的跳轉
在WebRoot/jsp/下新建兩個JSP頁。起名為loginSuccess.jsp和loginFail.jsp。

SSH框架搭建詳細圖文教程

嚮導資訊如下:


SSH框架搭建詳細圖文教程

在loginSuccess.jsp頁面body中新增"登入成功!<br>"。
在loginFail.jsp頁面body中新增"登入失敗
<br>"。

SSH框架搭建詳細圖文教程

把登入頁、登入成功頁、登入失敗頁3個頁面相關聯。
切換到struts-config.xml的設計檢視。右鍵login.jsp->New->Forward。

SSH框架搭建詳細圖文教程

loginSuccess:
選擇Local Action Forward
瀏覽Action Path:/login
填寫name:loginSuccess
瀏覽Path:/jsp/loginSuccess.jsp
完成
loginFail:
選擇Local Action Forward
瀏覽Action Path:/login
填寫name:loginFail
瀏覽Path:/jsp/loginFail.jsp
完成

SSH框架搭建詳細圖文教程

切換到Source檢視,可以看到程式碼如下圖:
Action裡多了
<forward name="loginSuccess" path="/jsp/loginSuccess.jsp" />
<forward name="loginFail" path="/jsp/loginFail.jsp" />
兩行程式碼,頁面跳轉新增完成。


SSH框架搭建詳細圖文教程

現在來寫具體的執行程式碼。開啟LoginAction.java。可以看到自動生成的程式碼如下圖:

SSH框架搭建詳細圖文教程

我們先不連資料庫,先寫一個測試的登入程式碼。

 
   public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response) {
        LoginForm loginForm = (LoginForm) form;// TODO Auto-generated method stub
        //獲取帳號密碼
        String username = loginForm.getUsername();
        String password = loginForm.getPassword();
        //帳號密碼匹配,跳轉到登入成功頁
        if("asd".equals(username) && "asd123".equals(password)){
            return mapping.findForward("loginSuccess");
        }
        //不匹配,跳轉到登入失敗頁
        return mapping.findForward("loginFail");
    }

準備就緒,啟動Tomcat,在瀏覽器中訪問登入頁:
http://localhost:8080/SSH/jsp/login.jsp

SSH框架搭建詳細圖文教程

看到這個介面,都是英文,很不爽,不僅僅因為醜。把它改成中文的,開啟login.jsp,程式碼如下:


<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
 
<html>
    <head>
        <title>JSP for LoginForm form</title>
    </head>
    <body>
        <html:form action="/login">
            username : <html:text property="username"/><html:errors property="username"/><br/>
            password : <html:password property="password"/><html:errors property="password"/><br/>
            <html:submit/><html:cancel/>
        </html:form>
    </body>
</html>

改成:

<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
 
<html>
    <head>
        <title>使用者登入</title>
    </head>
    <body>
        <html:form action="/login">
            帳號 : <html:text property="username"/><html:errors property="username"/><br/>
            密碼 : <html:password property="password"/><html:errors property="password"/><br/>
            <html:submit value="登入"/><html:cancel value="取消"/>
        </html:form>
    </body>
</html>

重新整理一下登入頁面,看看效果:

SSH框架搭建詳細圖文教程

登入介面漢化成功!看起來舒服多了。點選登入。
這時候因為我們什麼都沒填,應該跳轉到登入失敗頁面。


SSH框架搭建詳細圖文教程

後退,回到登入介面,填寫
帳號:asd
密碼:asd123
點選登入,帳號密碼和後臺設定的匹配,這時候應該跳轉到登入成功介面。


SSH框架搭建詳細圖文教程

測試完成,下面我們連線一下資料庫,從資料庫裡取出user資料進行匹配。
想運算元據庫我們要先獲取DAO(data access object),我們的UserDAO是hibernate生成的,關於UserDAO的配置資訊寫在了applicationContext.xml裡。所以在用UserDAO之前要先獲取
applicationContext.xml。

百度上查詢了一下相關程式碼,找到了一個獲取applicationContext.xml的方法。Spring框架裡的
ClassPathXmlApplicationContext 通過這個類可以獲取到我們需要的DAO。名字和applicationContext非常像,看起來就是這個類了。

測試一下這個類是否好用:
把LoginAction開啟,把程式碼改為:<wbr>


    public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response) {
        LoginForm loginForm = (LoginForm) form;// TODO Auto-generated method stub
        //獲取帳號密碼
        String username = loginForm.getUsername();
        String password = loginForm.getPassword();
       
        //獲取使用者資訊
     <wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>

相關文章