本文目錄一覽:
- 1、如何用Java實現SSH遠程連接?
- 2、java中SSH到底是幹什麼的,說的通俗一點,謝謝。
- 3、java中SSH各自的用途?
- 4、Java中的“SSH”是什麼?
- 5、JAVA SSH框架搭建流程
如何用Java實現SSH遠程連接?
這還要思路。。。
表單提交到後台,觸發方法, 然後調jsch的方法,獲取返回信息。 然後return到頁面。
搞定!
java中SSH到底是幹什麼的,說的通俗一點,謝謝。
是java開發中的框架,就好比,現在蓋大樓時,先不壘磚,直接先用鋼筋混凝土大號樓層,然後再去壘磚,
ssh就是那個混凝土打好的樓層!
java中SSH各自的用途?
struts是web層的,接收用戶請求,然後根據請求做出響應
spring作為業務層,但是還有負責將hibernate和struts靈活的整合
hibernate是dao層,對數據庫進行操作
Java中的“SSH”是什麼?
SSH為struts+spring+hibernate的一個集成框架,是目前較流行的一種Web應用程序開源框架。\x0d\x0a集成SSH框架的系統從職責上分為四層:表示層、業務邏輯層、數據持久層和域模塊層,以幫助開發人員在短期內搭建結構清晰、可復用性好、維護方便的Web應用程序。其中使用Struts作為系統的整體基礎架構,負責MVC的分離,在Struts框架的模型部分,控制業務跳轉,利用Hibernate框架對持久層提供支持,Spring做管理,管理struts和hibernate。具體做法是:用面向對象的分析方法根據需求提出一些模型,將這些模型實現為基本的Java對象,然後編寫基本的DAO(DataAccessObjects)接口,並給出Hibernate的DAO實現,採用Hibernate架構實現的DAO類來實現Java類與數據庫之間的轉換和訪問,最後由Spring做管理,管理struts和hibernate。\x0d\x0a具體內容包括:\x0d\x0aStruts\x0d\x0aStruts對Model,View和Controller都提供了對應的組件。\x0d\x0aActionServlet,這個類是Struts1的核心控制器,負責攔截來自用戶的請求。\x0d\x0aAction,這個類通常由用戶提供,該控制器負責接收來自ActionServlet的請求,並根據該請求調用模型的業務邏輯方法處理請求,並將處理結果返回給JSP頁面顯示。\x0d\x0aModel部分:\x0d\x0a由ActionForm和JavaBean組成,其中ActionForm用於將用戶的請求參數封裝成ActionForm對象,該對象被ActionServlet轉發給Action,Action根據ActionForm裡面的請求參數處理用戶的請求。\x0d\x0aJavaBean則封裝了底層的業務邏輯,包括數據庫訪問等。\x0d\x0aView部分:\x0d\x0a該部分採用JSP(或HTML、PHP??)實現。\x0d\x0aStruts提供了豐富的標籤庫,通過標籤庫可以減少腳本的使用,自定義的標籤庫可以實現與Model的有效交互,並增加了現實功能。對應上圖的JSP部分。\x0d\x0aController組件:\x0d\x0aController組件有兩個部分組成——系統核心控制器,業務邏輯控制器。\x0d\x0a系統核心控制器,對應上邊的ActionServlet。該控制器繼承了HttpServlet類,因此可以配置成標註的Servlet。該控制器負責攔截所有的HTTP請求,然後根據用戶請求決定是否要轉給業務邏輯控制器。\x0d\x0a業務邏輯控制器,負責處理用戶請求,本身不具備處理能力,而是調用Model來完成處理。對應Action部分。\x0d\x0aStruts2是Struts的下一代產品,是在struts1和WebWork的技術基礎上進行了合併的全新的Struts2框架。其全新的Struts2的體系結構與Struts1的體系結構差別巨大。Struts2以WebWork為核心,採用攔截器的機制來處理用戶的請求,這樣的設計也使得業務邏輯控制器能夠與ServletAPI完全脫離開,所以Struts2可以理解為WebWork的更新產品。雖然從Struts1到Struts2有着太大的變化,但是相對於WebWork,Struts2的變化很小。\x0d\x0a\x0d\x0aSpring\x0d\x0aSpring是一個開源框架,它由RodJohnson創建。它是為了解決企業應用開發的複雜性而創建的。Spring使用基本的JavaBean來完成以前只可能由EJB完成的事情。然而,Spring的用途不僅限於服務器端的開發。從簡單性、可測試性和松耦合的角度而言,任何Java應用都可以從Spring中受益。\x0d\x0a目的:解決企業應用開發的複雜性\x0d\x0a功能:使用基本的JavaBean代替EJB,並提供了更多的企業應用功能\x0d\x0a範圍:任何Java應用\x0d\x0a簡單來說,Spring是一個輕量級的控制反轉(IoC)和面向切面(AOP)的容器框架。\x0d\x0a輕量——從大小與開銷兩方面而言Spring都是輕量的。完整的Spring框架可以在一個大小只有1MB多的JAR文件里發布。並且Spring所需的處理開銷也是微不足道的。此外,Spring是非侵入式的:典型地,Spring應用中的對象不依賴於Spring的特定類。\x0d\x0a控制反轉——Spring通過一種稱作控制反轉(IoC)的技術促進了松耦合。當應用了IoC,一個對象依賴的其它對象會通過被動的方式傳遞進來,而不是這個對象自己創建或者查找依賴對象。你可以認為IoC與JNDI相反——不是對象從容器中查找依賴,而是容器在對象初始化時不等對象請求就主動將依賴傳遞給它。\x0d\x0a面向切面——Spring提供了面向切面編程的豐富支持,允許通過分離應用的業務邏輯與系統級服務(例如審計(auditing)和事務(transaction)管理)進行內聚性的開發。應用對象只實現它們應該做的——完成業務邏輯——僅此而已。它們並不負責(甚至是意識)其它的系統級關注點,例如日誌或事務支持。\x0d\x0a容器——Spring包含並管理應用對象的配置和生命周期,在這個意義上它是一種容器,你可以配置你的每個bean如何被創建——基於一個可配置原型(prototype),你的bean可以創建一個單獨的實例或者每次需要時都生成一個新的實例——以及它們是如何相互關聯的。然而,Spring不應該被混同於傳統的重量級的EJB容器,它們經常是龐大與笨重的,難以使用。\x0d\x0a框架——Spring可以將簡單的組件配置、組合成為複雜的應用。在Spring中,應用對象被聲明式地組合,典型地是在一個XML文件里。Spring也提供了很多基礎功能(事務管理、持久化框架集成等等),將應用邏輯的開發留給了你。\x0d\x0a所有Spring的這些特徵使你能夠編寫更乾淨、更可管理、並且更易於測試的代碼。它們也為Spring中的各種模塊提供了基礎支持。\x0d\x0a\x0d\x0aHibernate\x0d\x0aHibernate是一個開放源代碼的對象關係映射框架,它對JDBC進行了非常輕量級的對象封裝,使得Java程序員可以隨心所欲的使用對象編程思維來操縱數據庫。Hibernate可以應用在任何使用JDBC的場合,既可以在Java的客戶端程序使用,也可以在Servlet/JSP的Web應用中使用,最具革命意義的是,Hibernate可以在應用EJB的J2EE架構中取代CMP,完成數據持久化的重任。\x0d\x0aHibernate的核心接口一共有5個,分別為:Session、SessionFactory、Transaction、Query和Configuration。這5個核心接口在任何開發中都會用到。通過這些接口,不僅可以對持久化對象進行存取,還能夠進行事務控制。下面對這五個核心接口分別加以介紹。\x0d\x0a·Session接口:Session接口負責執行被持久化對象的CRUD操作(CRUD的任務是完成與數據庫的交流,包含了很多常見的SQL語句。)。但需要注意的是Session對象是非線程安全的。同時,Hibernate的session不同於JSP應用中的HttpSession。這裡當使用session這個術語時,其實指的是Hibernate中的session,而以後會將HttpSession對象稱為用戶session。\x0d\x0a·SessionFactory接口:SessionFactory接口負責初始化Hibernate。它充當數據存儲源的代理,並負責創建Session對象。這裡用到了工廠模式。需要注意的是SessionFactory並不是輕量級的,因為一般情況下,一個項目通常只需要一個SessionFactory就夠,當需要操作多個數據庫時,可以為每個數據庫指定一個SessionFactory。\x0d\x0a·Configuration接口:Configuration接口負責配置並啟動Hibernate,創建SessionFactory對象。在Hibernate的啟動的過程中,Configuration類的實例首先定位映射文檔位置、讀取配置,然後創建SessionFactory對象。\x0d\x0a·Transaction接口:Transaction接口負責事務相關的操作。它是可選的,開發人員也可以設計編寫自己的底層事務處理代碼。\x0d\x0a·Query和Criteria接口:Query和Criteria接口負責執行各種數據庫查詢。它可以使用HQL語言或SQL語句兩種表達方式。
JAVA SSH框架搭建流程
首先,明確spring,struts,hibernate在環境中各自的作用。
struts:
用來響應用戶的action,對應到相應的類進行處理。需要struts對應的包。
hibernate:
用來把實體類對應到數據庫。提供增刪改查的基本操作實現。需要hibernate對應的包以及mysql的jdbc驅動包。
spring:
管理struts:在xml配置文件中為struts的action進行值注入。
管理hibernate:在xml配置文件中配置hibernate的配置信息(dataSource,sessionFactory),即不需要原來的hibernate的xml文件。為hibernate的dao操作注入sessionfactory屬性值。
需要提供spring對應的包,除此以外,還需要提供一個整合spring與struts的包:truts2-spring-plugin-2.0.11.1.jar
下面就搭建步驟進行詳細說明:
1、新建一個web project,導入包,需要的包放在文件夾sshlib中。
2、修改web.xml的配置信息,內容如下:
?xml version=”1.0″ encoding=”UTF-8″?
web-app version=”2.5″ xmlns=” “
xmlns:xsi=” “
xsi:schemaLocation=”
“
welcome-file-list
welcome-fileindex.jsp/welcome-file
/welcome-file-list
!– 下面的listener,是spring提供的,它會在創建時自動查找WEB-INF下的applicationContext.xml文件 ,從而創建spring容器–
listener
listener-class
org.springframework.web.context.ContextLoaderListener
/listener-class
/listener
!– 下面的配置作用是:在MyEclipse中,系統會自動到WEB-INF下尋找 applicationContext.xml文件,而系統
會自動將applicationContext.xml放置到WEB-INF下的classes下,所以會產生找不到applicationContext.xml的錯誤,需要指明applicationContext.xml
的放置位置。這就是下面的信息作用。在Eclipse中也許不需要此配置信息。–
context-param
param-namecontextConfigLocation/param-name
param-value
/WEB-INF/classes/applicationContext.xml
/param-value
/context-param
!– 下面的配置信息,用來配置說明使用struts過濾器 —
filter
filter-namestruts2/filter-name
filter-class
org.apache.struts2.dispatcher.FilterDispatcher
/filter-class
!–
下面的配置信息用來說明:程序中運行的action放置在哪個包下面,對於list.action的請求,它會自動在這個包下面尋找ListAction.class的類
如果沒有這句話,那麼所有的action請求只能在struts.xml中進行配置。
—
init-param
param-nameactionPackages/param-name
param-value
com.action
/param-value
/init-param
/filter
!–
下面的配置表示對於所有請求都交給struts來處理。
—
filter-mapping
filter-namestruts2/filter-name
url-pattern/*/url-pattern
/filter-mapping
/web-app
3、接下來用來配置struts.xml
?xml version=”1.0″ encoding=”UTF-8″ ?
!DOCTYPE struts PUBLIC
“-//Apache Software Foundation//DTD Struts Configuration 2.0//EN”
” “
struts
!– 指定Web應用的默認編碼集。該屬性對於處理中文請求參數非常有用,對於獲取中文請求參數值,應該將該屬性值設置為GBK或者GB2312 當設置該參數為GBK時,相當於調用HttpServletRequest的setCharacterEncoding方法 —
constant name=”struts.i18n.encoding” value=”utf-8″ /
constant name=”struts.devMode” value=”true” /
package name=”default” namespace=”/” extends=”struts-default”
interceptors
!– 定義攔截器 —
interceptor name=”crudInterceptor”
class=”com.action.CrudInterceptor” /
interceptor-stack name=”appStack”
interceptor-ref name=”crudInterceptor” /
!– 下面一行自帶的攔截器必須加上,否則出錯 —
interceptor-ref name=”defaultStack” /
/interceptor-stack
/interceptors
!– 使用默認攔截器配置Action都需要攔截器堆棧
即所有struts請求都自動先交給攔截器處理。關於攔截器的具體規則在攔截器對應類(com.action.CrudInterceptor)中進行了解釋。
—
default-interceptor-ref name=”appStack”/default-interceptor-ref
/package
/struts
4、接下來配置applicationContext.xml:
?xml version=”1.0″ encoding=”UTF-8″?
beans xmlns=” “
xmlns:aop=” “
xmlns:xsi=” “
xsi:schemaLocation=”
“
!– 數據源 —
bean id=”dataSource”
class=”org.springframework.jdbc.datasource.DriverManagerDataSource”
property name=”driverClassName”
value=”org.gjt.mm.mysql.Driver” /
property name=”url” value=”jdbc:mysql://localhost:3306/user” /
property name=”username” value=”root” /
property name=”password” value=”” /
/bean
!– sessionFactory配置 —
bean id=”sessionFactory”
class=”org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean”
property name=”dataSource” ref=”dataSource” /
property name=”mappingResources”
list
valuecom/ssh/User.hbm.xml/value
/list
/property
!– 定義sessionFactory的屬性 —
property name=”hibernateProperties”
props
prop key=”hibernate.dialect”
org.hibernate.dialect.MySQL5InnoDBDialect
/prop
prop key=”hibernate.hbm2ddl.auto”update/prop
prop key=”hibernate.show_sql”true/prop
prop key=”hibernate.format_sql”true/prop
/props
/property
/bean
!– hibernate的類名,屬性名和數據庫之間的對應關係的自定義 com.ynstudio.tools.LocalNamingStrategy —
bean id=”namingStrategy”
class=”org.hibernate.cfg.ImprovedNamingStrategy”
/bean
!– 定義DAO的bean —
bean id=”userDao”
class=”com.ssh.UserDaoImpl”
property name=”sessionFactory” ref=”sessionFactory” /
/bean
!–
下面的代碼用來向Action類注入屬性值
—
bean id=”crudAction” class=”com.action.CrudAction”
property name=”userDao” ref=”userDao”/property
/bean
/beans
5、上述配置文件完成後,就開始業務邏輯部分。
首先完成hibernate的curd操作部分內容。
設計一個User實體類。包含數據庫中User表的字段。
新建一個User.hbm.xml文件,實現實體類與數據庫的關聯。內容如下:
?xml version=”1.0″?
!DOCTYPE hibernate-mapping PUBLIC
“-//Hibernate/Hibernate Mapping DTD//EN”
” “
hibernate-mapping
class name=”com.ssh.User” table=”user”
id name=”id” column=”id”
generator class=”increment” /
/id
property name=”username” column=”username” /
property name=”password” column=”password” /
property name=”birthday” column=”birthday” /
property name=”email” column=”email” /
/class
/hibernate-mapping
接下來需要實現dao操作。
設計一個類繼承了HibernateDaoSupport類。關於HibernateDaoSupport類,請參考相關文檔。
6、完成hibernate的設計後,接下來設計struts的攔截器和struts的action。
struts的攔截器:
package com.action;
import java.lang.reflect.Method;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
/**
* 這個類的是攔截器。
* 對於如下URL:
*
* actionInvocation.invoke()方法會自動調用名稱了HelloAction類的list方法。
* 在action中根據該方法的返回值決定頁面顯示或跳轉位置。
* result值除了可以再action類中定義,還可以在struts.xml中配置。
* 配置時可採用如下語句:
* action name=”hello” class=”crudAction”
* result name=”list”/list.jsp/result
* result name=”modify”/modify.jsp/result
* /action
* 此處需要格外注意的是:class屬性的值,此值是applicationContext.xml中的id。
* 該bean中注入了action類中屬性userDao的值。
* 所以,如果需要使用struts.xml中的action配置,需要使用該id,否則,系統不會給其注入值,最終導致空指針異常。
* @author HeXiaoXing
*
*/
public class CrudInterceptor extends AbstractInterceptor{
public String intercept(ActionInvocation actionInvocation) throws Exception {
/*
*下面代碼演示了獲取請求的類名與方法名的一半方式,但本例中不涉及。 全部注釋掉。
*/
// Object action = actionInvocation.getAction();
// Class actionClass = action.getClass();
// String actionClassName = actionClass.getSimpleName();
// String methodName = actionInvocation.getProxy().getMethod();
return actionInvocation.invoke();
}
}
struts的action,關於此action的全部內容,請參考源程序CrudAction。
7、完成了類設計後,就是頁面的設計,關於頁面的設計,不再一一敘述,給粗源文件,請自行參考。
需要提出的是,在轉向時,url的格式必須是method:方法名。這是約定的,不可以寫成method=方法名。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/239541.html