当前位置: 首页 > news >正文

Python 查询网站开发东莞网站开发推荐

Python 查询网站开发,东莞网站开发推荐,公司产品展示网站源码,免费做网站手机软件OGNL(Object-Graph Navigation Language)的概念#xff1a; OGNL是Object-Graph Navigation Language的缩写#xff0c;全称为对象图导航语言#xff0c;是一种功能强大的表达式语言#xff0c;它通过简单一致的语法#xff0c;可以任意存取对象的属性或者调用对象的方法 OGNL是Object-Graph Navigation Language的缩写全称为对象图导航语言是一种功能强大的表达式语言它通过简单一致的语法可以任意存取对象的属性或者调用对象的方法能够遍历整个对象的结构图实现对象属性类型的转换等功能。   1.OGNL表达式的计算是围绕OGNL上下文进行的。  OGNL上下文实际上就是一个Map对象由ognl.OgnlContext类表示。它里面可以存放很多个JavaBean对象。它有一个上下文根对象。  上下文中的根对象可以直接使用名来访问或直接使用它的属性名访问它的属性值。否则要加前缀“#key”。   2.Struts2的标签库都是使用OGNL表达式来访问ActionContext中的对象数据的。  如s:propertyvaluexxx/。   3.Struts2将ActionContext设置为OGNL上下文并将值栈作为OGNL的根对象放置到ActionContext中。   4.值栈(ValueStack)  可以在值栈中放入、删除、查询对象。访问值栈中的对象不用“#”。  Struts2总是把当前Action实例放置在栈顶。所以在OGNL中引用Action中的属性也可以省略“#”。 5.调用ActionContext的put(key,value)放入的数据需要使用#访问。 OGNL中重要的3个符号#、%、$: #、%和$符号在OGNL表达式中经常出现而这三种符号也是开发者不容易掌握和理解的部分需要时间的积累才渐渐弄清楚…… 1#符号 #符号的用途一般有三种。    —访问非根对象属性例如#session.msg表达式由于Struts 2中值栈被视为根对象所以访问其他非根对象时需要加#前缀。实际上#相当于ActionContext. getContext()#session.msg表达式相当     于ActionContext.getContext().getSession(). getAttribute(msg) 。    —用于过滤和投影projecting集合如persons.{?#this.age25}persons.{?#this.namepla1}.{age}[0]。    —用来构造Map例如示例中的#{foo1:bar1, foo2:bar2}。 2%符号    %符号的用途是在标志的属性为字符串类型时计算OGNL表达式的值这个类似js中的eval很暴力。 3$符号     $符号主要有两个方面的用途。        —在国际化资源文件中引用OGNL表达式例如国际化资源文件中的代码reg.agerange国际化资源信息年龄必须在${min}同${max}之间。        —在Struts 2框架的配置文件中引用OGNL表达式例如 1 validators 2 field nameintb 3 field-validator typeint 4 param namemin10/param 5 param namemax100/param 6 messageBAction-test校验数字必须为${min}为${max}之间/message 7 /field-validator 8 /field 9 /validators     深入理解OGNL action类OgnlAction.java 1 package com.tjcyjd.test.action; 2 3 import java.util.Date; 4 import java.util.LinkedList; 5 import java.util.List; 6 7 import javax.servlet.http.HttpServletRequest; 8 9 import org.apache.struts2.ServletActionContext; 10 import org.apache.struts2.convention.annotation.Action; 11 import org.apache.struts2.convention.annotation.Namespace; 12 import org.apache.struts2.convention.annotation.ParentPackage; 13 import org.apache.struts2.convention.annotation.Result; 14 import org.apache.struts2.convention.annotation.Results; 15 import org.springframework.stereotype.Controller; 16 17 import com.opensymphony.xwork2.ActionContext; 18 import com.opensymphony.xwork2.ActionSupport; 19 20 Controller 21 Namespace(/test) 22 ParentPackage(struts-default) 23 Results( { Result(name success, location /other_test/showognl.jsp), 24 Result(name fail, location /bbs/admin_login.jsp), 25 Result(name input, location /bbs/admin_login.jsp) }) 26 public class OgnlAction extends ActionSupport { 27 private static final long serialVersionUID -1494290883433357310L; 28 private ListPerson persons; 29 30 Action(ognlTest) 31 public String ognlTest() throws Exception { 32 // 获得ActionContext实例以便访问Servlet API 33 ActionContext ctx ActionContext.getContext(); 34 // 存入application 35 ctx.getApplication().put(msg, application信息); 36 // 保存session 37 ctx.getSession().put(msg, seesion信息); 38 // 保存request信息 39 HttpServletRequest request ServletActionContext.getRequest(); 40 request.setAttribute(msg, request信息); 41 // 为persons赋值 42 persons new LinkedListPerson(); 43 Person person1 new Person(); 44 person1.setName(pla1); 45 person1.setAge(26); 46 person1.setBirthday(new Date()); 47 persons.add(person1); 48 49 Person person2 new Person(); 50 person2.setName(pla2); 51 person2.setAge(36); 52 person2.setBirthday(new Date()); 53 persons.add(person2); 54 55 Person person3 new Person(); 56 person3.setName(pla3); 57 person3.setAge(16); 58 person3.setBirthday(new Date()); 59 persons.add(person3); 60 61 return SUCCESS; 62 63 } 64 65 public ListPerson getPersons() { 66 return persons; 67 } 68 69 public void setPersons(ListPerson persons) { 70 this.persons persons; 71 } 72 } jsp页面showognl.jsp 1 % page languagejava contentTypetext/html; charsetutf-8 pageEncodingutf-8 % 2 3 % taglib prefixs uri/struts-tags % 4 !DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN http://www.w3.org/TR/ xhtml1/DTD/xhtml1-transitional.dtd 5 6 html xmlnshttp://www.w3.org/1999/xhtml 7 8 head 9 10 titleStruts2 OGNL 演示/title 11 12 /head 13 14 body 15 16 h3访问OGNL上下文和Action上下文/h3 17 18 !-使用OGNL访问属性值-- 19 20 pparameters: s:property value#parameters.msg //p 21 22 prequest.msg: s:property value#request.msg //p 23 24 psession.msg: s:property value#session.msg //p 25 26 papplication.msg: s:property value#application.msg //p 27 28 pattr.msg: s:property value#attr.msg //p 29 30 hr / 31 32 h3用于过滤和投影(projecting)集合/h3 33 34 p年龄大于20/p 35 36 ul 37 38 !-判断年龄-- 39 40 s:iterator valuepersons.{?#this.age20} 41 42 lis:property valuename / - 年龄s:property valueage //li 43 44 /s:iterator 45 46 /ul 47 48 p姓名为pla1的年龄: s:property valuepersons.{?#this.namepla1}.{age}[0]//p 49 50 hr / 51 52 h3构造Map/h3 53 54 s:set namefoobar value#{foo1:bar1, foo2:bar2} / 55 56 pThe value of key foo1 is s:property value#foobar[foo1] //p 57 58 hr / 59 60 h4%符号的用法/h4 61 62 s:set namefoobar value#{foo1:bar1, foo2:bar2} / 63 64 pThe value of key foo1 is s:property value#foobar[foo1] //p 65 66 p不使用s:url value#foobar[foo1] //p 67 68 p使用s:url value%{#foobar[foo1]} //p 69 70 hr / 71 % 72 request.setAttribute(req, request scope); 73 request.getSession().setAttribute(sess, session scope); 74 request.getSession().getServletContext().setAttribute(app, 75 aplication scope); 76 % 77 1.通过ognl表达式获取 属性范围中的值 78 br 79 s:property value#request.req / 80 br / 81 s:property value#session.sess / 82 br / 83 s:property value#application.app / 84 br / 85 hr 86 87 2.通过span stylebackground-color: #fafafa;ognl表达式创建list 集合 并且遍历出集合中的值 88 br 89 s:set namelist value{eeeee,ddddd,ccccc,bbbbb,aaaaa}/s:set 90 s:iterator value#list varo 91 !-- ${o }br/ -- 92 s:property / 93 br / 94 /s:iterator 95 br / 96 hr 97 98 3.通过ognl表达式创建Map 集合 并且遍历出集合中的值 99 br 100 s:set namemap 101 value#{1:eeeee,2:ddddd,3:ccccc,4:bbbbb,5:aaaaa}/s:set 102 s:iterator value#map varo 103 !-- ${o.key }-${o.value }br/ -- 104 !-- s:property value#o.key/-s:property value#o.value/br/ -- 105 s:property valuekey /-s:property valuevalue / 106 br / 107 /s:iterator 108 br / 109 hr 110 4.通过ognl表达式 进行逻辑判断 111 br 112 s:if testaa in {aaa,bbb} 113 aa 在 集合{aaa,bbb}中 114 /s:if 115 s:else 116 aa 不在 集合{aaa,bbb}中 117 /s:else 118 br / 119 s:if test#request.req not in #list 120 不 在 集合list中 121 /s:if 122 s:else 123 在 集合list中 124 /s:else 125 br / 126 hr 127 128 5.通过ognl表达式 的投影功能进行数据筛选 129 br 130 s:set namelist1 value{1,2,3,4,5}/s:set 131 s:iterator value#list1.{?#this2} varo 132 !-- #list.{?#this2}在list1集合迭代的时候从中筛选出当前迭代对象2的集合进行显示 -- 133 ${o }br / 134 /s:iterator 135 br / 136 hr 137 6.通过ognl表达式 访问某个类的静态方法和值 138 br 139 s:property valuejava.lang.Mathfloor(32.56) / 140 141 s:property valuecom.rao.struts2.action.OGNL1Actionaa / 142 br / 143 br / 144 hr 145 7.ognl表达式 迭代标签 详细 146 br 147 s:set namelist2 148 value{aa,bb,cc,dd,ee,ff,gg,hh,ii,jj}/s:set 149 table border1 150 tr 151 td索引 /td 152 td值/td 153 td奇/td 154 td 偶/td 155 td首/td 156 td 尾/td 157 td当前迭代数量/td 158 /tr 159 s:iterator value#list2 varo statuss 160 tr bgcolors:if test#s.evenpink/s:if 161 td 162 s:property value#s.getIndex() / 163 /td 164 td 165 s:property / 166 /td 167 td 168 s:if test#s.oddY/s:if 169 s:elseN/s:else 170 /td 171 td 172 s:if test#s.evenY/s:if 173 s:elseN/s:else 174 /td 175 td 176 s:if test#s.firstY/s:if 177 s:elseN/s:else 178 /td 179 td 180 s:if test#s.isLast()Y/s:if 181 s:elseN/s:else 182 /td 183 td 184 s:property value#s.getCount()/ 185 /td 186 /tr 187 /s:iterator 188 /table 189 br 190 hr 191 192 193 8.ognl表达式: if/else if/else 详细br 194 % request.setAttribute(aa,0); % 195 s:if test#request.aa0 #request.aa4 196 在0-4之间 197 /s:if 198 s:elseif test#request.aa4 #request.aa8 199 在4-8之间 200 /s:elseif 201 s:else 202 大于8 203 /s:else 204 br 205 hr 206 9.ognl表达式: url 详细br 207 % request.setAttribute(aa,sss); % 208 s:url actiontestAction namespace/aa/bb 209 s:param nameaa value#request.aa/s:param 210 s:param nameid100/s:param 211 /s:url 212 br/ 213 s:set namemyurl valuehttp://www.baidu.com/s:set 214 value以字符处理 s:url value#myurl/s:urlbr 215 value明确指定以ognl表达式处理: s:url value%{#myurl}/s:url 216 br 217 hr 218 10.ognl表达式: checkboxlist 详细br 219 1 .list 生成~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~br 220 name:checkboxlist的名字br 221 list:checkboxlist要显示的列表br 222 value:checkboxlist默认被选中的选项,checkedcheckedbr 223 s:checkboxlist namecheckbox1 list{上网,看书,爬山,游泳,唱歌} value{上网,看书} /s:checkboxlist 224 br 225 以上生成代码br 226 xmp 227 input typecheckbox namecheckbox1 value上网 idcheckbox1-1 checkedchecked/ 228 label forcheckbox1-1 classcheckboxLabel上网/label 229 input typecheckbox namecheckbox1 value看书 idcheckbox1-2 checkedchecked/ 230 label forcheckbox1-2 classcheckboxLabel看书/label 231 input typecheckbox namecheckbox1 value爬山 idcheckbox1-3/ 232 label forcheckbox1-3 classcheckboxLabel爬山/label 233 input typecheckbox namecheckbox1 value游泳 idcheckbox1-4/ 234 label forcheckbox1-4 classcheckboxLabel游泳/label 235 input typecheckbox namecheckbox1 value唱歌 idcheckbox1-5/ 236 label forcheckbox1-5 classcheckboxLabel唱歌/label 237 /xmp 238 2 .Map 生成~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~br 239 name:checkboxlist的名字br 240 list:checkboxlist要显示的列表br 241 listKey:checkbox 的value的值br 242 listValue:checkbox 的lablel(显示的值)br 243 value:checkboxlist默认被选中的选项,checkedcheckedbr 244 s:checkboxlist namecheckbox2 list#{1:上网,2:看书,3:爬山,4:游泳,5:唱歌} listKeykey listValuevalue value{1,2,5} /s:checkboxlist 245 br 246 以上生成代码br 247 xmp 248 input typecheckbox namecheckbox2 value1 idcheckbox2-1 checkedchecked/ 249 label forcheckbox2-1 classcheckboxLabel上网/label 250 input typecheckbox namecheckbox2 value2 idcheckbox2-2 checkedchecked/ 251 label forcheckbox2-2 classcheckboxLabel看书/label 252 input typecheckbox namecheckbox2 value3 idcheckbox2-3/ 253 label forcheckbox2-3 classcheckboxLabel爬山/label 254 input typecheckbox namecheckbox2 value4 idcheckbox2-4/ 255 label forcheckbox2-4 classcheckboxLabel游泳/label 256 input typecheckbox namecheckbox2 value5 idcheckbox2-5 checkedchecked/ 257 label forcheckbox2-5 classcheckboxLabel唱歌/label 258 /xmp 259 hr 260 /body 261 /html ONGL总结 访问属性 名字属性获取:s:property valueuser.username/br 地址属性获取:s:property valueuser.address.addr/br 访问方法 调用值栈中对象的普通方法s:property valueuser.get()/br 访问静态属性和方法 调用Action中的静态方法s:property valuestruts.action.LoginActionget()/ 调用JDK中的类的静态方法s:property valueJava.lang.Mathfloor(44.56)/br 调用JDK中的类的静态方法(同上)s:property valuefloor(44.56)/br 调用JDK中的类的静态方法s:property valuejava.util.CalendargetInstance()/br 调用普通类中的静态属性s:property valuestruts.vo.AddressTIPS/br 访问构造方法 调用普通类的构造方法:s:property valuenew struts.vo.Student(李晓红 , 美女 , 3 , 25).username/   1.5. 访问数组 获取List:s:property valuetestList/br 获取List中的某一个元素(可以使用类似于数组中的下标获取List中的内容): s:property valuetestList[0]/br 获取Set:s:property valuetestSet/br 获取Set中的某一个元素(Set由于没有顺序所以不能使用下标获取数据): s:property valuetestSet[0]/br × 获取Map:s:property valuetestMap/br 获取Map中所有的键:s:property valuetestMap.keys/br 获取Map中所有的值:s:property valuetestMap.values/br 获取Map中的某一个元素(可以使用类似于数组中的下标获取List中的内容): s:property valuetestMap[m1]/br 获取List的大小:s:property valuetestSet.size/br   访问集合 – 投影、选择(? ^ $) 利用选择获取List中成绩及格的对象:s:property valuestus.{?#this.grade60}/br 利用选择获取List中成绩及格的对象的username: s:property valuestus.{?#this.grade60}.{username}/br 利用选择获取List中成绩及格的第一个对象的username: s:property valuestus.{?#this.grade60}.{username}[0]/br 利用选择获取List中成绩及格的第一个对象的username: s:property valuestus.{^#this.grade60}.{username}/br 利用选择获取List中成绩及格的最后一个对象的username: s:property valuestus.{$#this.grade60}.{username}/br 利用选择获取List中成绩及格的第一个对象然后求大小: s:property valuestus.{^#this.grade600}.{username}.size/br 集合的伪属性 OGNL能够引用集合的一些特殊的属性,这些属性并不是JavaBeans模式,例如size(),length()等等. 当表达式引用这些属性时,OGNL会调用相应的方法,这就是伪属性. 集合 伪属性 Collection(inherited by Map, List Set) size ,isEmpty List iterator Map keys , values Set iterator Iterator next , hasNext Enumeration next , hasNext , nextElement , hasMoreElements    Lambda   :[…] 格式:[…] 使用Lambda表达式计算阶乘: s:property value#f :[#this1?1:#this*#f(#this-1)] , #f(4)/br OGNL中#的使用 #可以取出堆栈上下文中的存放的对象. 名称 作用 例子 parameters 包含当前HTTP请求参数的Map #parameters.id[0]作用相当于 request.getParameter(id) request 包含当前HttpServletRequest的属性attribute)的Map #request.userName相当于 request.getAttribute(userName) session 包含当前HttpSession的属性attribute的Map #session.userName相当于 session.getAttribute(userName) application 包含当前应用的ServletContext的属性attribute的Map #application.userName相当于 application.getAttribute(userName) attr 用于按request session application顺序访问其属性attribute
http://www.pierceye.com/news/994034/

