ssh總結

一、Hibernate

1、 主鍵生成策略

1.1<!-- 數值類型 -->

<!-- assigned手工生成 -->

<!--  

<id name="tid" column="tid">

<generator class="assigned"></generator>

</id>

-->

<!-- native通用(如果是mysqlsqlserver自動查找自增長列,如果是oralce或則db2會找hibernate_sequence的序列,hibernate_sequence需要在數據庫裏創建) -->

<!--  

<id name="tid" column="tid">

<generator class="native"></generator>

</id>

-->

<!-- identity 只針對sqlserver使用,oralce不能用 -->

<!--  

<id name="tid" column="tid">

<generator class="identity"></generator>

</id>

-->

<!-- increment 查詢數據字段中最大致加1方式生成主鍵(併發操作有問題) -->

<!--  

<id name="tid" column="tid">

<generator class="increment"></generator>

</id>

-->

<!-- sequence 使用序列,只有Oracle可以用 -->

<!--  

<id name="tid" column="tid">

<generator class="sequence">

<param name="sequence">seq_temp_tid</param>

</generator>

</id>

-->

1.2<!-- 字符類型 -->

<!-- assigned手工生成 -->

<!--  

<id name="tid" column="tid">

<generator class="assigned"></generator>

</id>

-->

<!-- uuid   主鍵爲隨機生成的32位僞列-->

<id name="tid" column="tid">

<generator class="uuid"></generator>

</id>

二、DWR使用(在dwrpro項目中)

2.1什麼是DWR

DWR Direct Web Remoting

開源,免費的Ajax框架

Java類發佈爲JavaScript可調用的腳本對象

提供JavaScript工具類,簡化頁面編碼

2.2爲什麼要使用DWR

DWR其功能的強大在於它可以用一種前所未有的便利方式將前端頁面中的js與後端服務器中的java程序進行直接的轉換。比如,它可以將java程序中的某個類在js中生成一個相應的對象,並可以調用發佈的方法

2.3實現的3個步驟:

1、安裝DWRJAR文件

   dwr.jar放置在應用程序的WEB-INF/lib 下;

   DWR2.0開始需要commons-logging.jar類庫。

2、編輯DWR配置文件

   修改WEB-INF/web.xml 加入DWR servlet

      

   WEB-INF 下創建dwr.xml 文件

     <!-- dwr配置根標籤 -->    

<dwr>

<!--

allow標籤  java類和js腳本關係

-->

<allow>

<!-- 下面爲測試環境使用(正式開發時不需要寫) -->

<!--

create標籤    創建DWR對象

creator屬性   默認爲new

javascript屬性    前臺js調用對象的名稱

-->

<create creator="new" javascript="JDate">

<!--  

param標籤    參數設置

name屬性     默認爲class

value屬性    後臺java類的名稱

-->

<param name="class" value="java.util.Date" />

</create>

<create javascript="Test" creator="new">

 <param  name="class" value="com.web.dwr.TestDwr"></param>

</create>

<!-- 如果參數或者返回值中包含對象 -->

<convert converter="bean" match="com.web.vo.User" />

</allow>

</dwr>

3、測試DWR是否配置成功

  在瀏覽器地址欄中輸入:

  http://localhost:8080/dwrme/dwr/index.html

  其中:dwrme表示項目工程名

       /dwr/index.html是固定的路徑

4、運用在相應的Jsp頁面

   <!-- DWR中在Jsp頁面必須添加此三行代碼,/dwr/interface/Test.jsTest.js表示在dwr.xml中定義的js對象(javascript屬性內容) -->

<script type="text/javascript" src="<%=path %>/dwr/engine.js"></script>

   <script type="text/javascript" src="<%=path %>/dwr/util.js"></script>

   <script type="text/javascript" src="<%=path %>/dwr/interface/Test.js"></script>

<script type="text/javascript">

