<?xml:namespace prefix = st1 />1.1.1 業務控制器
為本示例建立一個業務控制器,該控制器用到了代碼8.1中定義的Person人員信息類。該業務控制器如代碼8.4所示。
代碼8.4 Struts 2的OGNL示例業務控制器
package ch8; import java.util.Date; import java.util.LinkedList; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; public class OgnlAction extends ActionSupport { //List類型屬性 private List persons; //execute方法 public String execute() throws Exception { // 獲得ActionContext實例,以便訪問Servlet API ActionContext ctx = ActionContext.getContext(); // 存入application ctx.getApplication().put("msg", "application信息"); // 保存session ctx.getSession().put("msg", "seesion信息"); // 保存request信息 HttpServletRequest request = ServletActionContext.getRequest(); request.setAttribute("msg", "request信息"); //為persons賦值 persons = new LinkedList(); Person person1=new Person(); person1.setName("pla1"); person1.setAge(26); person1.setBirthday(new Date()); persons.add(person1);
Person person2=new Person(); person2.setName("pla2"); person2.setAge(36); person2.setBirthday(new Date()); persons.add(person2); Person person3=new Person(); person3.setName("pla3"); person3.setAge(16); person3.setBirthday(new Date()); persons.add(person3); return SUCCESS; } public List getPersons() { return persons; } public void setPersons(List persons) { this.persons = persons; } } |
該業務控制器分別在application、session和request中存入名為“msg”的字符串信息,另外定義了一個List類型屬性,同時添加了兩個Person類型元素。在配置文件中增加了相應的配置,代碼如下:
1.1.2 JSP視圖
showognl.jsp是使用了OGNL表達式的JSP視圖,視圖用來顯示Action中處理的各種信息,讀者可以看到,使用OGNL表達式,代碼更加簡潔和直觀,如代碼8.5所示。
代碼8.5使用OGNL表達式的JSP視圖
http://www.w3.org/TR/ xhtml1/DTD/xhtml1-transitional.dtd">
http://www.w3.org/1999/xhtml">
訪問OGNL上下文和Action上下文parameters: request.msg: session.msg: application.msg: attr.msg:
用于過濾和投影(projecting)集合 年齡大于20 1.??????????????????????? - 年齡: 姓名為pla1的年齡:
構造Map The value of key "foo1" is |
1.1.3 運行示例
在瀏覽器中輸入http://localhost:8080/bookcode/ch8/OgnlAction.action?msg=hello,運行結果如圖8.3所示。

|
圖8.3 Struts 2中使用OGNL表達式 |
★說明★
本示例演示了如何使用OGNL表達式來訪問OGNL上下文和值棧,同時演示了如何使用OGNL表達式進行集合操作。對讀者深入理解Struts 2中OGNL表達式的使用有所幫助。
posted on 2009-08-15 17:29
jadmin 閱讀(86)
評論(0) 編輯 收藏