相关文章:

  • 网站开发登录要做哪些验证wordpress如何修改电子邮箱
  • 网站空间租用合同wordpress更改主题名称
  • 宁波网站推广找哪家wordpress 搜索标签
  • 购物网站建设特色沈阳公司网站制作
  • seo网站编辑是做什么的微博seo排名优化
  • 南通网站建设方案托管关键词优化排名首页
  • 哈尔滨全员核酸检测福建整站优化
  • 电子商务网站建设汉狮辽宁移动网站
  • 厂西建设厅网站网站流量依赖率
  • 手机能看的网站企业网站开发市场
  • 企业建设网站的过程世界各大网站搜索引擎提交入口
  • 网站建设云南做静态网站成本
  • 超低价的锦州网站建设网站开发有哪些软件有哪些
  • 中英文网站后台photoshop做网站
  • 优秀网站开发公司软件开发工具与环境实践报告
  • 茂名网站开发网站关键词优化步骤
  • 介绍家乡的网站怎么做天眼查企业查询公司
  • 公司网站建设代理一般做多久苏州关键词优化企业
  • 北京网站网站建设vps做网站怎么加速
  • 销售网站怎么做一个公司可以做多少网站
  • 西安旅游攻略必去景点网站优化成都哪里好
  • 网站特色泉州做网站优化价格
  • 小米官方网站开发版在哪里推进门户网站建设 用好用活
  • 玉器企业网站源码软件商店哪个好用
  • 学校网站建设的安全策略江苏太平洋建设集团官方网站
  • 织梦做中英文企业网站给特宝网站商家网址怎样做
  • 网站邮箱接口怎么设置WordPress国外主机
  • 西安做网站的公司哪家好怎么样查询网站被挂黑链
  • 卯兔科技网站建设河南旅游集团 网站建设
  • 重庆网站建设c做食品网站的素材