function fun1(){

        //getString是在TestDwr類中定義的方法,Test.getString表示對象名.屬性名

        //Testjavascript對象

Test.getString(function(data){//此處的function是回調函數

alert(data);

});

}

</script>

<input type="button" value="返回值是字符串" οnclick="fun1()"/>

 

Map集合參數賦值:(鍵值對)

var map = {"110":"lifan","111":"zhangsan","112":"lisi"};

對象參數賦值:(鍵值對)

       var user = {"usercode":"lifan","password":"123456"};

List集合參數:

       var list = ["呵呵","哈哈","哦哦"];

 

       function fun9(){

var list = ["呵呵","哈哈","哦哦"];

Test.paramList(list,function(data){

alert(data);

});

 }

 

function fun10(){

var map = {"110":"lifan","111":"zhangsan","112":"lisi"};

Test.paramMap(map,function(data){

alert(data);

});

}

function fun11(){

var user = {"usercode":"lifan","password":"123456"};

Test.paramUser(user,function(data){

alert(data);

});

}

<input type="button" value="Map集合參數" οnclick="fun10()"/>

  <input type="button" value="對象參數" οnclick="fun11()"/>

<input type="button" value="List集合參數" οnclick="fun9()"/>

三、Struts2

3.1Struts2中配置控制類

<!-- struts根標籤 -->

<struts>

<!--

package標籤   配置包(可以有多個)

name屬性    隨便寫(不能重名)

extends屬性   繼承struts框架核心功能  固定:struts-default

namespace屬性   命名空間(url訪問的前綴)

-->

<package name="hellopack" extends="struts-default" namespace="/">

<!--

action標籤  配置具體action實現 (action可以有多個)

name屬性  請求地址字符串;必須與前臺的表單或者鏈接請求到struts後臺輸入的地址一樣(URL

class屬性   接受前臺請求,並處理要前臺數據的相應的完整類名

-->

<action name="hello" class="com.web.action.HelloAction">

<!--

result標籤   配置請求處理後頁面跳轉(result可以有多個)

name屬性       Action返回字符串(默認:success)

標籤主體部分    配置資源文件(jsp);根據不同的name屬性值返回到對應的jsp頁面

-->

<result name="success">/index.jsp</result>

</action>

</package>

 

<package name="userpack" extends="struts-default" namespace="/">

<!--

   method屬性    配置處理請求方法名稱  (默認:execute)

    其值要與對應的類名中的方法名一樣

-->

<action name="login" class="com.web.action.UserAction" method="login">

<result>/success.jsp</result>

<result name="login">/login.jsp</result>

</action>

<action name="reg" class="com.web.action.UserAction" method="reg">

<result>/login.jsp</result>

</action>

</package>

 

<package name="mypack" extends="struts-default" namespace="/">

<action name="hello" class="com.web.action.HelloAction">

<!--  

type屬性   設置控制跳轉模式

  dispatcher轉發到其他資源文件(jsp)

  chain轉發到其他Action

  redirect重定向到其他資源文件(jsp)

  redirectAction重定向到其他Action

-->

<result type="redirectAction">list</result>

</action>

<action name="list" class="com.web.action.HelloAction" method="list">

<result >/index.jsp</result>

</action>

   <!-- 如果在地址欄中輸入http://localhost:8080/struts03/hello,最後地址欄會跳轉到http://localhost:8080/struts03/list.action-->

</package>

</struts>    

 

 

四、OGNL標籤

字符串解析標籤:

<s:generator separator="," val="'11111,22222,333333'">

     <s:iterator>

     <s:property/><br/>

     </s:iterator>

    </s:generator>

    

    <c:forTokens items="aaaa,bbbb,cccc" delims="," var="s">

     ${s }<br/>

    </c:forTokens>

 

動作標籤:

<s:action name="list" namespace="/" executeResult="true"></s:action>

 executeResult="true"必須爲true

五、配置攔截器

<struts>

<!-- 使用國際化配置此內容 -->

<constant name="struts.custom.i18n.resources" value="res"></constant>

<package name="testpack" extends="struts-default" namespace="/">

<!-- 定義一組攔截器 -->

<interceptors>

<!--  

interceptor標籤    配置攔截器(可以有多個)

name屬性      攔截器的名稱(隨便寫)

class屬性    攔截器的類名稱

-->

<interceptor name=”iner1” class="com.web.interceptor.MyInterceptor1"></interceptor>

<interceptor name=”iner2” class="com.web.interceptor.MyInterceptor2"></interceptor>

<!--

interceptor-stack標籤   定義攔截器棧

name屬性   隨便寫

-->

<interceptor-stack name="mystack">

<!-- 指定攔截器棧中的攔截器 -->

<interceptor-ref name="inter1"></interceptor-ref>

<interceptor-ref name="inter2"></interceptor-ref>

</interceptor-stack>

</interceptors>

<action name="test" class="com.web.action.TestAction">

<result>/index.jsp</result>

<!-- 如果一旦編寫自定義攔截器,默認的攔截器需要顯示的編寫 -->

<interceptor-ref name="defaultStack"></interceptor-ref>

<!-- action添加指定攔截器 -->

<!--  

<interceptor-ref name="inter1"></interceptor-ref>

<interceptor-ref name="inter2"></interceptor-ref>

-->

<!-- action添加執行攔截器棧 -->

<interceptor-ref name="mystack"></interceptor-ref>

</action>

<action name="add" class="com.web.action.AddAction">

<result>/index.jsp</result>

<!-- 配置如果攔截到重複提交的錯誤時跳轉頁面 -->

<result name="invalid.token">/add.jsp</result>

<!-- 配置防止重複提交的攔截器 -->

<interceptor-ref name="token"></interceptor-ref>

<!-- 自帶默認攔截器 -->

<interceptor-ref name="defaultStack"></interceptor-ref>

<!-- 顯示action執行時間,用於性能瓶頸測試 -->

<interceptor-ref name="timer"></interceptor-ref>

</action>

</package>

</struts>   

 

改善輸出界面:

配置資源文件

六、Spring

6.1spring模塊

1)Spring核心模塊(Spring Core)

