轉載請標明原文地址

一、什麼是SSH?

SSH是JavaEE中三種框架(Struts+Spring+Hibernate)的整合框架,是目前比較流行的一種Java Web開源框架。

SSH主要用於Java Web的開發。現在SSH有SSH1和SSH2兩種,區別在於Struts的版本是struts1.x還是2.x。本文介紹的是SSH1。

二、Struts Spring Hibernate各起什麼作用?

Struts:控制邏輯關係。

Spring:解耦。

Hibernate:操作資料庫。

學習SSH的一些建議

SSH適合開發一些中、大型的企業級網站。功能強大,效能也高。但是學習成本也高,麻煩也不少,不擅長做小型網站或便捷開發。

如果你熟悉Java並準備做動態網站的開發,SSH值得學習,如果你不熟悉Java,或沒有一定的程式設計經驗,只想做個簡單的個人網站或者論壇。PHP也許更適合你。

準備工作

俗話說:“工欲善其事必先利其器”。讓我們看看在搭建SSH前需要準備哪些工具吧。

1.JDK 

[下載地址1][下載地址2]

做Java開發第一步當然是Java開發環境了,JDK是必備的,本文中用的是jdk-8u111

2.MyEclipse 

搭建SSH最好用的開發工具了,本文中用的是MyEclipse 10。

3.MySQL 

[下載地址1]  [下載地址2]  [MySQL安裝教程]

完整的動態網站需要一個數據庫。注意安裝時設定的密碼千萬別忘了。本文中用的是MySQL 5.5.53

4.Navicat for MySQL

MySQL視覺化開發工具,主要用他來操作資料庫。本文中用的是Navicat for MySQL 10.1.7

5.JDBC 

 [下載地址1]  [下載地址2]

資料庫連線池,這是Java連線資料庫必備的jar包。本文中用的是mysql-connector-java-5.0.8-bin.jar

安裝順序:JDK > MyEclipse > MySQL > Navicat for MySQL

網站結構和開發工具作用如下圖:

 

五、搭建SSH步驟

開發工具下載安裝完畢後,正式進入搭建步驟。

1.新建web專案。開啟MyEclipse 選擇 新建 > Web Project。

2.專案名稱(Project Name)命名為“SSH”,點選“完成”。若彈出對話方塊,選“是”就可以。

3.新建web專案後結構如下,可以看到在網站根目錄下自動生成了一個首頁index.jsp。

 4.雙擊開啟index.jsp,把“This is my JSP page.”改成“首頁”。Ctrl + S 儲存。可以看到出現如下提示:

5.這裡出現了一個編碼問題,頁面預設的編碼為ISO-8859-1,不支援中文字元,無法儲存,我們需要更改jsp頁面的編碼格式。我們先把這個提示關掉。
在頂部選單欄選擇 視窗 > 首選項 > MyEclipse > JSP > Files and Editors > JSP,把編碼改為ISO 10646/Unicode(UTF-8) > 應用 > 確定。

6.更改工作空間的編碼格式。在頂部選單欄選擇 視窗 > 首選項 > 常規 > 工作空間 > 文字檔案編碼選擇其他 > 其他選項裡選擇UTF-8 > 應用 > 確定。

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

7.這樣設定後,我們的工作空間編碼就比較統一了,再生成的JSP頁面就是UTF-8編碼格式了,能夠很好的支援中文字元,不過之前生成的JSP頁面編碼格式要我們手動更改。

開啟index.jsp,把第一行程式碼中pageEncoding="ISO-8859-1"改為pageEncoding="UTF-8"。Ctrl+S儲存頁面。更改後頁面程式碼如下:

複製程式碼
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>首頁</title>
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->
  </head>
  
  <body>
    首頁<br>
  </body>
</html>
複製程式碼

8.部署網站,測試網站是否可以正常訪問。點選選單欄上的部署按鈕。

9.在彈出框中點選“Add”按鈕新增要部署的Web專案。

10.在彈出框中伺服器選項“Server”選擇“MyEclipse Tomcat”,使用MyEclipse自帶的Web伺服器,點選“完成”。

11.可以看到下方的部署狀態“Successfully deployed”。部署成功,點選“確定”。

12.點選執行伺服器圖示啟動伺服器。

13.如果在控制檯出現“Server startup in xxxx ms”,則證明伺服器啟動成功,注意Tomcat預設使用的埠是8080,如果該埠被佔用的話則啟動失敗。

14.開啟瀏覽器,在位址列輸入我們的網址:http://127.0.0.1:8080/SSH ,可以看到頁面上顯示“首頁”,證明網站部署成功,首頁可以正常訪問。

15.停止伺服器。在控制檯中點選紅色的正方形圖示停止伺服器。

16.新增Struts1框架。右鍵專案選擇 MyEclipse > Add Struts Capabilities...。

