1. 程式人生 > >struts.xml文件中action配置、OGNL的投影映射、OGNL表達式的符號

struts.xml文件中action配置、OGNL的投影映射、OGNL表達式的符號

傳參 路徑 req rop [0 path 中一 prop 後綴


在struts.xml文件中不同的action配置,請求的路徑是不一樣的
1、請求 path = user!query.action; 配置如下;
<action name="user" class="com.bwf.code.action.UserAction">
<result name="queryUser">/query.jsp</result>
</action>

2、請求path = user.action ; 配置如下:
<action name="user" method="query" class="com.bwf.code.action.UserAction">
<result name="queryUser">/query.jsp</result>
</action>
user.action 因為匹配到struts2的後綴名稱,所以struts2會實施攔截, 攔截匹配到path後執行該類的execute方法, 如果明確指明了
具體的方法名,就執行具體的方法;


3、第2步中的弊端在於,該類中一般會有很多個業務處理方法,不同的方法都需要配置一個action標簽;

如下面這個例子,新增和查詢需寫兩個標簽;
<action name="user" method="query" class="com.bwf.code.action.UserAction">
<result name="queryUser">/query.jsp</result>
</action>
<action name="user2" method="add" class="com.bwf.code.action.UserAction">
<result name="queryUser">/query.jsp</result>
</action>

有沒有一個辦法,一個類只寫一個action標簽,然後該類中的所有業務處理方法,都共享該類的配置關系; 通配;

4、 每個類只需要寫一個action標簽,然後對該類中的方法名稱進行通配;
<action name="user_*" method="{1}" class="com.bwf.code.action.UserAction">
<result name="queryUser">/query.jsp</result>
</action>

5、對所有類,所有方法進行通配(先暫時別用,先用第四個的通配)
<action name="*_*" method="{1}" class="com.bwf.code.action.{2}Action">
</action>



OGNL的投影映射
判斷user屬性存在某一個字符串的條件: <s:iterator var="x" value="#attr.userList.{?#this.getUser().indexOf(‘a‘)!=-1}">
判斷user屬性以某一個字符開頭: <s:iterator var="x" value="#attr.userList.{?#this.getUser().startsWith(‘sh‘)}">



OGNL表達式的符號: #,$,%。
# 表示上下文作用域; (parameters、reqeust、session、application、attr)
parameters: #parameters.id[0]作用相當於 request.getParameter("id") .
request : #request.userList 作用相當於 request.getAttribute("userList");
session : #session.userList 作用相當於 session.getAttribute("userList");
application : #application.userList 作用相當於 application.getAttribute("userList");
attr: #attr.userList; 從request,session,application中從小到大的範圍查找當前作用對象;

% 主要使用在資源文件中(如國際化、提示信息).
<s:property value="%{getText(‘bwf.jsp.query.name‘)}" />
可以在瀏覽器設置語言中設置不同的語言,即可看到國際化效果;

$ 主要作為傳參存在;
<action name="ognl" class="com.lxit.struts.OgnlAction">
<result type="redirect">hello.action?name=${name}</result>
</action>


struts.xml文件中action配置、OGNL的投影映射、OGNL表達式的符號