Struts組件總結

引言      

        上一篇博客,我們講解了struts開發程序的步驟,這次我們來詳細聊聊每個struts組件的功能吧~~

         首先,我們先回顧一下,struts的組件都有什麼:

         ActionServlet

         Acation Classes

         Action Mapping

        ActionForward

        ActionForm Bean

 

1、  ActionServlet(中心控制器)

        1) 定義: 繼承自javax.servelt.http.HttpServlet類,是中心控制器(總控制器)。它提供了一箇中心位置來處理全部的終端請求

         2)      作用:接受請求,填充數據,派發請求,響應用戶

         3)      配置:在web配置文件(web.xml)聲明:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <display-name></display-name>	
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
   <servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    <init-param>
      <param-name>config</param-name>
      <param-value>/WEB-INF/struts-config.xml</param-value>
    </init-param>
    <init-param>
      <param-name>debug</param-name>
      <param-value>2</param-value>
    </init-param>
    <init-param>
      <param-name>detail</param-name>
      <param-value>2</param-value>
    </init-param>
    <!-- 大於等於0 的時候表示一啓動就new好了servlet 。初始化的時候new
     struts-config.xml文件-,將struts的action標籤內容放到了actionmapping裏
    -->
    <load-on-startup>2</load-on-startup>
  </servlet>


  <!-- Standard Action Servlet Mapping -->
  <servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>
</web-app>


2、  Action(一個請求與業務邏輯的適配器)

       1)初始化時間:第一次請求的時候初始化(不是在讀取配置的時候初始化)

       2)初始化次數:每個Action只被初始化一次(多個請求共享一個Action)

       3)安全問題:Action是線程不安全的,因爲所有的請求共享一個Action實例

       4)配置:在struts-config.xml文件中:

 

<action path="/login"
	type="com.bjpowernode.struts.LoginAction"
	name="loginForm"
	scope="request"
>
       <forward name="success" path="/login_success.jsp"/>
       <forward name="error" path="/login_error.jsp"/>
			
</action>


3、  ActionMapping

       1) 一個實例對應了struts-config.xml文件中的一個<action>標籤

       2) 當我們建立一個Action類單純爲了頁面轉向時,可以通過在<forward>屬性裏轉向,就可以省去一個Action類

        3) unknown屬性:當請求的一個*.do不存在的時候,就會找<action>中的unknown屬性爲true的,如果有就轉向到這個頁面上。是一種容錯處理。

       4) input屬性:與異常有關,當出現問題,會跑到這個屬性所指的頁面上

       5) 數據保持:使用el表達式或者是struts標籤

<action-mappings>
	<action path="/login"
		type="com.bjpowernode.struts.LoginAction"
		name="loginForm"
		scope="request"
	>
		<forward name="success" path="/login_success.jsp"/>
		<forward name="error" path="/login_error.jsp"/>
		
	</action>
</action-mappings>

4、  ActionForward

        ActionForward對象是配置對象,封裝了向前進的Url路徑且被請求處理期用於識別的目標視圖。就是一個導航器。

        name:邏輯名稱

        path:頁面或者模塊的訪問路徑

       redirect:控制轉發還是重定向。默認值是false,就是轉發(RequestDispatch.forward),當爲true的時候表示是重定向(HttpServletResponse.sendRedirects)

<forward name="success" path="/login_success.jsp"/>
<forward name="error" path="/login_error.jsp"/>

5、  ActionForm Bean

        處理anctionForm的一般步驟:

       1)檢查Action的映射,確定Action中已經配置了對ActionForm的映射

       2)根據name屬性,查找formbean的配置信息

       3)檢查Action的formbean的使用範圍確定在此範圍下(request,session),是否已經有此formbean的實例<actionscope=”request”>,默認是session

       4)假如當前範圍下,已經存在了此form bean的實例,而且對於當請求來說,是同一種類型的話,那麼就重用

       5)否則,就重新構建一個formbean的實例(調用構造方法),並且保存在一定的作用範圍

       6)formbean的reset()方法被調用

       7)調用對應的setter方法,對狀態屬性賦值

       8)如果validate的屬性設置爲true,那麼就調用formbean的validate()方法

       9)如果validate()方法沒有返回任何的錯誤,控制器將ActionForm作爲參數,傳給Action實例的execute()方法並執行

注意:直接從ActionForm類繼承的reset()和validate()方法,並不能實現什麼處理功能,所以有必要自己重新覆蓋

<form-beans>
         <form-bean name="loginForm" type="com.bjpowernode.struts.LoginActionForm"/>
</form-beans>

總結

對於框架,我們首先要先有一個宏觀的瞭解,之後再一步步的深入!fighting~~~~

 

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