struts2

xiaoxiao2021-02-28  5

ognl详细内容再此不赘述,详看当天笔记

ognl剖析:

contextmap是一次请求中包含所有数据的最大map集合

集合的键为 application,session,request,valuestack,action动作类对象,parameters请求参数,attr四大域中所有数据,

 其中有五个map结构,一个对象,值栈是list结构,栈模型,先进后出,压栈弹栈,

actioncontext创建是在核心控制器的dofileter方法执行时,即web.xml执行过滤时,

actioncontext类只有一个带context参数的构造方法,context对象就是contextmap对象,

 该类在contextmap被创建的时候一起被构造,该类中还有一个静态变量就是构造方法中的context,

 后来的方法都是用来操作context,操作context就相当于操作contextmap

context对象用来获取application和session对象

request和page对象需要用ServletActionContext.get

细节:

遍历的时候iterator和foreach都能用,随便

modeldriven会自动压栈

编写工具类☆

先定义一个变量,创建方法怎么得到这个变量

工具类特点

要操作哪个对象,先定义出来,类中的方法都是操作该变量,

要操作该变量先要获得该对象

获得对象的方法有两种,一个是自己弄出来,另一个是别人给你传

<a href="javascript:delOne('${customer.custId}')">删除</a>

注意这种提交表单方式

拦截器

拦截器★(struts的核心) interceptor 过滤器可以过滤所有的请求 拦截器只能拦截action(类中方法) 基于动态代理(aop机制)实现的.在action执行之前或者之后添加一段逻辑. 多个拦截器称之为拦截器栈. ------------------------ struts执行流程: 请求-->StrutsPrepareAndExecuteFilter-->判断是否是action,若是action继续往核心走         若不是action,直接放行 --------------------------- |若是action的核心-->创建action的代理对象-->action的执行处理类(真正干活的类.通过高级的递归执行了所有的拦截器)-->      |执行action-->返回值(result)-->资源上-->倒序执行拦截器-->核心过滤器(StrutsPrepareAndExecuteFilter)放行方法之后的操作--> |web服务器-->收到response,拆封组成成响应行 响应头 响应体,返回给浏览器 ---------------------------- // 自定义拦截器 1.编写一个类 实现Interceptor或者继承AbstractInterceptor或者继承MethodFilterInterceptor 重写拦截的方法 2.编写配置文件(struts.xml) 方式1: 注册拦截器 在actoin中使用拦截器 方式2: 注册拦截器栈 在action中使用拦截器栈 注意: 注意:一旦显式的声明使用了某个拦截器,struts默认的拦截器就不好用了,若需要使用,必须手动的声明 若需要放行某个方法只需要按一下配置 <interceptor-ref name="Demo2Interceptor"> <!--  不拦截execute方法了,若多个方法用逗号隔开 --> <param name="excludeMethods">execute</param> </interceptor-ref>

拦截器细节:

/=/index.jsp

action对象的.addActionError()和.addActionMessage()方法可以携带字符串数据到页面上

拦截器中可以用invocation.getAction()获取到action对象

转载请注明原文地址: https://www.6miu.com/read-450176.html

最新回复(0)