第四章:struts2中的OGNL
- 格式:ppt
- 大小:630.50 KB
- 文档页数:40


1、jsp和servlet的区别、共同点、各自应用的范围??JSP是Servlet技术的扩展,本质上就是Servlet的简易方式。
JSP编译后是“类servlet”。
Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。
而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。
JSP侧重于视图,Servlet主要用于控制逻辑。
在struts框架中,JSP位于MVC设计模式的视图层,而Servlet位于控制层.2、cookie和session的作用、区别、应用范围,session的工作原理Cookie:主要用在保存客户端,其值在客户端与服务端之间传送,不安全,存储的数据量有限。
Session:保存在服务端,每一个session在服务端有一个sessionID作一个标识。
存储的数据量大,安全性高。
占用服务端的内存资源。
3、jstl是什么?优点有哪些??JSTL(JSP Standard Tag Library,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,由四个定制标记库(core、format、xml和sql)和一对通用标记库验证器(ScriptFreeTLV和PermittedTaglibsTLV)组成。
优点有:最大程序地提高了WEB应用在各应用服务器在应用程序服务器之间提供了一致的接口,最大程序地提高了1、在应用程序服务器之间提供了一致的接口,之间的移植。
2、简化了JSP和WEB应用程序的开发。
3、以一种统一的方式减少了JSP中的scriptlet代码数量,可以达到没有任何scriptlet 代码的程序。
在我们公司的项目中是不允许有任何的scriptlet代码出现在JSP中。
4、允许JSP设计工具与WEB应用程序开发的进一步集成。
相信不久就会有支持JSTL的IDE 开发工具出现。
4、j2ee的优越性主要表现在哪些方面?MVC模式a、J2EE基于JAVA技术,与平台无关b、J2EE拥有开放标准,许多大型公司实现了对该规范支持的应用服务器。
Struts2漏洞利⽤原理及OGNL机制Struts2漏洞利⽤原理及OGNL机制研究概述在MVC开发框架中,数据会在MVC各个模块中进⾏流转。
⽽这种流转,也就会⾯临⼀些困境,就是由于数据在不同MVC层次中表现出不同的形式和状态⽽造成的:View层—表现为字符串展⽰数据在页⾯上是⼀个扁平的、不带数据类型的字符串,⽆论数据结构有多复杂,数据类型有多丰富,到了展⽰的时候,全都⼀视同仁的成为字符串在页⾯上展现出来。
数据在传递时,任何数据都都被当作字符串或字符串数组来进⾏。
Controller层—表现为java对象在控制层,数据模型遵循java的语法和数据结构,所有的数据载体在Java世界中可以表现为丰富的数据结构和数据类型,你可以⾃⾏定义你喜欢的类,在类与类之间进⾏继承、嵌套。
我们通常会把这种模型称之为复杂的对象树。
数据在传递时,将以对象的形式进⾏。
可以看到,数据在不同的MVC层次上,扮演的⾓⾊和表现形式不同,这是由于HTTP协议与java的⾯向对象性之间的不匹配造成的。
如果数据在页⾯和Java世界中互相传递,就会显得不匹配。
所以也就引出了⼏个需要解决的问题:1.当数据从View层传递到Controller层时,我们应该保证⼀个扁平⽽分散在各处的数据集合能以⼀定的规则设置到Java世界中的对象树中去。
同时,能够灵活的进⾏由字符串类型到Java中各个类型的转化。
2.当数据从Controller层传递到View层时,我们应该保证在View层能够以某些简易的规则对对象树进⾏访问。
同时,在⼀定程度上控制对象树中的数据的显⽰格式。
我们稍微深⼊思考这个问题就会发现,解决数据由于表现形式的不同⽽发⽣流转不匹配的问题对我们来说其实并不陌⽣。
同样的问题会发⽣在Java世界与数据库世界中,⾯对这种对象与关系模型的不匹配,我们采⽤的解决⽅法是使⽤如hibernate,iBatis等框架来处理java对象与关系数据库的匹配。
现在在Web层同样也发⽣了不匹配,所以我们也需要使⽤⼀些⼯具来帮助我们解决问题。
OGNL表达式1.什么是OGNLOGNL:Object Graphic Navigation Language(对象图导航语⾔)它是Struts2中默认的表达式语⾔。
使⽤表达式需要借助Struts2的标签.OGNL与EL的区别:EL/JSTL 数学运算等等表达式: 都有⼀个明确的返回值,都只能取值。
OGNL表达式: 它不仅可以取值,还可以赋值(赋值操作只能由Struts来完成)OGNL表达式的写法: 属性.属性.属性的⽅式 <input type="text" name="er"/>OGNL表达式的基本使⽤:使⽤s:property标签输出内容访问普通⽅法访问静态⽅法访问静态属性操作集合(List AND Map)<title>Struts2OGNL表达式的基本使⽤</title></head><body><!-- a、使⽤s:property标签输出内容:要想输出内容到页⾯得使⽤Struts2的标签库value属性:把value取值所对应的内容输出到页⾯若想直接输出⽂本,则需要⽤引号引起来。
-->输出基本内容:<s:property value="'OGNLExpresession'"/><hr/><!-- b、访问普通⽅法 -->输出字符串的长度:<s:property value="'OGNLExpresession'.length()"/><br/>输出转⼤写字符:<s:property value="'OGNLExpresession'.toUpperCase()"/><br/>切割字符串:<s:property value="'OGNLExpresession'.split('L')"/><hr/><!-- c、访问静态属性语法:@类的全路径@静态字段-->输出整数的最⼤值:<s:property value="@ng.Integer@MAX_VALUE"/><hr/><!-- d、访问静态⽅法语法:@类的全路径@静态⽅法注意:使⽤静态⽅法时,需要在struts.xml中开启静态⽅法调⽤的开关。