`
文章列表
7.3  使用OGNL访问复杂对象 7.3.1  访问域对象 通过ognl访问域对象,这件事情其实在好早以前,我们就已经做过了,只是那个时候不知道罢了,还是来示例一下。 (1)先来准备一个域对象,很简单,只有两个属性,代码示例如下:   java代码:
7.2  OGNL 7.2.1  OGNL概述 OGNL是对象图导航语言Object-Graph Navigation Language的缩写,它是一种功能强大的表达式语言(Expression Language,简称为EL),通过它简单一致的表达式语法,可以存取对象的属性,调用对象的方法,遍历整个 ...
7.1  值栈 7.1.1  值栈是什么 简单的说:值栈是对应每一个请求对象的轻量级的内存数据中心。 Struts2中一个很激动人心的特性就是引入了值栈,在这里统一管理着数据,供Action、Result、Interceptor等Struts2的其他部分使用,这样一来,数据被集中管理起来而不会凌乱,大大方便了程序编写。 Struts2中关于值栈的另外一个很激动人心的特性就是:大多数情况下,你根本无需关心值栈,你不用管它在哪里,不用管它里面有什么,你只需要去获取自己需要的数据就可以了。也就是说,你可以隐式的使用值栈。 当然,如果编写自定义的Result或拦截器等较复杂功能的时候 ...
6.4  两个有用的拦截器 6.4.1  更强大的logger拦截器 在学习了这么多拦截器的理论知识过后,来示范两个真实项目中用得到的拦截器。先来看看更强大的logger拦截器。 Struts2自带的logger拦截器只是打印出了Action所对应的URL以及执行的方法名称,这对实际开发来说是肯定不够的。        实际开发中为了调试方便,要记录的信息比较多,通常需要把这次请求相关的几乎所有信息都打印出来,比如: 要访问哪个Action类 要访问这个Action类的哪个方法 打印出这次请求中所有的request中的parameter参数 这次请求最后跳转到哪个 ...
6.3  自定义的拦截器 6.3.1  什么是自定义的拦截器 所谓自定义的拦截器,就是由我们自己定义并实现的拦截器,而不是由Struts2定义好的拦截器。 虽然Struts2的预定义拦截器已经满足了大多数情况的需要。但在有些时候,我们可能会根据项目的实际需要而自定义一些拦截器,来实现一些特别的功能。        比如,我们可能认为Struts2预置的logger拦截器功能比较弱,我们希望在任何一个action运行的时候,都会先打印出所访问的动作类Action,再打印出所有的request参数,最后打印出要跳转到的jsp。这个功能并不影响真正的业务逻辑,但是对调试错误是非常有帮 ...
6.2  预定义的拦截器 6.2.1  预定义的拦截器 一起来看看Struts2中已经定义好的预定义拦截器。Struts2的预定义拦截器都定义在struts-default.xml文件的struts-default包内,定义如下:   java代码:
6.1  拦截器基础 6.1.1  拦截器是什么 拦截器(Interceptor)是Struts2最强大的特性之一,它是一种可以让你在Action执行之前和Result执行之后进行一些功能处理的机制。        来回顾一下官方给出的Struts2系统架构图中关于拦截器的部分,如下图所示: 图6.1 拦截器示意图        这个图清晰的描述出了拦截器的运行地位,就是用来负责在Action执行之前和Result执行之后处理一些功能的类。也就是说,上图示意了有3个拦截器的类,分别是Interceptor1、Interceptor2和Interceptor3,它们分别执行 ...
5.7  自定义Result 5.7.1  什么是自定义Result 所谓自定义Result,就是由我们自行开发的Result,而不是使用由Struts2预先定义好的Result。        在实际开发中,需要自定义Result的机率并不大,因为常见的各种页面展示技术,Struts2都已经预定义好相应的Result了,无需我们自行开发。如果我们要自定义Result,要么就是包装一种新的页面展示技术,要不干脆就是我们自行开发的页面展示技术,出现这些情况的可能性很低。        虽然用得不多,但是从知识的完整性上,还是需要了解如何自定义Result的,再说,了解自定义R ...
5.6  PreResultListener 5.6.1  什么是PreResultListener 在实际开发当中,常常需要在Action执行完毕后,而Result还没有开始执行的时候,做一些功能处理,比如异常处理,那么该怎么做呢?        这就需要使用PreResultListener了。看名字就知道,这是一个“Listener”,也就是一个监听器,用来执行事件监听的。那么它监听的到底是什么事件呢?        PreResultListener监听的事件就是Action执行完毕,马上要开始Result的处理了,这么一个事件。监听到这个事件后,由谁来进行处理呢? ...
5.5  Struts2的异常映射 5.5.1  异常映射基础 在Action中execute方法的方法签名为public String execute() throws Exception,这样,Action可以抛出任何Exception,那么,Exception抛给谁呢? 1:自己实现异常处理 来做一个简单的试验,在Action的方法中这样写:   java代码:
5.4  使用通配符 5.4.1  使用通配符 前面学过,可以在定义<action>元素的name属性的时候使用通配符,使这个<action>元素不仅仅可以匹配一个URL,还可以匹配一类URL。而action的class属性和method属性能使用通配符的值。如果使用以下<action>配置:   java代码:
5.3  全局Result 5.3.1  全局Result概述 以前的<result>元素都是作为<action>的子元素出现的,这被称为局部Result,只可以由本<action>元素访问。 要是有一些Result需要由多个Action共用,比如,系统的每个页面都会判断用户是否登陆,如果没有登陆,那么都要跳转到登录页面。这种情况该怎么办呢? 这个时候,就可以配置全局Result,让这多个Action共享这些全局的Result,而不是每个Action都去配置一个跳转回到登录页面的result。 5.3.2  配置和使用 全局Resul ...
5.2  预定义的Result 5.2.1  预定义的ResultType 在Struts2中,预定义了很多ResultType,其实就是定义了很多展示结果的技术。Struts2把内置的<result-type>都放在struts-default包中。struts-default包就是我们配置的包的父包,在第4章已经看到这个包定义在struts2-core-2.1.8.1.jar包中的根目录下的文件struts-default.xml中。 在这个包中,可以找到相关的<result-type>的定义,<result-types>元素是< ...
5.1  Result基础 5.1.1  Result是什么和能干什么 简单的说,Result是Action执行完后返回的一个字符串,它指示了Action执行完成后,下一个页面在哪里。 具体页面在哪里,是在struts.xml里面配置的。就是每个<action>元素里面,配置的<result>子元素,比如:   java代码:
4.5  Action的其它重要知识 4.5.1  Action的生命周期        Struts2的Action的生命周期是:Struts2为每个请求都重新初始化一个Action的实例。可以稍微改造一下代码来验证一下。 1:给HelloWorldAction加上一个public无参的构造方法,在里面输出一句话。 大家都知道,一个Java类如果没有写构造方法,那么会有一个默认的public无参的构造方法,这里只是把它明确的写出来了,因此这么做,并没有改变Action的任何功能,只是想看一下到底什么时候,Action会被初始化。示例代码如下:   java代码: ...
Global site tag (gtag.js) - Google Analytics