本文目錄一覽:
- 1、北大青鳥java培訓:學習Java常用的SSH框架是什麼呢?
- 2、有SSH三大框架的簡單介紹嗎?
- 3、JAVA SSH框架搭建流程
- 4、java的三大框架SSH 難學嗎?
- 5、java中的ssh框架到底是什麼
北大青鳥java培訓:學習Java常用的SSH框架是什麼呢?
Java框架一直是面試的重點,在成熟的大型企業、快速發展的企業和初創企業中都需要掌握Java框架,這樣才能對當前正在開發的系統有一個大致的了解,以便更好地熟悉基礎知識和相關技術。
那麼學習Java常用的框架是什麼,應該如何使用呢?下面廣東計算機學習為大家具體介紹。
SSH框架的組合主要由Struts,Spring,Hibernate這3個框架構成,把Struts作為系統整體的基礎結構加以利用,負責MVC的分離,在Struts框架的模型部分,控制業務的跳躍,利用Hibernate框架支持持續性層,利用Spring管理Struts和Hibernate。
下文北大青鳥廣東計算機學院具體說明了這三種框架:Struts框架Struts框架基本上是基於相當於Servlet的MVC設計模式的Web應用程序框架。
MVC設計模式使用Struts2作為控制器(Controller)來建立模型和視圖之間的數據交互。
廣東廣東java軟體開發發現它包含Struts1和Struts2兩個版本,兩者的差異實際上還很大,Struts2雖然不是Struts1的更新,但是充分發揮了這兩種技術的優點,它放棄了原來Struts1的缺點,使Web開發更加容易。
Spring框架我們都應該知道,最傳統的JavaWeb應用程序是通過JSP、Servlet、Javabean實現的,它實現了最基本的MVC分層。
該結構存在一些問題,如JSP需要使用符號在頁面中嵌入大量Java代碼,頁面結構混亂,Servlet和Javabean負責大量的跳轉和操作工作,緊密耦合,程序重用低等。
廣東計算機學校發現Spring框架的出現解決了這個問題。
通過對AOP和IOC兩個特性的加持,所有類之間的這種依賴完全被配置文件所取代,實體bean被很好地管理到容器中,所以耦合大大降低,可重用性大大提高。
Hibernate框架Hibernate框架是半自動化的永久性層框架,SQL的大幅度削減,代碼的製作,在這個框架中,需要相關作業的時候,不需要注意資料庫表,通過將一個級別永久性化就可以達到添加,刪除和檢查的功能。
廣東廣東IT培訓發現這是因為在框架內部實現了很多針對資料庫的操作方法。
有SSH三大框架的簡單介紹嗎?
SSH 為 struts+spring+hibernate的一個集成框架,是目前較流行的一種Web應用程序開源框架。\x0d\x0aStruts2簡介:\x0d\x0aStruts 2是Struts的下一代產品,是在 struts 1和WebWork的技術基礎上進行了合併的全新的Struts 2框架。其全新的Struts 2的體系結構與Struts 1的體系結構差別巨大。Struts 2以WebWork為核心,採用攔截器的機制來處理用戶的請求,這樣的設計也使得業務邏輯控制器能夠與ServletAPI完全脫離開,所以Struts 2可以理解為WebWork的更新產品。雖然從Struts 1到Struts 2有著太大的變化,但是相對於WebWork,Struts 2的變化很小。\x0d\x0aSpring簡介:\x0d\x0aSpring是一個開源框架,Spring是於2003 年興起的一個輕量級的Java 開發框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中闡述的部分理念和原型衍生而來。它是為了解決企業應用開發的複雜性而創建的。框架的主要優勢之一就是其分層架構,分層架構允許使用者選擇使用哪一個組件,同時為 J2EE 應用程序開發提供集成的框架。Spring使用基本的JavaBean來完成以前只可能由EJB完成的事情。然而,Spring的用途不僅限於伺服器端的開發。從簡單性、可測試性和松耦合的角度而言,任何Java應用都可以從Spring中受益。Spring的核心是控制反轉(IoC)和面向切面(AOP)。簡單來說,Spring是一個分層的JavaSE/EEfull-stack(一站式) 輕量級開源框架。\x0d\x0aHibernate簡介:\x0d\x0aHibernate是一個開放源代碼的對象關係映射框架,它對JDBC進行了非常輕量級的對象封裝,使得Java程序員可以隨心所欲的使用對象編程思維來\x0d\x0a操縱資料庫。 \x0d\x0aHibernate可以應用在任何使用JDBC的場合,既可以在Java的客戶端程序使用,也可以在Servlet/JSP的Web應用中使用,最具革命\x0d\x0a意義的是,Hibernate可以在應用EJB的J2EE架構中取代CMP,完成數據持久化的重任。
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=方法名。
java的三大框架SSH 難學嗎?
難學,找到方法,就很容易,總結方法如下:
第一步,看視頻或者入門文章。視頻可以去verycd找,文章可以去iteye找。先看Struts2,也可以看SpringMVC3,然後是Hibernate,最後看Spring。
這一步的目的是知道每個框架作用,能幹什麼,大概上怎麼使用。
第二步,看項目,推薦SpringSide。這個步驟可以知道實際項目中SSH一般是怎麼配合的。
第三步,自己動手。如果能實現一個單表完整的增刪改查,算是基本完成任務。能再考慮下怎麼更通用化,寫點東西,這塊就沒問題了,到哪個公司去,只要稍微看下他們的配置文件,都能上手。
需要思考的是有框架和沒有框架,到底能帶來什麼。
有人不喜歡SSH框架,也有人推薦別的框架,個人喜歡nuts框架,但是總需要明白的是框是幹什麼用的,怎麼用的,在實際運用中有了一些體會,才能明白自己的取捨。
用Struts,是要明白MVC,用Hibernate,要明白什麼是持久化,什麼是OR/mapping,用Spring,要明白什麼是依賴注入,什麼是AOP。就算不精通,也要大致理解。明白了這些,Hibernate換成Mybaits,Struts換成SpringMVC,甚至別的什麼框架,都能很快上手。
java中的ssh框架到底是什麼
SSH 為 struts+spring+hibernate的一個集成框架,是目前較流行的一種Web應用程序開源框架。
集成SSH框架的系統從職責上分為四層:表示層、業務邏輯層、數據持久層和域模塊層,以幫助開發人員在短期內搭建結構清晰、可復用性好、維護方便的Web應用程序。其中使用Struts作為系統的整體基礎架構,負責MVC的分離,在Struts框架的模型部分,控制業務跳轉,利用Hibernate框架對持久層提供支持,Spring做管理,管理struts和hibernate。具體做法是:用面向對象的分析方法根據需求提出一些模型,將這些模型實現為基本的Java對象,然後編寫基本的DAO(Data Access Objects)介面,並給出Hibernate的DAO實現,採用Hibernate架構實現的DAO類來實現Java類與資料庫之間的轉換和訪問,最後由Spring做管理,管理struts和hibernate。
系統的基本業務流程是: 在表示層中,首先通過JSP頁面實現交互界面,負責傳送請求(Request)和接收響應(Response),然後Struts根據配置文件(struts-config.xml)將ActionServlet接收到的Request委派給相應的Action處理。在業務層中,管理服務組件的Spring IoC容器負責向Action提供業務模型(Model)組件和該組件的協作對象數據處理(DAO)組件完成業務邏輯,並提供事務處理、緩衝池等容器組件以提升系統性能和保證數據的完整性。而在持久層中,則依賴於Hibernate的對象化映射和資料庫交互,處理DAO組件請求的數據,並返回處理結果。
採用上述開發模型,不僅實現了視圖、控制器與模型的徹底分離,而且還實現了業務邏輯層與持久層的分離。這樣無論前端如何變化,模型層只需很少的改動,並且資料庫的變化也不會對前端有所影響,大大提高了系統的可復用性。而且由於不同層之間耦合度小,有利於團隊成員並行工作,大大提高了開發效率。
原創文章,作者:VPGQ,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/149535.html