java程序員的基礎知識篇,回顧ssh

本文是上一篇文章的後續文,具體請回顧上文

二十一、Ssh的概述:

java程序員的基礎知識篇,回顧ssh

ssh是web開發中常見的一種框架

s-struts

s-spring

h-hibernate

其中struts在框架中充當控制器,實現MVC,主要用來處理用戶的請求,和跳轉頁面。使項目結構清晰,開發者只需要關注業務邏輯的實現即可。

spring在ssh充當粘合劑,粘合struts-sping-hibernate,主要用來進行事物的控制,

hibernate-充當數據庫持久層,主要用它來與數據庫交互,提高開發效率,減輕程序員sql控制要求,而且hibernate通過反射機制,有靈活的映射性,還支持各種關係,一對一,一對多,多對多。

在進行ssh整合的時候,我們應該注意:

1. Action繼承於ActionSupport

引入struts-spring-plugin.jar包,從而完成struts和spring的整合

在struts2的action中注入service,保證service的名字和配置文件中的一致,並生成get,set方法

Dao層繼承於hibernateDaoSupport

在dao層的配置文件中注入sessionFactory

二十二、防止表單重複提交

針對於重複提交的整體解決方案:

1.用redirect來解決重複提交的問題

2.點擊一次之後,按鈕失效

3.通過loading

4.自定義重複提交過濾器

5.解決struts2重複提交

可以結合s:token標籤來解決重複提交問題

利用token的原理:

1.在前端的jsp頁面中加入s:token標籤,在訪問該頁面時就會生成

隱藏域,該隱藏域中包含一個隨機生成的字符串,並把該字符串

存入session中

2.在struts2的配置文件中加入token攔截器後,當正常訪問action

的時候,會從session中取出該字符串,然後和頁面隱藏域中提交

字符串做對比,如果一致則正常執行並刪除session中存儲的字符串。

二十三、JSP標籤:

1.JSP include動作

jsp:include 動作

以“ ” 結束

比如:

2.JSP指令:

以“ ” 結束。比如:

3.JSP輸出表達式:

輸出變量的值,後邊不能加

4.JSP Scriptlet【腳本】:

例子:

例子:

String getHello(String name) {

return "Hi," + name + "!";

}

%>

6.迭代標籤:

Jstl中的核心標籤(core)

7.JSP註釋:

8.el表達式:${}

9.jsp:include動作是在運行時動態包含。

@include指令是在編譯時包含。

它們兩個都只能包含本項目的相關文件,不能包含其他項目的。

如果要包含其他項目的文件可以使用c:import

二十四、過濾器

filter的概述:

filter是一個過濾器,用來在請求前和響應後進行數據的處理。

filter的生命週期是:

實例化--->初始化(init)-->進行過濾(doFilter)--->銷燬(destroy)-->釋放資源

一個Filter必須實現javax.servlet.Filter接口

在項目中我們通常通過filter進行編碼轉換,

進行安全驗證,進行重複提交的判斷。

瞭解(不需要主動說)

filter 相當於 攔截器 相當於Spring AOP

servlet+jsp+javabean+jdbc+filter

encodingFilter

org.leopard.filter.EncodingFilter

encode

utf-8

encodingFilter

*

二十五、攔截器的理解

什麼是攔截器:

攔截器是AOP中的概念,它本身是一段代碼,可以通過定義“織入點”,來指定攔截器的代碼在“織入點”的前後執行,從而起到攔截的作用

正如上面 Struts2的Reference中講述的,Struts2的Interceptor,其攔截的對象是Action代碼,可以定義在Action代碼之前或者之後執行攔截器的代碼。

在項目中,我們經常用來攔截通過非正常程序而進行的訪問

Struts2的攔截器和Servlet過濾器類似。在執行Action的execute方法之前,Struts2會首先執行在struts.xml中引用的攔截器,在執行完所有引用的攔截器的intercept方法後,會執行Action的execute方法。

其中intercept方法是攔截器的核心方法,所有安裝的攔截器都會調用之個方法。在Struts2中已經在struts-default.xml中預定義了一些自帶的攔截器,如timer、params等。如果在標籤中繼承struts-default,則當前package就會自動擁有struts-default.xml中的所有配置。代碼如下:

...

攔截器是Struts2框架的核心,它主要完成解析請求參數、將請求參數賦值給Action屬性、執行數據校驗、文件上傳等工作

在struts-default.xml中有一個默認的引用,在默認情況下(也就是中未引用攔截器時)會自動引用一些攔截器。struts2中默認的攔截器是defaultStack.

自定義攔截器需要特別注意的是不要忘記引入struts2默認的攔截器。為了實現某些操作,我們可以自定義攔截器,

自定義攔截器有三種方式定義。分別為實現Interceptor接口,繼承抽象類AbstractInterceptor,繼承MethodFilterInteceptor類。

攔截器在項目中的運用:

同時可以減輕代碼冗餘,提高重用率。

如果要求用戶密碼、權限等的驗證,就可以用自定義的攔截器進行密碼驗證和權限限制。對符合的登入者才跳轉到正確頁面。

二十六、Spring融入框架

我們通過在web.xml中配置ContextLoaderListener這個監聽器也加載

spring的配置文件,從而融入到項目框架中。

二十七、項目的部署方式

1、如果項目單獨部署到tomcat中的時候,應該看tomcat中的server.xml;

2、如果和eclipse結合使用進行項目部署的時候,應該看eclipse裡面的server.xml.

本文為下一篇文章的前篇,下一篇是--------數據庫篇,詳情請關注

java程序員的基礎知識篇,回顧ssh


分享到:


相關文章: