SSH框架入门(3)——struts2(3)

来源:互联网 发布:阿伦艾弗森生涯数据 编辑:程序博客网 时间:2024/06/17 15:35

通过前两篇的学习,我想应该对struts2框架有了一个大体了解,那我们今天继续学习struts2框架:

一、 Struts2中获取Servlet API

简单说,可以在action类中获取request  response  session...对象有两种方案:


1. ServletActionContext获取(都是静态方法)


ServlectActionContext类中都是些静态方法,可以直接通过类名调用;这个类就是用来获取servlet的常用API;

注意:在被我们过滤器所拦截的类中都可以使用ServletActionContext类来获取servlet的常用API;比较常用的有三种:

HttpServletRequestrequest = ServletActionContext.getRequest();HttpServletResponseresponse = ServletActionContext.getResponse();ServletContext servletContext = ServletActionContext.getServletContext();


2. 采用注入方式


Struts2框架在运行时,请求会被StrutsPrepareAndExecuteFilter拦截,会根据请求,去strtus.xml文件中查找到

匹配的action,在action执行前,会走一些interceptor,默认执行的拦截器是struts-default.xml文件中定义的。

在默认执行的拦截器中有一个



 

查看一下ServletConfigInterceptor源代码,以下是部分源代码:


ServletRequestAware, 实现这个接口可以获取HttpServletRequest

ServletResponseAware ,实现这个接口可以获取HttpServletResponse

ServletContextAware 实现这个接口可以获取ServletContext

采用注入方式获取request等对象的方法不常用,一般我们都是使用第一种方式,即使用ServletActionContext的静态

方法获取。

二、OGNL表达式

OGNL是Object-Graph Navigation Language(对象图导航语言)的缩写,他是一个单独的框架,它即可以单独使用

(但是几乎不会单独使用它),它是一种功能强大的表达式语言,通过它简单一致的表达式语法,可以存取对象的任意

属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能。它使用相同的表达式去存取对象的属性。

Strtsu2框架内置了OGNL,OGNL本身也是一个项目,它是可以单独使用。

OGNL作用:

1.支持对象的操作,调用对象的方法

2.支持静态成员访问

3.支持赋值操作与表达串联

4.访问OGNL上下文,访问ActionContext

5.操作集合对象。

那我们现在就对这个OGNL表达式的作用来进行一下案例示范:

1. 支持对象操作


2. 支持静态成员访问


3. 访问Ognl上下文


如果从根中获取数据,不需要添加#号,如果不是从根中获取需要#,我们OGNL表达式写#表示从上下文context中获取,不写#代表从根中获取

4. 操作集合

支持赋值操作与表达式串联


5. Strtus2框架中如何使用ognl表达式


在struts2框架中我们使用ognl表达式的作用是从valueStack(容器)中获取数据。我们在struts2框架中可以使

用ognl+valueStack达到在页面(jsp)上来获取相关的数据。要想在jsp页面上使用ognl表达式,就需要结合struts2框架

的标签:<s:property value=”表达式”>来使用,想要使用要先导入标签库:


阅读全文
0 0