ssh整合學習(1)

Hibernate框架

1 hibernate核心配置文件

(0)orm思想

-對象關系映射

(1)數據庫信息

(2)hibernate信息

(3)映射配置

(4)hibernate核心配置文件

-如果單純使用hibernate框架,核心配置文件名稱hibernate.cfg.xml和位置src下面固定的。

-hibernate和spring整合的時候,Hibernate核心配置文件名稱和位置沒有固定要求的。

?

2 hibernate映射配置文件

(1)實體類和數據庫表映射關系-使用orm思想

?

3 hibernate操作的步驟

(1)在spring框架對Hibernate框架進行封裝,使用hibernateTemplate

Struts2框架

1 Action操作

(1)action創建三種方式

-繼承類ActionSupport

(2)配置action訪問路徑

-創建struts.xml配置文件,這個文件名和位置固定在src下面的

(3)配置訪問action的多個方法

-使用通配符方式配置

(4)在action獲取表單提交數據

-獲取request對象

**使用ServletActionContext類獲取

-屬性封裝

-模型驅動(重點掌握)

-表達式封裝

(5)在action操作域對象

-使用ServletActionContext獲取域對象

(6)配置struts2的過濾器

過濾器名字叫StrutsPreparedAndExecuteFilter.

2 值棧

(1)向值棧放數據

-set方法

-push方法

-定義變量,生成get方法

?

(2)從值棧獲取數據

-在jsp中使用struts2標簽+ognl獲取

-<s:propetry>

-<s:iterator>

3 攔截器

(1)aop和責任鏈模式

(2)自定義攔截器

-繼承MethodFilterInterceptor

-重寫類里面的方法

-配置攔截器和action關聯

Spring框架

1 spring核心配置文件

(1)名稱和位置沒有固定要求

(2)在spring核心配置文件中引入schema約束

2 創建對象

(1)xml配置方法:<bean id="" class="" scope=""/>

(2)注解方法:四個注解

3 注入屬性(對象類型屬性)

(1)xml配置方式:

(2)注解方式:兩個注解

-autowired

-resource

4 使用ServletContext對象和監聽器實現

(1)在服務器啟動的時候,加載spring配置文件,創建對象

(2)配置spring的監聽器

(3)指定spring配置文件位置

5 jdbcTemplate

6 spring事務配置

(1)xml方式

(2)注解方式

SSH整合思想

整合struts2和spring框架

1 把struts2的action交給spring管理

2 實現過程

第一步 導入struts2的jar包

(1)導入用于整合的jar包

第二步? 創建action

第三步 創建struts2核心配置文件,配置action

(1)位置在src下面,名稱是struts.xml

第四步 配置struts2過濾器

第五步 導入spring的jar包

第六步 創建spring配置文件

(1)引入約束

(2)配置spring監聽器

(3)指定spring配置文件位置

<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener
</listener-class> </listener>
<context-param><param-name>contextConfigLocation</param-name><param-value>classpath:bean1.xml</param-value>
</context-param>

第七步 把action交給spring進行配置(*****)

<!-- 配置action對象 --><bean id="userAction" class="cn.itcast.action.UserAction" scope="prototype"><!-- 注入service --><property name="userService" ref="userService"></property></bean>

(1)在spring配置action對象,在struts.xml中也配置action對象

(2)解決:

只需要在spring里面配置action對象,不要再struts.xml中配置

<struts><package name="demo1" extends="struts-default" namespace="/"><!-- class屬性里面不寫action全路徑了,因為寫了,
      action對象創建兩次 寫spring配置的action的bean的id值
--><action name="userAction" class="userAction"></action></package> </struts>
<!-- 配置action對象 --><bean id="userAction" class="cn.itcast.action.UserAction" scope="prototype"><!-- 注入service --><property name="userService" ref="userService"></property></bean>

class屬性值寫在spring配置的action對象的bean標簽的id值

Spring框架整合hibernate框架

1 把hibernate核心配置文件中配置數據庫信息,把數據庫信息在spring進行配置

2 把Hibernate里面的sessionFactory創建交給spring管理

具體實現

第一步 導入hibernate的jar包

(1)導入struts2和hibernate的jar包時候有jar沖突問題

(2)在struts2里面有jar包

在hibernate里面有jar包

刪除低版本的jar包

(2)導入spring整合持久化層框架需要導入jar包

第二步 搭建hibernate環境

1 創建實體

2 配置實體類映射關系

3 創建核心配置文件

第三步 把Hibernate核心配置文件數據庫配置,在spring進行配置

(1)把hibernate核心文件中數據庫配置去掉了,在spring中配置

<!-- 配置c3p0連接池 --><bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"><!-- 注入屬性值 --><property name="driverClass" value="com.mysql.jdbc.Driver"></property><property name="jdbcUrl" value="jdbc:mysql:///spring_day04"></property><property name="user" value="root"></property><property name="password" value=""></property></bean>

第四步 把hibernate的sessionFactory交給spring配置

(1)服務器啟動時候,加載spring配置文件,把配置文件中對象創建

(2)把sessionFactory對象創建在spring配置

(3)因為創建sessionFactory代碼不是new出來的,而是多行代碼實現的。

static {// 加載核心配置文件cfg = new Configuration();cfg.configure();sessionFactory = cfg.buildSessionFactory();}

(4)spring里面針對上面情況,封裝類,配置類對象可以創建sessionFactory

<!-- sessionFactory的創建交給spring管理 --><bean id="sessionFactory"class="org.springframework.orm.hibernate5.LocalSessionFactoryBean"><!-- 指定使用hibernate核心配置文件中,沒有數據庫配置,數據庫配置在spring里面配置,注入dataSource --><property name="dataSource" ref="dataSource"></property><!-- 指定使用hibernate核心配置文件 --><property name="configLocations" value="classpath:hibernate.cfg.xml"></property></bean>

第五步 在dao里面使用hibernateTemplate

(1)在dao得到hibernateTemplate的對象

//得到hibernateTemplate對象private HibernateTemplate hibernateTemplate;public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {this.hibernateTemplate = hibernateTemplate;}

bean中dao的配置

<!-- 創建實現類對象 --><bean id="userDaoImpl" class="cn.itcast.dao.UserDaoImpl"><property name="hibernateTemplate" ref="hibernateTemplate"></property></bean><!-- 創建hibernateTemplate對象 --><bean id="hibernateTemplate" class="org.springframework.orm.hibernate5.HibernateTemplate"><!-- 注入sessionFactory --><property name="sessionFactory" ref="sessionFactory"></property></bean>

(2)調用Hibernate模板里面save方法添加

User user = new User();user.setUsername("rose");user.setAddress("japan");System.out.println("userDao...........");//調用save方法實現hibernateTemplate.save(user);

運行過程中可能會出現這樣的異常

這有可能是hibernateTemplate屬性值在bean中沒有配置,用debug找出錯誤所在。

我碰到的一個錯誤,配置沒有問題,而且也在bean中進行了事務管理,但是hibernateTemplate還是為null,問題出現在這里

UserAction如下所示:

@Overridepublic String execute() throws Exception {System.out.println("action.............");userService.add();return NONE;}

UserService中如下所示:

public void add(){UserDao dao = new UserDaoImpl();System.out.println("service.............");dao.add();}

?這里新創建一個dao,但是UserService已經在bean中進行配置了,并且userDao屬性也給了值,這里這樣新創建dao,那么UserDao中的hibernateTemplate,所以hibernateTemplate為null,解決辦法,把代碼修改成下面的樣子

public void add(){//UserDao dao = new UserDaoImpl();System.out.println("service.............");userDao.add();}

就可以了。

?如果沒有進行事務配置,就會出現如下異常

在bean中的事務配置如下所示:

<!-- 第一步 配置事務管理器 --><bean id="transactionManager"class="org.springframework.orm.hibernate5.HibernateTransactionManager"><!-- 注入sessionFactory --><property name="sessionFactory" ref="sessionFactory"></property></bean><!-- 第二步 開啟事務注解 --><tx:annotation-driven transaction-manager="transactionManager"/>

HibernateTemplate介紹

1 HibernateTemplate對hibernate框架進行封裝

直接調用HibernateTemplate里面的方法實現功能

?

2 HibernateTemplate常用的方法

·Serializable save(Object entity):添加操作

//1 get方法:根據id查詢User user = hibernateTemplate.get(User.class, 2);System.out.println(user.getUsername()+" "+user.getAddress());

?·List find(String queryString,Object... values):查詢操作的方法

find(String queryString, Object... values):List<?>-

(1)第一個參數是hql語句
(2)語句參數值

//2 find方法查詢所有記錄List<User> list = (List<User>) hibernateTemplate.find("from User");for(User user : list){System.out.println(user.getUsername()+" "+user.getAddress());}

條件查詢

//3 find方法條件查詢// 查詢username值lucyList<User> list = (List<User>) hibernateTemplate.find("from User where username=?", "lucy");//如果有多個問號,就多加參數//不管返回值有多少數據,返回值都是list集合for(User user : list){System.out.println(user.getUsername()+" "+user.getAddress());}

SSH框架整合過程

第一步 導入jar包

第二步 搭建struts2環境

(1)創建action,創建struts.xml,配置action

(2)配置struts2的過濾器

第三步 搭建hibernate環境

(1)創建實體類

(2)配置實體類和數據庫表映射關系

(3)創建hibernate核心配置文件

-引入映射配置文件

第四步 搭建spring環境

(1)創建spring核心配置文件

(2)讓spring配置文件在服務器啟動時候加載

-配置監聽器

<listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>

-指定spring配置文件位置

<context-param><param-name>contextConfigLocation</param-name><param-value>classpath:bean1.xml</param-value>
</context-param>

第五步 struts2和spring整合

(1)把action在spring配置(action多實例的)

<!-- 配置action對象 --><bean id="userAction" class="cn.itcast.action.UserAction" scope="prototype"><!-- 注入service --><property name="userService" ref="userService"></property></bean>

(2)在struts.xml中action標簽class屬性里面寫bean的id值

<package name="demo1" extends="struts-default" namespace="/"><!-- class屬性里面不寫action全路徑了,因為寫了,action對象創建兩次 寫spring配置的action的bean的id值 --><action name="userAction" class="userAction"></action>
</package>

第六步 spring和Hibernate整合

(1)把hibernate核心配置文件中的數據庫配置,在spring里面配置

<!-- 配置c3p0連接池 --><bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"><!-- 注入屬性值 --><property name="driverClass" value="com.mysql.jdbc.Driver"></property><property name="jdbcUrl" value="jdbc:mysql:///spring_day04"></property><property name="user" value="root"></property><property name="password" value=""></property></bean>

(2)把hibernate的sessionFactory在spring中配置

<!-- sessionFactory的創建交給spring管理 --><bean id="sessionFactory"class="org.springframework.orm.hibernate5.LocalSessionFactoryBean"><!-- 指定使用hibernate核心配置文件中,沒有數據庫配置,數據庫配置在spring里面配置,注入dataSource --><property name="dataSource" ref="dataSource"></property><!-- 指定使用hibernate核心配置文件 --><property name="configLocations" value="classpath:hibernate.cfg.xml"></property></bean>

第七步 在dao里面使用hibernateTemplate

(1)在dao注入hibernateTemplate對象

(2)在hibernateTemplate對象中注入sessionFactory

//得到hibernateTemplate對象private HibernateTemplate hibernateTemplate;public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {this.hibernateTemplate = hibernateTemplate;}
<!-- 創建實現類對象 --><bean id="userDaoImpl" class="cn.itcast.dao.UserDaoImpl"><property name="hibernateTemplate" ref="hibernateTemplate"></property></bean><!-- 創建hibernateTemplate對象 --><bean id="hibernateTemplate" class="org.springframework.orm.hibernate5.HibernateTemplate"><!-- 注入sessionFactory --><property name="sessionFactory" ref="sessionFactory"></property></bean>

第八步 配置事務

<!-- 第一步 配置事務管理器 --><bean id="transactionManager"class="org.springframework.orm.hibernate5.HibernateTransactionManager"><!-- 注入sessionFactory --><property name="sessionFactory" ref="sessionFactory"></property></bean><!-- 第二步 開啟事務注解 --><tx:annotation-driven transaction-manager="transactionManager"/>

在類中寫注解

@Transactional
public class UserService {

?

其他整合方式

1 spring整合hibernate的時候,可以不寫Hibernate核心配置文件

(1)把hibernate核心配置文件中,基本信息配置和映射引入都放到spring中進行配置。

spring中指定核心配置文件,去掉下面

<!-- 指定使用hibernate核心配置文件 -->
<property name="configLocations" value="classpath:hibernate.cfg.xml"></property>

然后spring中配置如下所示:

<!-- 配置hibernate基本信息 --><property name="hibernateProperties"><props><prop key="hibernate.show_sql">true</prop><prop key="hibernate.format_sql">true</prop><prop key="hibernate.hbm2ddl.auto">update</prop><prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop></props></property><!-- 配置映射文件引入 --><property name="mappingResources"><list><value>cn/itcast/entity/User.hbm.xml</value></list></property>

Spring分模塊開發

1 在spring里面配置多個內容,造成配置混亂,不利于維護。

2 把spring核心配置文件中,一部分配置放到單獨的配置文件中,在spring核心配置文件中引入單獨配置文件。

<!-- 引入其他spring配置文件 -->
<import resource="classpath:user.xml"/>

SSH聯系功能

1 客戶管理

(1)crud操作

2 聯系人管理

(1)配置一對多操作

(2)添加聯系人

-選擇聯系人所屬客戶

-struts2實現文件上傳

(3)聯系人列表

(4)修改聯系人

?

3 客戶拜訪管理

(1)多對多配置拆分成一對多來實現

4 綜合查詢

(1)多條件組合查詢

5 統計分析

(1)hibernateTemplate調用底層sql實現功能

6 其他知識

(1)SVN版本控制工具使用

(2)代碼重構(代碼優化)

-baseDao的抽取

(3)插件:jquery easyui

-jquery ajax操作

-json數據格式

完成任務

1 搭建ssh整合環境

2 復習知識

(1)jquery ajax操作

(2)json數據格式

?

轉載于:https://www.cnblogs.com/liaoxiaolao/p/9939006.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/249051.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/249051.shtml
英文地址,請注明出處:http://en.pswp.cn/news/249051.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MongoDB在不同主機間復制數據庫和集合的教程_MongoDB_腳本之家

MongoDB在不同主機間復制數據庫和集合的教程 更新時間&#xff1a;2016年07月04日 15:49:51 作者&#xff1a;lucifercn MongoDB自帶了clone一族JavaScript函數來進行數據的復制,這里我們總結了MongoDB在不同主機間復制數據庫和集合的教程,列舉出了一些主從復制操作中常用…

2018-2019-2 網絡對抗技術 20165305 Exp6 信息搜集與漏洞掃描

1.實踐目標 掌握信息搜集的最基礎技能與常用工具的使用方法。 2.實踐內容 &#xff08;1&#xff09;各種搜索技巧的應用 &#xff08;2&#xff09;DNS IP注冊信息的查詢 &#xff08;3&#xff09;基本的掃描技術&#xff1a;主機發現、端口掃描、OS及服務版本探測、具體服務…

Java 觀察者模式

定義&#xff1a;定義了對象之間的一對多依賴&#xff0c;讓多個觀察者對象同時監聽某一個主題對象&#xff0c;當主題對象發生變化時&#xff0c;它的依賴者&#xff08;觀察者&#xff09;都會收到通知并更新 適用場景&#xff1a; 關聯行為場景&#xff0c;建立一套觸發機制…

蘋果電腦快捷鍵有哪些?mac系統快捷鍵大全詳細介紹(全部)_蘋果MAC_操作系統_腳本之家

蘋果電腦快捷鍵有哪些&#xff1f;mac系統快捷鍵大全詳細介紹(全部) 電腦中的每對快捷鍵有對應了一種操作效果&#xff0c;對于使用蘋果電腦的操作系統的新人來說&#xff0c;快捷鍵是個很麻煩的問題&#xff0c;要一個個的找到快捷鍵也不是很容易的問題&#xff0c;本文就為大…

Oracle數據庫基礎入門《一》Oracle服務器的構成

Oracle數據庫基礎入門《一》Oracle服務器的構成 Oracle 服務器是一個具有高性能和高可靠性面向對象關系型數據庫管理系統&#xff0c;也是一 個高效的 SQL 語句執行環境。 Oracle 服務器具備以下的特點&#xff1a; ● 能夠可靠的進行多用戶環境下大量數據的處理&#xff0c;允…

虛擬機配置域名

1.虛擬機的hosts文件 2.本地電腦的hosts文件 轉載于:https://www.cnblogs.com/xiaobiaomei/p/10790907.html

查看端口、關閉端口

1.在dos命令下查看tomcat占用的進程&#xff0c;首先在運行里輸入cmd進入dos&#xff0c;輸入命令“netstat -ano | findstr 8080”&#xff08;tomcat默認端口為8080&#xff09;。查出PID&#xff08;最后一列就是&#xff09;&#xff0c;假設PID為207340&#xff0c;輸入命…

HTML5 新標簽總匯

HTML5 新標簽總匯 2010-12-16 20:44 聶微東 閱讀(5060) 評論(8) 編輯 收藏 HTML5新標簽總匯&#xff1a; 有問題歡迎指出,有關于CSS3方面的知識點較多,下周一前整理出來. <article> 標簽定義外部的內容&#xff08;外部內容如blog,news&#xff09;。     …

Web文件管理器 elfinder-彩龍社區

最近接到一個需求&#xff0c;客戶需要能在web頁面進行文件管理&#xff0c;在需求調研時發現一個很好用的開源web文件管理器插件 elfinder&#xff0c;功能比較完善&#xff0c;社區也很活躍&#xff0c;方便二次開發&#xff0c;源碼在GitHub上有將近3K的star&#xff0c;而且…

springmvc中對日期格式化的處理

DateTimeFormat(pattern"yyyy-MM-dd") 返回的時候java.util.Date pattern"yyyy-MM-dd"必須要和頁面中的日期格式對應。 contraller層&#xff1a; package com.chenk.web.controller;import org.springframework.stereotype.Controller; import org.spring…

再次學習javascript中的參數傳遞

javascript中的全部函數的參數傳遞都是依照值傳遞的&#xff0c;做了以下測試&#xff1a; function addTen(num){num 10;return num; }var count 20; var result addTen(count); alert(cont); //20 alert(result); //30 好吧。上面僅僅是做了基本類型的傳遞&#xff0c;再…

基于spring-boot和elfinder的在線文件管理

基于spring-boot和elfinder的在線文件管理 大家好&#xff0c;我是帥氣小伙&#xff0c;今天為大家分享的是一個輪子&#xff0c;最近在項目中需要一些CMS的功能&#xff0c;在線管理一些靜態資源文件&#xff0c;在經過一番資料查找&#xff0c;最終決定使用elfinder。它的官方…

bzoj 4736: 溫暖會指引我們前行 (LCT 維護最大生成樹)

鏈接&#xff1a;https://www.lydsy.com/JudgeOnline/problem.php?id4736 題面&#xff1a; 寒冬又一次肆虐了北國大地 無情的北風穿透了人們御寒的衣物 可憐蟲們在冬夜中發出無助的哀嚎 “凍死寶寶了&#xff01;” 這時 遠處的天邊出現了一位火焰之神 “我將賜予你們溫暖和希…

WPF使用IDataErrorInfo進行數據校驗

WPF使用IDataErrorInfo進行數據校驗 原文:WPF使用IDataErrorInfo進行數據校驗這篇博客將介紹如何使用IDataErrorInfo進行數據校驗。下面直接看例子。一個Customer類&#xff0c;兩個屬性(FirstName, Age) class Customer {public string FirstName{get;set;}public int Age{get…

web 界面設計 Axure元件樣式

找不到原創了&#xff0c;若侵權&#xff0c;請聯系博主刪除&#xff01;謝謝

cf 786 B 線段樹優化建圖

cf 786 B 鏈接 CF 思路 n個點&#xff0c;3種建邊方式&#xff0c;規模\(O(n^2)\) 線段樹優化建圖 注意 讀入的數據好坑啊&#xff0c;說好的v,u變成了u,v。 兩棵樹&#xff0c;一棵出&#xff0c;一棵入。線段樹的作用只不過是按照那個形狀建邊而已&#xff0c;并沒啥用。 初始…

mysql -uroot -p -P3306 -h192.168.0.111無法遠程連接mysql

1 在裝有MySQL的機器上登錄MySQL mysql -u root -p密碼2 執行USE mysql; 3 執行UPDATE user SET host % WHERE user root;這一句執行完可能會報錯&#xff0c;不用管它4 執行FLUSH PRIVILEGES; 4---> 刷新權限表&#xff0c;更改后需執行才能生效。 一篇博客&#xff1a;h…

iPhone6和iPhone6 plus的iOS8設計尺寸參考指南

找不到原創了&#xff0c;若侵權&#xff0c;請聯系博主刪除&#xff01;謝謝

歐幾里得

轉載于:https://www.cnblogs.com/morui/p/10799359.html

pl/sql下DBMS_OUTPUT.PUT_LINE的輸出位置

項目里存儲過程中用到DBMS_OUTPUT.PUT_LINE進行輸出日志&#xff0c;一開始不知道在哪里看&#xff0c;網上很多都是直接運行后的位置。但是儲過程中的日志找了好一會&#xff0c;記錄一下。 1、運行時輸出位置。 declarein_interval_start_id varchar2(40);in_interval_end_id…