structs2 投影的介绍

第一部分:代码

//前端

访问属性

//web.xml

<struts>

<constant name="struts.enable.DynamicMethodInvocation" value="false">

<constant name="struts.devMode" value="true">

<constant name="struts.ognl.allowStaticMethodAccess" value="true"></constant>

<include file="/com/struts2/ognl/ognl.xml/">

</include></constant></constant></struts>

//ognl.xml

<struts>

<package extends="struts-default" name="ognl">

<result>/ognl.jsp</result>

</action>

<result type="chain">ognl</result>

</action>

</package>

</struts>

//类包

//ognl.java

package com.struts2.ognl;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.HashSet;

import java.util.List;

import java.util.Map;

import java.util.Set;

import com.opensymphony.xwork2.ActionSupport;

public class OgnlAction extends ActionSupport {

private String password;

private String username;

private User user;

private Cat cat;

private List<user> users = new ArrayList<user>();

private Set<dog> dogs = new HashSet<dog>();

private Map<string, dog=""> dogMap = new HashMap<string, dog="">();

public OgnlAction() {

users.add(new User(1));

users.add(new User(2));

users.add(new User(3));

dogs.add(new Dog(dog1));

dogs.add(new Dog(dog2));

dogs.add(new Dog(dog3));

dogMap.put(dog100, new Dog(dog100));

dogMap.put(dog101, new Dog(dog101));

dogMap.put(dog102, new Dog(dog102));

}

public String execute() {

return SUCCESS;

}

public String getPassword() {

return password;

}

public String getUsername() {

return username;

}

public User getUser() {

return user;

}

public Cat getCat() {

return cat;

}

public List<user> getUsers() {

return users;

}

public Map<string, dog=""> getDogMap() {

return dogMap;

}

public Set<dog> getDogs() {

return dogs;

}

public String m() {

return hello;

}

public void setCat(Cat cat) {

this.cat = cat;

}

public void setDogMap(Map<string, dog=""> dogMap) {

this.dogMap = dogMap;

}

public void setDogs(Set<dog> dogs) {

this.dogs = dogs;

}

public void setPassword(String password) {

this.password = password;

}

public void setUser(User user) {

this.user = user;

}

public void setUsername(String username) {

this.username = username;

}

public void setUsers(List<user> users) {

this.users = users;

}

}

//user.java

package com.struts2.ognl;

public class User {

private int age = 8;

public User() {

}

public User(int age) {

super();

this.age = age;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

@Override

public String toString() {

return user + age;

}

}</user></dog></string,></dog></string,></user></string,></string,></dog></dog></user></user>

//cat.java

package com.struts2.ognl;

public class Cat {

private Dog friend;

public Dog getFriend() {

return friend;

}

public void setFriend(Dog friend) {

this.friend = friend;

}

public String miaomiao() {

return miaomiao;

}

}

//dog.java

package com.struts2.ognl;

public class Cat {

private Dog friend;

public Dog getFriend() {

return friend;

}

public void setFriend(Dog friend) {

this.friend = friend;

}

public String miaomiao() {

return miaomiao;

}

}

?

1

//展示

访问值栈中的action的普通属性: username =

访问值栈中对象的普通属性(get set方法): | | | wrong: <%----%>

访问值栈中对象的普通属性(get set方法):

访问值栈中对象的普通方法:

访问值栈中对象的普通方法:

访问值栈中action的普通方法:

访问静态方法:

访问静态属性:

访问Math类的静态方法:

访问普通类的构造方法:

访问List:

访问List中某个元素:

访问List中元素某个属性的集合:

访问List中元素某个属性的集合中的特定值: |

访问Set:

访问Set中某个元素:

访问Map:

访问Map中某个元素: | |

访问Map中所有的key:

访问Map中所有的value:

访问容器的大小: |

投影(过滤):

投影:1}.{age}/>

投影:1}.{age}/>

投影:1}.{age} == null/>

[]:

第二部分:分析

-> 点击之后,根据配置文件里里面的配置,找到文件包含

-> 查找ognl.xml文件

<struts>

<package extends="struts-default" name="ognl">

<result>/ognl.jsp</result>

</action>

<result type="chain">ognl</result>

</action>

</package>

</struts>

-> 根据xml配置文件里面的action关联的类,构造类对象;

-> 根据ognl.java构造ognl对象;

-> 展示阶段进行取值显示,有几种访问方式需要注意:

-> 访问值栈中属性,值栈中对象的方法,静态方法,静态属性,容器对象;

访问值栈中的action的普通属性

值栈中对象的普通属性

值栈中对象的普通方法

值栈中action的普通方法

静态方法访问方式@类名@方法名

需要在web.xml中设置 value=true>

查看默认设置的方法:/Struts2_1900_OGNL / WebRoot / WEB-INF / lib / struts2-core-2.1.6.jar /default.properties

访问集合

-> 调用方法

?

1

http://localhost:8080/Struts2_1900_OGNL/ognl.action?username=u&password=p&user.age = 19&cat.friend.name =oudy

第三部分;讨论

Object Graph Navigation Language

对象图导航语言

第四部分:有关投影的讨论

投影即过滤功能。

过滤写法:

?

1

投影(过滤):

投影:1}.{age}/>

投影:1}.{age}/>

投影:1}.{age} == null/>

以? ^ $ 开头加上过滤条件,和正则表达式不相同;

this表示循环过程中的对象,帮助你做一些循环;