17.在彈出框的下方“Base package for new class”處把“com.yourcompany.struts”改成“com.ssh.struts”, 點選完成。

18.可以看到我們的專案目錄下出現了“WEB-INF”資料夾,證明Struts框架新增成功。

19.新增Spring框架。右鍵專案選擇 MyEclipse > Add Spring Capabilities...。

20.在彈出框中選擇以下6個包,點選“下一步”。

21.在彈出框中點選“Browse”更改路徑為SSH專案下的WEB-INF資料夾,點選“完成”。

22.展開WEB-INF資料夾可以看到多出了3個檔案,並在資料夾上多出了一個"S"標誌,證明Spring框架新增成功。

23.新增Hibernate框架。在新增Hibernate框架前我們需要準備好資料庫。

新建資料庫。開啟Navicat for MySQL。在“連線”視窗空白處右鍵選擇“新建連線”。

24.在彈出框中填寫連線名為“mysql”,密碼填寫安裝MySQL時設定的密碼(如果安裝時設定的密碼忘了,只能解除安裝重灌MySQL了)。

25.點選“連線測試”,如果提示“連線成功”,則證明資料庫連線成成功,否則按照提示查詢錯誤。點選“確定”關閉彈出框。

26.雙擊“mysql”開啟連線,右鍵“mysql”選擇“新建資料庫”。

27.在資料名中填寫“ssh”,字符集選擇“utf8”,點選“確定”。

28.雙擊“ssh”開啟資料庫,在展開的列表中右鍵“查詢”選擇“新建查詢”;

29.新建user表。把以下程式碼貼上到彈出框中,點選“執行”按鈕。

1
2
3
4
5
6
7
8
9
10
DROP TABLE IF EXISTS `user`;
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=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='使用者資訊表';
INSERT INTO `user` VALUES ('1', 'admin', '1234', '冰封百度');

30.右鍵SSH下的“表”點選“重新整理”。

31.可以看到出現了“user”表,並且表中有一條資料,資料庫建立完畢。

32.匯入JDBC包。開啟該專案所在資料夾,在專案根目錄下新建“lib”資料夾,並把下載的mysql-connector-java-5.0.8-bin.jar貼上進來。

33.返回MyEclipse,右鍵SSH專案點選“重新整理”,可以看到jar包已經匯入。

34.連線資料庫。在頂部選單欄中選擇 視窗 > 開啟透檢視 > MyEclipse Database Exlporer。

35.在DB Browser視窗空白處右鍵選擇“New”新建一個數據庫連線。

36.在彈出的視窗中填寫如下選項:

Driver template: MySQL Connector/J
Diver name: ssh
Connection URL: jdbc:mysql://127.0.0.1:3306/ssh
User name: root
Password 你設定的MySQL密碼

點選“Add JARs”找到SSH專案下的mysql-connector-java-5.0.8-bin.jar。

勾選“Save password”儲存資料庫密碼。

37.點選“Test Driver”測試資料庫是否可以正常連線。

如果提示“Database connection successfully established.”則證明資料庫連線成功,否則請與上一步填寫的值比對。點選“完成”關閉視窗。

38.雙擊開啟ssh資料庫。逐層展開後會發現我們建立的user表,證明資料庫連線成功。

39.新增Hibernate框架。點選右上角的MyEclipse圖示返回JavaEE透檢視。

40.右鍵SSH專案,選擇MyEclipse->Add Spring Capabilities。

41.在彈出框中直接點選“下一步”。

42.配置中選擇第二項“Spring configuration file”。把Spring框架與Hibernate框架整合到一起,然後點選“下一步”。

43.在配置中選第二項“Existing Spring configuration file”,使用Spring框架的配置檔案,點選“下一步”。

44.DB Driver選擇在新增Spring框架時配置的資料庫驅動ssh,點選“下一步”。

45.取消勾選“Create SessionFactory class”,點選“完成”關閉視窗。

46.最後專案結構和applicationContext.xml內容如下,SSH框架搭建完畢。

下一篇文章我們將基於這個工程製作一個簡單的註冊登陸頁,並解決一些SSH框架實際應用中遇到的問題。

複製程式碼
<?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:p="http://www.springframework.org/schema/p"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">


    <bean id="dataSource"
        class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName"
            value="com.mysql.jdbc.Driver">
        </property>
        <property name="url" value="jdbc:mysql://127.0.0.1:3306/ssh"></property>
        <property name="username" value="root"></property>
        <property name="password" value="admin"></property>
    </bean>
    <bean id="sessionFactory"
        class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="dataSource">
            <ref bean="dataSource" />
        </property>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">
                    org.hibernate.dialect.MySQLDialect
                </prop>
            </props>
        </property>
    </bean></beans>