OGNL運算式 struts2
package com.cola.action;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import javax.servlet.http.HttpServletRequest;import org.apache.struts2.ServletActionContext;import com.cola.bean.User;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionSupport;/** * @注釋: jsp<------->Action 傳值:將待傳遞的對象通過set[A-->J] get[J-->A]方法進行傳遞 頁面使用struts2 * 標籤 和OGNL運算式 web對象不用setget方法 jsp頁面 value="#session.[索引值對的鍵名]" 2015年12月10日 jing */@SuppressWarnings("all")public class OGNLAction extends ActionSupport { private User stu = new User(); // 傳遞對象 private User techer = new User(); private User user = new User(); private List<User> list = new ArrayList<User>(); // 傳遞List private Map session; //由sruts 封裝通過ActionContext取出 private Map request; //由sruts 封裝通過ActionContext取出 private HttpServletRequest httprequest; //web 內建對象 直接使用 private Map<String,String> map = new HashMap<String,String>(); public OGNLAction() { // 獲得session 防止每次載入當前Action中的execute()的方法而清空session,特此放入建構函式中 session = ActionContext.getContext().getSession(); //獲得request ActionContext.getContext.get() 傳回型別為Object request = (Map) ActionContext.getContext().get("request"); //獲得httprequest httprequest = ServletActionContext.getRequest(); } @Override public String execute() throws Exception { // TODO Auto-generated method stub System.out.println("***************************"); user.setUsername("James"); user.setPassword("admin"); stu.setUsername("xiaoming"); stu.setPassword("123"); techer.setUsername("zhang"); techer.setPassword("123"); list.add(user); list.add(stu); list.add(techer); // 給session放入值 該session 類型為Map session.put("sesskey", "fool"); request.put("reqkey", "toofool"); httprequest.setAttribute("httpreqkey", "clever"); //map key可重複 map.put("1", "hello"); map.put("2", "hello"); map.put("3", "hello"); return SUCCESS; } public Map<String, String> getMap() { return map; } public void setMap(Map<String, String> map) { this.map = map; } public List<User> getList() { return list; } public User getUser() { return user; } public void setList(List<User> list) { this.list = list; } public void setUser(User user) { this.user = user; } public String show() { // 傳遞Action內的方法 return "this is show() of function!"; }}<%@ page language ="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%><%@taglib uri= "/struts-tags" prefix ="s" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content= "text/html; charset=utf-8"><title> Insert title here</ title></head><body><hr /><h1>this is OGNL jsp! </h1 >訪問普通屬性: <s:property value ="username" /> <br>訪問普通屬性方法: <s:property value ="username.length()" /> <br >訪問對象:<s:property value ="user"/>     < a> 已重寫toString</a> <br>訪問對象屬性: <s:property value ="user.username"/> < br>訪問對象屬性: <s:property value ="user.password"/> < br>訪問對象的方法: <s:property value ="user.fun()"/> <br>訪問action的方法: <s:property value ="show()"/> <br>訪問集合屬性: <s:property value ="list"/> <br>訪問集合大小: <s:property value ="list.ssize()"/> <br>遍曆整個集合: <br ><s:iterator value= "list"> <s:property /> <br ></s:iterator>< br><br>遍曆集合中放入對象的 username屬性(法一): <br ><s:iterator value= "list" > <s:property value ="username"/><br></s:iterator>< br><br>遍曆集合中放入對象的 username屬性(法二): <br ><s:iterator value= "list" var="v" > <s:property value ="#v.username"/>< br></s:iterator>< br><br>遍曆集合中放入對象的password屬性: <br ><s:iterator value= "list" > <s:property value ="password"/><br></s:iterator>< br>取得session:<s:property value ="#session.sesskey"/>< br>取得request:<s:property value ="#request.reqkey"/>< br>取得httprequest :<s:property value= "#request.httpreqkey"/><br ><hr><br><h2>struts2標籤:</ h2><h3>property:</ h3>< br><s:property value= "map"/> <br><s:property value= "map.keys"/> <br><s:property value= "map.values"/> <br><s:iterator value= "map"> <s:property value ="key"/> <---------------> <s:property value= "value"/><br ></s:iterator><h3>set:[不常用]</ h3><a>注意value=""中還有單引號,因為""裡面放的是OGNL運算式,字串需跟引號,否則為變數 </a ><s:set var="adminName" value= "'admins'" scope="session" /> <br><s:set var="adminName" value= "'admin'" scope="request" /> <br><s:property value= "#session.adminName"/> <br><s:property value= "#request.adminName"/> <br><s:property value= "#attr.adminName"/> <br><h3>s:bean------->相當於執行個體化bean</h3 ><br ><s:bean name= "com.cola.bean.User" var="doctor" > <s:param name ="username" value="'cola'" /> <s:param name ="password" value="'123'" /></s:bean>bean:< s:property value= "#doctor"/> <br> <br><h3>if:</ h3><s:if test="3>2"> true</ s:if><s:elseif test= "2==2">==</s:elseif ><s:else> false</ s:else> < br><a>列印 value stack【值棧表】 中的Action: </a ><br ><s:property value= "[0]"/><s:debug></ s:debug></body></html>