Struts2高级(插件)笔记一
插件
Struts-plugin.xml

说明:
Struts-plugin.xml文件是在tomcat服务器启动的时候加载的
该配置文件在classpath的根目录下

在每一个含有plugin字母的jar包的根目录下有一个struts-plugin.xml文件
当tomcat启动的时候,就把所有的含有plungin的jar包的该配置文件就加载了。
静态注入
1、 在struts2的配置文件中写的bean

在tomcat启动的时候,会执行OgnlValueStackFactory的createValueStack方法

从上图可以看出,在tomcat启动的时候就决定了ValueStack的实现类
2、 改变静态注入的方式
可以在struts.xml文件中对struts-default.xml文件中的bean进行配置和覆盖,这样就可以按照覆盖掉的执行。在struts.xml文件中,做如下的配置

这个时候,当tomcat启动的时候,将会报错。

改变action的产生方式
ObjectFactory

说明:
Struts2容器就是利用ObjectFactory的上面的几个方法产生的action,result,interceptor
配置文件

在struts2容器中,对象工厂是由StrutsObjectFactory来产生的。

从上图中可以看出,StrutsObjectFactory继承了ObjectFacotry,但是没有覆盖buildAction方法,说明struts2的action的产生还是调用了ObjectFactory中的buildAction方法。
写一个对象工厂

该类重写了buildAction方法。
配置文件

说明:
当在浏览器提交一个请求,请求某一个action的时候,在创建action的时候,就会进入到Itheima09ObjectFactory中执行buildAction方法。
Spring与struts2
Jar包中

Struts-plugin.xml

说明:对象工厂为spring:StrutsSpringObjectFactory
总结
当tomcat启动的时候,加载了很多个struts-plugin.xml文件,在该文件中可以配置
Bean
Package
Interceptor
Action
Result
\ 这些元素就被加载到了struts2容器中。
如果不想要某一些内容,只要把这些内容所在的struts-plugin.xml的jar包去掉就可以了。
插件的主要体现形式是jar包。
结果集
结果集架构

说明:
1、 struts2从结构分,可以分为两种结果集
1、 需要跳转的,也就是说需要获取result标签中的内容
该类必须继承StrutResultSupport
2、 不需要跳转,不需要获取result标签中的内容
该类可以直接实现Result接口
结果集的类型
转发

重定向

Json

说明:该结果集是struts与ajax结合的结果集,所以该结果集是不需要跳转的,所以不需要获取result标签中的内容,所以该结果集直接实现Result接口就可以了。
struts2核心流程:
Struts2高级(插件)笔记一的更多相关文章
- Struts2权威指南笔记
Struts2权威指南笔记 1.mvc特点包括: ① 多个视图可以对应一个模型 ② 模型返回的数据与显示逻辑分离 ③ 应用层被分隔为三层,降低了各层之间的耦合,提供了应用的可扩展性 ④ 控制层的概念也 ...
- js高级程序设计笔记之-addEventListener()与removeEventListener(),事件解除与绑定
js高级程序设计笔记之-addEventListener()与removeEventListener(),事件解除与绑定 addEventListener()与removeEventListener( ...
- Android高级编程笔记(四)深入探讨Activity(转)
在应用程序中至少包含一个用来处理应用程序的主UI功能的主界面屏幕.这个主界面一般由多个Fragment组成,并由一组次要Activity支持.要在屏幕之间切换,就必须要启动一个新的Activity.一 ...
- bootstrap-paginator 分页插件笔记
[MVC]bootstrap-paginator 分页插件笔记 bootstrap-paginator基于bootstrap框架,使用起来非常简单.官网:http://harttle.github ...
- Struts2 REST 插件 XStream 远程代码执行漏洞 S2-052 复现过程
v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VM ...
- Python高级学习笔记
Python高级学习笔记,此笔记中包含Linux操作系统.Html+CSS+JS.网络协议等. 所有思维导图为本人亲手所画,请勿用于商用. 大哥们,求点赞哦. 第一天笔记:链接 第二天笔记:链接 第三 ...
- Java高级程序设计笔记 • 【目录】
持续更新中- 我的大学笔记>>> 章节 内容 实践练习 Java高级程序设计作业目录(作业笔记) 第1章 Java高级程序设计笔记 • [第1章 IO流] 第2章 Java高级程序设 ...
- Struts2 Convention插件的使用(1)
刚刚查阅官方文档(convention-plugin.html)并学习了Struts2的Convention插件,文章这里只作为一个笔记,建议大家去看官方文档比较清晰和全面. 需要在项目添加这些包 c ...
- struts2马士兵笔记
Struts2 学习笔记 目录 01 Struts2-Action 一. Struts作用: 二. 搭建Struts2的运行环境: 三. Namespa ...
随机推荐
- mtrace 简介
内存泄露问题一般会再长时间运行的程序中暴露出来.而且一般很难定位和查找. linux 提供mtrace/muntrace来检测程序是否有内存泄露.一般来说要检测哪一段代码是否有内存泄露,就可以用这一对 ...
- Java经典面试笔试题及答案
1.什么是对象序列化,为什么要使用? 所谓对象序列化就是把一个对象以二进制流的方式保存到硬盘上.好处:方便远程调用. 2.值传递与引用传递的区别? 所谓值传递就是把一个对象的值传给一个新的变量,但是系 ...
- net core调用MimeKit发送QQ邮件
一.在QQ邮箱内申请授权码,具体参考请官方文档 二.具体代码 public void TestSendMailDemo() { MimeMessage message = new MimeMessag ...
- js实现上移下移
直接上代码 //上移 var $up = $(".up") $up.click(function () { var $tr = $(this).parents("tr&q ...
- 普及C组第一题(8.1)
1999. [2015.8.6普及组模拟赛]Wexley接苹果(apple) 题目: Wexley最近发现了一个古老的屏幕游戏.游戏的屏幕被划分成n列.在屏幕的底端,有一个宽为m列的篮子(m<n ...
- Catalyst 6500/6000 Switches ARP or CAM Table
译:https://www.cisco.com/c/en/us/support/docs/switches/catalyst-6500-series-switches/71079-arp-cam-ta ...
- 洛谷P1131 时态同步
题意: 给一个n点的树,每条边都有边权,问从根出发需要增加多少长度,使得最终的儿子到根的距离是一样的 思路: 上来一个思路wa了3次,看完题解之后,又一次豁然开朗…… orz #include< ...
- 【PAT甲级】1082 Read Number in Chinese (25 分)
题意: 输入一个九位整数,输出它的汉字读法(用拼音表示). trick: 字符串数组""其实会输出一个空格,而不是什么都不输出,导致测试点0和4格式错误. AAAAAccepted ...
- centos7一步一步搭建docker tomcat 及重点讲解
系统环境:centos7.7 (VMware中) image版本:tomcat:8-jdk8-openjdk (截止2020.01.10该系列版本) 安装步骤参考文章:https://www.jian ...
- php与js的false类型
php除了下面列出来的情况是false 其余情况都可以看成true 包括NaN 和 空资源 整数 0 浮点数 0.0 空字符串 '' 或者'0' false 空数组 NULL类型 空标生成Simpl ...