javassh,javas設計一個學生類

本文目錄一覽:

如何用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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 12:17
下一篇 2024-12-12 12:17

相關推薦

  • 數據結構學生成績管理系統

    在現代教育中,學生成績的管理已經成為了一個不可或缺的部分。藉助數據結構,一個高效、可靠的學生成績管理系統可以被輕鬆實現。 一、數據結構的選擇 在構建學生成績管理系統時,選擇合適的數…

    編程 2025-04-29
  • 使用Python對學生分數進行等級輸出

    本文將介紹如何使用Python編寫程序,實現輸入學生分數,輸出成績等級的功能。通過本文的學習,您將深入了解Python的相關知識,同時也能夠掌握如何使用Python進行編程。 一、…

    編程 2025-04-28
  • 用Python字典統計學生成績

    學生成績是評價學生學習成果的重要指標,利用Python語言統計學生成績是Python應用的重要實戰,本文將從多個方面詳細闡述如何用Python字典統計學生成績。 一、創建學生成績字…

    編程 2025-04-27
  • Python如何計算學生成績

    Python是一種多用途、強大的編程語言,它可以被用於各種不同的應用程序。在教育領域,Python通常用於計算學生成績。在本文中,我們將介紹Python如何計算學生成績,以及如何使…

    編程 2025-04-27
  • 學生成績查詢系統

    本文將從多個方面對學生成績查詢系統做詳細的闡述,涉及設計、開發和維護等方面。 一、需求分析 在設計和開發一個學生成績查詢系統之前,需要先進行需求分析。主要包括以下方面: 1、系統用…

    編程 2025-04-27
  • 學生html美食靜態網頁代碼評析

    一、HTML結構 <html> <head> <title>學生美食家</title> <link rel=”styleshe…

    編程 2025-04-23
  • 騰訊雲學生服務器教程

    騰訊雲是很多開發者和個體用戶都熟知的雲計算服務品牌,它提供了豐富的雲服務器,數據庫,存儲,安全,人工智能等服務,其中學生服務器是騰訊雲面向高校學生推出的雲服務器產品,它不僅支持完全…

    編程 2025-04-22
  • PyCharm學生認證

    一、什麼是PyCharm PyCharm是一款Python開發工具,提供了豐富的代碼編輯、智能提示、調試等功能。主要由JetBrains公司開發,被廣泛使用和認可。 PyCharm…

    編程 2025-02-05
  • 學生t分布簡介

    一、t分布是什麼? t分布是一種概率分布,用以描述小樣本量下的平均數估計值的不確定性。它看起來像標準正態分布,但是更寬一些,也更平坦一些。t分布和正態分布一樣,都是關於均值對稱的。…

    編程 2025-01-20
  • 關於php試題學生管理系統的信息

    本文目錄一覽: 1、學生管理系統php源碼誰有 2、如何用php代碼實現一個學生管理系統包括學生管理課程管理 3、求指導這個PHP學生管理系統如何連接數據庫使學生管理系統正常運行?…

    編程 2025-01-05

發表回復

登錄後才能評論