投影(过滤):

表示从从users中取出age=1的那一个,结果是一个集合;

投影(过滤):

表示从从users中取出age=1的第一个,结果是一个;

投影:1}.{age}/>

表示从从users中取出age>1的集合结尾的那一个;

时间: 2024-08-26 05:43:14

structs2 投影的介绍的相关文章

Structs2 request_locale国际化介绍

众所周知,struts2中使用了大量的拦截器(即是传说中的interceptor),其中国际化使用的拦截器为com.opensymphony.xwork2.interceptor.I18nInterceptor,那么接下来分析一下I18nInterceptor这个类. 一.属性 I18nInterceptor有三个属性,分别为parameterName,requestOnlyParameterName,attributeName. parameterName:http request请求中的参数

杨元庆:创新将成为联想打造最酷设备的重要助推力

毋庸置疑,创新已经成为IT行业发展的重要助推力,以近年来IT产业的发展轨迹为例,从互联网到移动互联网,从智能手机到智能可穿戴设备,我们都可以看到不少创新的案例,不过,创新是无止境的,任何企业都不能因为之前所取得的成绩而减慢创新的步伐. 在国内,IT行业的迅猛发展也催生了一大批创新的企业,除了互联网领域的BAT之外,诸如联想.华为.海尔等企业也是科技创新的代表,以联想为例,近年来联想推出的变形本.智能手机都获得了不错的市场反响,其中一个重要原因,就在于这些产品汇聚了联想创新的基因. 在这种背景下,

地图投影系列介绍(四)----投影坐标系

4.4 我国常用地图投影  我国基本比例尺地形图(1:100万.1:50万.1:25万.1:10万.1:5万.1:2.5万.1:1万.1:5000)除1:100万以外均采用高斯-克吕格Gauss-Kruger投影(横轴等角切圆柱投影,又叫横轴墨卡托Transverse Mercator投影)为地理基础.  1:100万地形图采用兰伯特Lambert投影(正轴等角割圆锥投影),其分幅原则与国际地理学会规定的全球统一使用的国际百万分之一地图投影保持一致.  海上小于50万的地形图多用墨卡托Me

写给VR手游开发小白的教程:(四)补充篇,详细介绍Unity中相机的投影矩阵

这篇作为上一篇的补充介绍,主要讲Unity里面的投影矩阵的问题: 上篇的链接写给VR手游开发小白的教程:(三)UnityVR插件CardboardSDKForUnity解析(二) 关于Unity中的Camera,圣典里面对每一项属性都做了简要的介绍,没看过的小伙伴传送门在下面 http://www.ceeger.com/Components/class-Camera.html 一.裁剪面 先从这个专业的词汇开始,以下是圣典对裁剪面的介绍: The Near and Far Clip Plane

【web开发学习笔记】Structs2 Result学习笔记(一)简单介绍

Structs2 Result学习笔记(一)简单介绍 问题一 <struts> <constant name="struts.devMode" value="true" /> <package name="resultTypes" namespace="/r" extends="struts-default"> <action name="r1"

Structs2 ModelDriven使用方法介绍

例子都为struts2中的文档例子 JSP提交数据: <s:form action="modelDrivenResult" method="POST" namespace="/modelDriven">       <s:textfield label="Gangster Name" name="name" />     <s:textfield label="Gan

ArcGIS中利用ArcMap将地理坐标系转换成投影坐标系(从WKID=4326到WKID=102100)

原文:ArcGIS中利用ArcMap将地理坐标系转换成投影坐标系(从WKID=4326到WKID=102100) 对于非地理专业的开发人员,对与这些生涩的概念,我们不一定都要了解,但是我们要理解,凡是以经纬度为单位的都是地理坐标系,因为它归根结底是一个椭球体,只不过各个国家为了反映该国家所在区域地球的真实形状,而采用不同的数学模型对本不是椭球体的地球进行椭球体化.而投影坐标系,是对地理坐标系按照某种方式投影到平面上的,所以可以认为它是一个平面坐标系,单位自然是米或千米. 我们在做开发的时候,尤其

目前流行的几种排课算法的介绍

通用高校排课算法研究----2 .目前流行的几种排课算法的介绍 2   目前流行的几种排课算法的介绍 2.1. 自动排课算法 1 .问题的描述 我们讨论的自动排课问题的简化描述如下: 设要安排的课程为{ C1 , C2 , ., Cn} ,课程总数为n , 而各门课程每周安排次数(每次为连续的2 学时) 为{ N1 , N2 , ., Nn} ;每周教学日共5 天,即星期一- 星期五;每个教学日最多安排4次课程教学,即1 - 2 节.3 - 4 节.5 - 6 节和7 - 8 节(以下分别称第1

【翻译】圣斗士星矢:圣域传说 制作介绍 场景篇

背景布置 这里是背景舞台布置的制作介绍. 圣斗士的发源地[圣域],来看看成为黄金十二宫标准的狮子宫, 以及相对的最异端的存在的巨蟹宫的制作工程吧. 从Pre-production到正式制作 包含破坏模型 140个布景的制作 本作的背景制作是2011年末开始的.到2013年1月由约10名制作了总计140多个的场景(包含丢弃场景总数250多).Concept Work的开始是从2011年中旬,由从OVA[鸦 KARAS](2005? 2007)开始就负责很多さとうけいいち監督作品美术的佐藤肇氏来做美