方法1:完全解耦和的方式訪問
簡介:解耦和也就是說在action中,沒有像servlet那樣,傳遞過來的參數中有request和response這兩個對象可以直接使用,action中沒有任何參數。但很多時候我們又需要使用這兩個對象,所以我們需要學習在action如何使用這兩個對象。這時我們可以使用action中的ActionContext對象,但是它也有侷限性就是隻能對域中的數據進行操作,而不能獲取到真正的對象。例如它可以向session中存值取值,但是它不能使用session的方法,如getSessionID()等。
使用方法如下所示:
- 首先我們創建一個類繼承ActionSupport,其他的代碼如下圖所示
- 我們編寫兩個jsp頁面進行驗證,一個頁面爲表單用來驗證是否可以取出提交的參數,另一個爲成功後跳轉的頁面,使用jstl標籤來展示從域中取到的值。
- 運行程序,進行驗證。這裏對於struts的配置就不再講解,如果對於struts的配置不清楚可以去看我前面的博客。可以看到控制檯已經成功打印出了我輸入的內容,並且成功頁面中也顯示出了我存在域中的值。
方法2:使用原生方法
簡介:和servlet中一樣,前較於第一種方法它既可以操作數據,又可以使用對象的方法。
使用方法如下所示:
- 首先我們創建一個類繼承ActionSupport,其他的代碼如下圖所示
- 我們編寫兩個jsp頁面進行驗證,一個頁面爲表單用來驗證是否可以取出提交的參數,另一個爲成功後跳轉的頁面,使用jstl標籤來展示從域中取到的值。這兩個頁面和之前的一樣。
- 運行程序,進行驗證。可以看到控制檯已經成功打印出了我輸入的內容,並且成功頁面中也顯示出了我存在域中的值。
方法3:通過接口注入的方式
簡介:我們只需要實現要求的接口就可以獲取到request對象和servletContext對象。後面的存值取值方法就和前面是一樣的了。
使用方法如下所示:
- 首先我們創建一個類實現接口ServletRequestAware,ServletContextAware,其他的代碼如下圖所示
- 我們編寫兩個jsp頁面進行驗證,一個頁面爲表單用來驗證是否可以取出提交的參數,另一個爲成功後跳轉的頁面,使用jstl標籤來展示從域中取到的值。這兩個頁面和之前的一樣。
- 運行程序,進行驗證。可以看到控制檯已經成功打印出了我輸入的內容,並且成功頁面中也顯示出了我存在域中的值。