Spring的核心容器模塊,它提供IOC的支持。該模塊中包含BeanFactory,它採用工廠模式來實現IOC,負責對bean的生命週期的管理。

2)Application Context(上下文模塊)

該模塊擴展了BeanFactory的功能,例如提供了i18n,系統生命週期以及驗證的支持SpringAOP模塊

該模塊爲應用系統的AOP開發提供了支持。

3)JDBCDAO模塊

提供了JDBC封裝的模板代碼,使得使用JDBC開發更加簡潔。

4)ORM映射模塊

該模塊提供了對許多流行的ORM框架的支持,其中包括Hibernate,JDOiBATIS SQL的支持Spring Web模塊

該模塊中Spring提供了對其它的WEB框架的支持,包知StrutsJSFWEBWORK

5)Spring MVC框架

Spring提供的用於開發WEB應用的MVC框架

6.2spring核心應用

IOC(控制反轉)

程序中各個組件之間的關係,不由程序代碼直接操控,而由容器控制。控制權由應用代碼中轉到了外部容器,即所謂的反轉。 (把自己new的東西改爲由容器提供)

更通俗的名稱:DI(依賴注入)

各個組件之間的依賴關係不是在程序中寫死,而是寫在外部的配置文件中,然後運行時通過容器動態注入。

Spring核心容器提供了IOC的具體實現,所有的其它模塊都是建立在它的基礎之上。

 

6.3自己總結

每次新增一個功能需要在com.web.dao.impl下新增一個類去實現接口(UserDAO.java),在配置文件中添加<bean name="userDAOImpl4"class="com.web.dao.impl.UserDAOImpl4"></bean>

並更改<property name="userDAO" ref="userDAOImpl4"></property>ref的屬性值



----------

後續將不斷更新

 

 

 

 

 

 

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章