-
Struts2.1.3以后核心控制器就发生了变化,不再是以前的FilterDispatcher而是StrutsPrepareAndExcuteFilter查看全部
-
在实际应用中,如果要使用多个拦截器,可以自定义一个拦截器栈包含多个拦截器, 在Action标签中使用时,只需要引用该拦截器栈即可查看全部
-
WEB-INF下的资源默认是不允许被外部直接访问的 可以通过创建一个默认的action来访问WEB-INF下的页面,此action不需要关联Action类查看全部
-
默认拦截器栈: <!-- 为Action显示引用拦截器后,默认的拦截器defaultStack不再生效,需要手工引用。而且从顺序角度去讲,最好把默认的拦截器写在自定义拦截器上面 --> <interceptor-ref name="defaultStack"></interceptor-ref>查看全部
-
Struts2内置常用的拦截器: 1.params拦截器: -负责将请求参数设置为Action属性 2.staticParams拦截器: -将配置文件中action元素的子元素param参数设置为Action属性 3.servletConfig拦截器: -将源于Servlet API的各种对象注入到Action,必须实现对应接口 4.fileUpload拦截器: -对文件上传提供支持,将文件和元素设置到对应的Action属性,实际上内部依然使用了Commons-FileUpload组件。 5.exception拦截器: -捕获异常,并且将异常映射到用户自定义的错误页面 6.validation拦截器: -调用验证框架进行数据验证 更多的拦截器可在struts核心包的struts-default.xml中查看查看全部
-
注册和使用拦截器: 注意:package里元素必须按照一定的顺序排列: result-types interceptors default-interceptor-ref default-action-ref default-class-ref global-results global-exception-mappings action*(所有action放到最后)查看全部
-
自定义拦截器:查看全部
-
自定义拦截器: 方法一: 实现Interceptor接口,三个实现方法: 1.void init():初始化拦截器所需资源; 2.void destroy():释放在init()中分配的资源; 3.String intercept(ActionInvocation ai)throws Exception:实现拦截器功能、利用ActionInvocation参数获取Action状态、返回result字符串作为逻辑视图 方法二: 继承AbstractIntercept类:提供了init()和destroy()方法的空实现、只需要实现intercept方法即可查看全部
-
拦截器: Struts2大多数核心功能是通过拦截器实现的,每个拦截器完成某项功能。 拦截器方法在Action执行之前或者之后执行。 拦截器栈: 从结构上看,拦截器栈相当于多个拦截器的组合。 在功能上看,拦截器栈也是拦截器。 拦截器的执行过程是一个递归的过程,工作原理类似于过滤器。查看全部
-
客户端通过httpservletrequest向servlet容器,也就是tomcat提交一个请求,这个请求会经过一些列的过滤器,如ActionContentClearUp过滤器,最终被struts核心过滤器过滤,也就是FilterDispatcher.从struts2.1.3版本以后struts的核心控制器发生了变化,变成了PrepqreAndExecuteFiletr,核心过滤器过滤以后,调用访问ActionMapping,决定是否调用某一action,如果用户请求的是jsp页面或者是其他资源,不会调用某一action,如果决定调用某一action,ActionMapping会将控制权委派给ActionProxy,也叫action代理,此时action代理会通过一个Configuration Manager也就是配置管理器对象加载struts核心配置文件,也就是struts.xml.如果在struts.xml找到需要创建的action,ActionProxy会创建一个Action Invocation实例,action Invocation包括一些列的拦截器和action,先顺序执行一些列的拦截器,然后执行action处理,返回一个结果,通过result返回一个视图或者调用另外某个action.当返回这个视图以后,将之前执行过的拦截器反向执行一遍,然后通过response响应客户端的请求.查看全部
-
默认拦截器查看全部
-
Struts2架构查看全部
-
自定义拦截器: 1.方法一:实现Interceptor接口 -void init():初始化拦截器所需资源 -void destroy() :释放在init()中分配的资源 -String intercept(ActionInvocation ai)throws Exception 实现拦截器功能,利用ActionInvocation参数获取Action状态,返回result字符串作为逻辑视图。 2.方式二:继承AbstractInterceptor类 -提供了init()和destroy() 方法的空实现 -只需要实现intercept方法即可 实际开发当中一般会去继承AbstractInterceptor这个父类查看全部
-
默认拦截器栈查看全部
-
自定义拦截器查看全部
举报
0/150
提交
取消