- 浏览: 991668 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (223)
- JDBC技术 (29)
- Java Base (21)
- SSH框架的集合 (5)
- Javascript部分 (16)
- Sping2.5框架 (6)
- Hibernate框架 (19)
- JDBC中的数据库连接 (5)
- Ajax技术应用 (9)
- Java工具包下载 (3)
- Database (4)
- Java Web (13)
- 我的生活 (4)
- Struts2 (25)
- S2SH (1)
- Prototype (1)
- jfreeChart (5)
- JPA (7)
- JBPM (1)
- JasperReport (6)
- DWR (1)
- freeMark (2)
- IBatis (2)
- FCKeditor (2)
- POI (1)
- JQuery (6)
- JSON (1)
- JavaMail (3)
- Flex (2)
- CSS收藏夹 (1)
- 润乾报表 (2)
- 开源技术 (1)
- Android (2)
- Android_UI (1)
- Android_OS (6)
- Android_OpenLibs (3)
- Volley (1)
- JS_OpenLibs (1)
- Hessian (3)
- OS (1)
最新评论
-
damoluomu:
简单易懂
Java Web开发Session超时设置 -
di1984HIT:
学习了~~~~~~
Java Web开发Session超时设置 -
lord_is_layuping:
...
Java Web开发Session超时设置 -
15111285554:
...
Java Web开发Session超时设置 -
sfg1314:
暂停后重新下载就会报错:ClientAbortExceptio ...
Java Web 文件下载之断点续传
<div align="center"> <ol> <li>访问值栈中的Action的普通属性:username=<s:property value="username" /> | password=<s:property value="password" /> </li> <li>Action的user属性值=<s:property value="user"/></li> <li>访问值栈中的对象的普通属性:Action的user属性的name属性值=<s:property value="user.name" /> | =<s:property value="user['name']" /> </li> <li>访问值栈中的对象的普通属性:Action->cat->firend->name=<s:property value="cat.firend.name" /> </li> <hr> <li> 访问值栈中的对象的普通方法username.length():<s:property value="username.length()"/> </li> <li> 访问值栈中的对象的普通方法cat.miao():<s:property value="cat.miao()"/> </li> <li> 访问Action的普通方法myTest():<s:property value="myTest()"/> </li> <hr> <li> 访问静态方法: <s:property value="@com.mengya.util.Common@myStaticTest()"/> </li> <li> 访问静态属性: <s:property value="@com.mengya.util.Common@str"/> </li> <li> 访问Math类的静态方法: <s:property value="@@max(2,3)"/> </li> <hr> <li> 访问普通类的构造方法: <s:property value="new com.mengya.bean.User()"/> </li> <li> 访问普通类的构造方法: <s:property value="new com.mengya.bean.User().setName('mengya')"/> </li> <hr> <li> 访问List:<s:property value="userList" /> </li> <li> 访问List中的某个元素:<s:property value="userList[1]" /> </li> <li> 访问List中元素的某个属性的集合:<s:property value="userList.{name}" /> </li> <li> 访问List中元素的某个属性的集合中的特定值:<s:property value="userList.{name}[1]" /> | <s:property value="userList[1].name" /> </li> <li> 访问Set:<s:property value="dogSet" /> </li> <li> 访问Set中的某个元素:<s:property value="dogSet[1]" /><!-- set没有顺序故取不到值 --> </li> <li> 访问Map:<s:property value="catMap" /> </li> <li> 访问Map中某个元素:<s:property value="catMap.cat1" /> | <s:property value="catMap['cat1']" /> </li> <li> 访问Map中的所有keys:<s:property value="catMap.keys" /> </li> <li> 访问Map中的所有values:<s:property value="catMap.values" /> </li> <li> 访问容器的大小:<s:property value="catMap.size()" /> | <s:property value="userList.size()" /> </li> <hr> <li> 投影(过滤)user的name为aaa的集合:<s:property value="userList.{?#this.name=='aaa'}" /> | <s:property value="userList.{?#this.name=='aaa'}.{name}" /> <!-- 得到的是一个[com.mengya.bean.User@d2efa1] | [aaa] 都是集合 --> | <s:property value="userList.{?#this.name=='aaa'}.{name}[0]" /> </li> <li> 投影(过滤)user的age大于21的第一个元素:<s:property value="userList.{^#this.age>21}" /> | <s:property value="userList.{^#this.age>21}.{name}" /> </li> <li> 投影(过滤)user的age大于21的第最后一个元素:<s:property value="userList.{$#this.age>21}" /> | <s:property value="userList.{$#this.age>21}.{name}" /> </li> <li> 投影(过滤)判断:<s:property value="userList.{$#this.age>21}.{name} == null " /> </li> <hr> <li> [0]表示获得的是第一个Action:<s:property value="[0]" /> | <s:property value="[0].username" /> </li> </ol> </div>
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.FilterDispatcher </filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
struts.xml:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <!-- 允许访问静态方法 --> <constant name="struts.ognl.allowStaticMethodAccess" value="true"></constant> <package name="ognl" extends="struts-default"> <action name="ognl" class="com.mengya.action.OgnlAction"> <result name="success">ognl.jsp</result> </action> </package> </struts>
OgnlAction:
public class OgnlAction extends ActionSupport { private String username; private String password; /** * 说明:在这里若user对象没有实例化,在页面访问action时给user的属性赋值了,struts2会自动帮我们实例化该user对象 * 前提是User对象提供了无参的构造方法。若页面没有给user的属性赋值则user为null(针对本实例,因为execute方法没有任何操作) * 在这里若对user对象实例化了,则无论在页面访问action时是否也user的属性赋值,user都不会是null */ private User user = null; // private User user = new User(); private Cat cat = null; private Common common = null; private List<User> userList = null; private Set<Dog> dogSet = null; public Map<String, Cat> catMap = null; @Override public String execute() throws Exception { // cat = new Cat(); // Dog dog =new Dog(); // dog.setName("Dog"); // cat.setFirend(dog); userList = new ArrayList<User>(); User u = new User(); u.setName("aaa"); u.setAge(21); userList.add(u); u = new User(); u.setName("bb"); u.setAge(22); userList.add(u); u = new User(); u.setName("cc"); u.setAge(23); userList.add(u); dogSet = new HashSet<Dog>(); Dog d = new Dog(); d.setName("dog1"); dogSet.add(d); d = new Dog(); d.setName("dog2"); dogSet.add(d); d = new Dog(); d.setName("dog3"); dogSet.add(d); catMap = new HashMap<String, Cat>(); catMap.put("cat1", new Cat()); catMap.put("cat2", new Cat()); catMap.put("cat3", new Cat()); return SUCCESS; } public String myTest() { return "myTest方法"; } public Cat getCat() { return cat; } public String getPassword() { return password; } public User getUser() { return user; } public String getUsername() { return username; } public void setCat(Cat cat) { this.cat = cat; } 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 Common getCommon() { return common; } public void setCommon(Common common) { this.common = common; } public List<User> getUserList() { return userList; } public void setUserList(List<User> userList) { this.userList = userList; } public Set<Dog> getDogSet() { return dogSet; } public void setDogSet(Set<Dog> dogSet) { this.dogSet = dogSet; } public Map<String, Cat> getCatMap() { return catMap; } public void setCatMap(Map<String, Cat> catMap) { this.catMap = catMap; } }
Action中所引用的Bean:
public class Cat { private String name; private Dog firend; public Dog getFirend() { return firend; } public void setFirend(Dog firend) { this.firend = firend; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String miao(){ return "cat的普遍方法调用"; } }
public class Dog { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }
public class User { private String name; private int age; public String getName() { return name; } public String setName(String name) { this.name = name; return toString(); } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
测试:
- Struts2_OGNL.rar (3.6 MB)
- 描述: Struts2 的OGNL使用简介实例
- 下载次数: 86
发表评论
-
Struts2 + JasperReport应用二:jasperReport Web形式打印
2010-02-02 16:16 5279将jasperReport设计文件和编译文件放到webRoot ... -
Struts2 + JasperReport应用一:导PDF,Excel,HTML显示
2010-01-29 16:34 9888我用的是struts2.1.6,从struts2的自带的dem ... -
Struts2 标签使用简介
2009-12-23 19:33 2669web.xml配置如下: <fil ... -
POI与Struts2的使用 poi-2.5.1.jar
2009-09-25 17:43 4895一.POI 简介 Jakarta POI 是apache的子项 ... -
jFreeChart与Struts2的组合,将jFreeChart作为显示视图
2009-09-25 16:26 1489jFreeChart与Struts2的组合: 一,加 ... -
Struts2与Spring2.0的组合
2009-09-09 09:46 1061Struts2与Spring的集成: 一,加入Str ... -
Struts2的异常处理
2009-09-07 13:41 1388Struts2的异常处理: 1,定义自己的异常信息类:继承Ex ... -
Struts2.0深入学习 Strust2与Servlet API,Action多方法调用,result标签的type的类型
2009-09-06 11:08 4449Struts2深入探索: 1,package中的ab ... -
Struts2.0深入学习 命名空间,模型驱动,表单重复提交
2009-09-06 11:04 1887Struts2深入探索: 1,package中的ab ... -
Struts2国际化详解
2009-09-03 15:32 2729Struts2国际化: 1,国际 ... -
Struts2文件下载
2009-09-02 20:09 10621Struts2文件下载: Struts2文件下载对应将一个In ... -
设置Struts2文件上传的类型和大小
2009-09-02 20:09 5233设置Struts2文件上传的类型和大小: 在struts. ... -
Struts2多文件上传
2009-09-02 20:08 2468Struts2多文件上传: 在Action中配置三个属性: p ... -
Struts2文件上传详解
2009-08-31 17:27 2401Struts2文件上传: 一:请选参看Struts2_9中的S ... -
Struts2.0文件上传原理
2009-08-31 13:12 3070Struts2文件上传默认采用apache的文件上传的包,新建 ... -
Struts2的监听器的使用
2009-08-25 19:02 2541Struts2的监听器: 一,建立监听器: ... -
Struts2的拦截器的使用详解
2009-08-25 18:59 2384Struts2的拦截器: 一,拦截器的使用: ... -
Struts2拦截器原理分析
2009-08-25 18:55 2387第一步:创建目标对象的接口 /** * 目标对象的接口 ... -
Struts2的检证框架详解
2009-08-25 13:00 2459Struts2的检证框架: 一,根据字段校验(为每一 ... -
Struts2的Action多个方法配置和验证
2009-08-18 20:16 4800Struts2的Action多个方法配置和验证: 1 ...
相关推荐
### Struts2中OGNL的使用详解 #### 一、OGNL简介 OGNL(Object-Graph Navigation Language)是一种强大的表达式语言,用于获取或设置一个对象图中的属性。它在Struts2框架中扮演着极其重要的角色,是Struts2实现...
2. **方法调用**:可以使用OGNL调用对象的方法,如`list.add("item")`。 3. **集合操作**:支持对集合进行操作,如`list[0]`访问列表的第一个元素,`map["key"]`访问映射中的值。 4. **运算符支持**:包括算术运算...
1. **值栈访问**:Struts2使用值栈存储请求中的所有对象,OGNL可以从值栈顶部找到并访问对象。例如,`#request.user.name`表示从HTTP请求对象中获取`user`属性的`name`。 2. **动态方法调用**:OGNL支持直接调用...
- **防范措施**:使用Struts2的安全插件如Struts2 Security Plugin来过滤和限制OGNL表达式的执行,或者启用OGNL的安全模式(Secure OGNL),避免执行危险的操作。 4. **源码分析** 阅读Struts2源码可以帮助理解...
OGNL(Object-Graph Navigation Language)是Struts2框架中的一个重要组件,用于在Web应用中访问和操作Java对象的属性,调用其方法,以及执行类型转换等操作。 OGNL是对象图导航语言的缩写,它是一种功能强大的...
OGNL(Object-Graph Navigation Language)是Struts2中的核心表达式语言,用于在Action对象和视图之间传递数据。在这个主题中,我们将深入探讨Struts2 OGNL2.6.11的源码,了解其内部工作原理和关键功能。 首先,...
struts2 中 OGNL表达式的使用struts2 中 OGNL表达式的使用
在提供的压缩包文件"Struts2_1900_OGNL"中,可能包含了一些关于Struts2 OGNL表达式使用和安全性的示例代码、教程文档或是漏洞分析。通过研究这些内容,你可以更深入地理解和掌握Struts2框架中OGNL表达式的运用,以及...
struts2 OGNL表达式使用 OGNL(Object-Graph Navigation Language)是对象图导航语言,允许开发者在Struts2应用程序中访问和操作对象及其属性。下面是OGNL表达式的使用方法: 访问基本属性 1. 访问值栈中action的...
这篇博客文章可能详细探讨了如何在Struts2中使用OGNL来传递和操作数据。 OGNL是Struts2的核心组件之一,它允许开发者通过简单的字符串表达式来访问和修改对象的属性,甚至可以处理复杂的对象结构。以下是一些关于...
5. **安全特性**:在Struts2中,OGNL的不当使用可能导致安全漏洞,如著名的Struts2 OGNL注入攻击。源代码中包含了对这种风险的防护措施,如输入过滤和安全配置选项。 深入学习这些源代码,开发者不仅可以了解OGNL的...
Struts2 OGNL表达式是Java Web开发中一个重要的概念,它是一种强大的对象图形导航语言(Object-Graph Navigation Language)。在Struts2框架中,OGNL被广泛用于视图层,作为数据绑定的主要手段,使得开发者能够方便...
因此,在实际应用中,应确保对用户输入进行严格的校验和过滤,或者使用Struts2的安全插件来防止OGNL注入。 五、总结 OGNL在Struts2中扮演着关键角色,它简化了数据绑定和对象交互。然而,开发者也需要注意其潜在的...
这个"Struts2 OGNL示例(Maven项目)"提供了使用OGNL与Struts2集成的实例,帮助开发者更好地理解和应用这一强大的特性。 首先,让我们了解什么是OGNL。OGNL是一种强大的表达式语言,允许我们访问和修改对象图中的...
Struts2 OGNL---标签详解析 都有实例 适合初学者
Struts2 OGNL语言学习笔记 OGNL(Object-Graph Navigation Language)是 Struts 2 中的一种表达式语言,主要用于简化 JSP 页面中的编码,使页面与后台代码分离。下面是 OGNL 语言的主要特点和用法: 1. 支持对象...
本文将深入探讨OGNL的基本用法、标签的使用以及其在Struts2中的实际应用。 1. **OGNL基本概念** - OGNL是一种表达式语言,用于获取和设置对象属性。它支持点号和索引访问、方法调用、运算符、集合操作等。 - 例如...
关于struts2 OGNL 详细教程,对初学者有帮助
4. **值栈操作**:Struts2使用值栈存储请求相关的对象,OGNL可以直接访问值栈中的元素。`#{request.user}` 或 `#{session.user}` 可以分别获取请求和会话范围内的对象。 5. **方法调用**:OGNL支持直接调用对象的...