javassh框架,java openssh

本文目錄一覽:

北大青鳥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-hant/n/149535.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
VPGQ的頭像VPGQ
上一篇 2024-11-05 16:51
下一篇 2024-11-05 16:51

相關推薦

  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Bean加載過程

    Java Bean加載過程涉及到類加載器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean加載的過程。 一、類加載器 類加載器是Java虛擬機…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Ojlat:一款快速開發Web應用程序的框架

    Ojlat是一款用於快速開發Web應用程序的框架。它的主要特點是高效、易用、可擴展且功能齊全。通過Ojlat,開發人員可以輕鬆地構建出高質量的Web應用程序。本文將從多個方面對Oj…

    編程 2025-04-29
  • Zlios——一個多功能的開發框架

    你是否在開發過程中常常遇到同樣的問題,需要不斷去尋找解決方案?你是否想要一個多功能、易於使用的開發框架來解決這些問題?那麼,Zlios就是你需要的框架。 一、簡介 Zlios是一個…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發布。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Java判斷字符串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字符串中是否存在多個指定字符: 一、字符串遍歷 字符串是Java編程中非常重要的一種數據類型。要判斷字符串中是否存在多個指定字符…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29

發表回復

登錄後才能評論