- struts框架的工作原理;
1.首先要经过Struts2框架的核心控制器StrutsPrepareAndExecuteFilter。
然后核心控制器依次查找ActionMapper来决定这个请求是否调用action。如果ActionMapper决定调用action,StrutsPrepareAndExecuteFilter就把请求的处理控制权委托给ActionProxy。
2.ActionProxy通过Configuration Manager查询Struts2框架的核心配置文件(struts.xml),找到所要调用的Action类。
接下来,ActionProxy创建一个ActionInvocation实例,该实例负责命令模式的实现,包括在激活action本身之前调用配置的任意拦截器。
3.在action执行完成之后,ActionInvocation实例负责根据action的返回结果码在struts.xml配置文件中查找要输出的结果(Result)。该结果通常是JSP或者FreeMarker模板,也可能是action。在输出的时候,模板可以使用框架提供的Struts2标签。
然后,为action配置的拦截器将被再次执行(顺序和action被调用之前执行顺序相反)。
最后,服务器的响应将通过web.xml文件中配置的Struts2框架核心控制器返回。 - 配置struts.xml,配置文件的编写,理解各元素所包含的属性以及值的表示(如action的配置:如method);
1.web.xml
StrutsPrepareAndExecuteFilter
Struts2提供的核心控制器类
框架开始工作的入口
接管请求
2.struts.xml
该文件名称规定,只能位于src下
package
分模块管理,作用和java中的包类似
name:自定义但不能重复
namespace:命名空间,和url请求路径直接相关
extends:必须直接或间接继承struts-default
action
url和处理类的方法进行映射
name:为请求名,不加后缀
class:处理类的完全限定名称,如果不配置,由默认类来处理
method:处理请求的方法,默认为execute
result
result 结果集的配置
name 结果集名称,和处理方法的返回值匹配,默认为success,可以自定义
struts2提供了5个返回结果
type 指定响应结果类型
dispatcher 转发 默认
redirect 重定向
redirectAction 重定向到Action
result的值为跳转页面,不加/为相对于namespace的路径 - struts框架中内置的result类型及其功能;

- Action接口所定义的字符串常量
SUCCESS NONE ERROR INPUT LOGIN - ActionSupport类的理解
ActionSupport类实现了Action接口,业务处理类也可以继承该类。
struts2不要求我们自己设计的action类继承任何的struts基类或struts接口,但是我们为了方便实现我们自己的action,大多数情况下都会继承com.opensymphony.xwork2.ActionSupport类,并重写此类里的public String execute() throws Exception方法。因为此类中实现了很多的实用借口,提供了很多默认方法,这些默认方法包括国际化信息的方法、默认的处理用户请求的方法等,这样可以大大的简化Acion的开发。 - 业务控制类的定义方式;
1.定义业务逻辑接口的对象 2.定义与表单元素或get请求参数对应的属性 3.定义默认处理请求的execute方法 - Struts控制类访问Servlet API(如session对象)的四种方法。
1.修改Action类,通过ActionContext 获取请求、会话和上下文对象相关联的Map 对象来实现存取属性的功能,代码片段
2.修改Action类,通过实现Struts 提供的接口:RequestAware、SessionAware和ApplicationAware,获取请求、会话和上下文对象相关联的Map 对象来实现存取属性的功能,
3.修改Action类,通过接口:ServletContextAware、ServletRequestAware、
ServletResponseAware 直接访问Servlet API
4.通过ServletActionContext 工具类直接访问Servlet API - ognl的集合操作;
1.直接生成List类型集合的语法:{e1,e2,e3,e4…}
2.自己生成Map类型集合的语法:#{key1:value1,key2:value2,…}
OGNL取得子集时有如下3个操作符:
? :取出所有符合选择逻辑的元素
^ :取出符合选择逻辑的第一个元素
$ :取出所有符合选择逻辑的最后一个元素 - ognl应用示例(如实验题:创建业务控制类OgnlAction,测试基本属性、基本方法、类对象、静态属性、静态方法、List列表、Set集合、Map映射等各种类型参数采用OGNL表达式获取的办法。)






- 控制标签和数据标签分别有哪些?理解每一个标签的作用是什么?

debug标签会在页面中输出一个[Debug] 链接,单击链接可以查看值栈的内容,通常应用于web开发调试阶段。
property标签用于输出值,使用value属性来指定要输出的对象,如果没有指定value属性,那么默认输出栈顶对象。
set标签将一个值赋给指定范围内变量。如在页面中多次引用一个复杂的表达式,就可以将这个表达式赋给一个变量,然后直接引用变量。
push标签用于将值压入值栈。
bean标签用于创建JavaBean类的一个实例。 - 资源文件的后缀名;


- 什么是国际化,在Struts框架中如何应用国际化?


- 拦截器的工作原理;
Struts2拦截器是一种AOP设计思想的体现,以链式执行,对真正要执行的方法(execute)进行拦截,首先按照Action配置的拦截器顺序依次执行相应的拦截器,调用完后再执行Action及result跳转,然后再次执行拦截器(与先前调用相反的顺序),在此链式的执行过程中,任何一个拦截器都可以直接返回,从而终止余下的拦截器或Action及reuslt的执行. - 拦截器的使用方法。
struts2的默认拦截器是定义在strus-default.xml中的。由于默认情况下,这些拦截器都是定义在struts-default包下的。所有在使用struts2时,定义的package需要直接或间接继承struts-default。提供struts2所有的功能。
使用内置拦截器时需要引用拦截器。
使用拦截器是通过在action的定义中使用<interceptor-ref …/>元素来实现的。其格式如下:
<package …>
…
自定义拦截器的步骤:
(1)创建拦截器类(两种实现方式:a)实现Interceptor接口 b)继承AbstractIntercepter类);
(2)注册拦截器;
(3)使用拦截器。
创建拦截器类需要实现Interceptor(com.opensymphony.xwork2.interceptor.Interceptor)接口。
Interceptor接口的定义中提供了init()、destroy()和intercept()3个方法。
AbstractInterceptor是Struts2框架提供的一个实现了Interceptor接口的抽象类,该抽象类提供了init()和destroy()两个方法的空实现。
通过继承AbstractInterceptor抽象类的方式创建拦截器类时,只需实现intercept()方法即可。
注册拦截器分为注册拦截器和注册拦截器栈。
1.注册拦截器
注册拦截器又称为定义拦截器,是通过在配置文件中使用元素和内嵌的子元素在包中实现的。
2.注册拦截器栈
拦截器栈的定义是通过使用元素和内嵌的子元素在包的元素中实现的。子元素用于指明拦截器栈中所要使用的已经注册的拦截器。拦截器栈中拦截器的顺序很重要,它会影响action的行为。
使用拦截器是通过在action的定义中使用<interceptor-ref …/>元素来实现的。其格式如下:
<package …>
…




相关推荐
YOLOv8魔改网络后训练全零?别慌,关掉AMP混合精度训练试试
本文探讨了YOLOv8魔改网络后训练出现全零指标的问题,指出AMP混合精度训练与自定义网络结构的不兼容性。通过分析梯度消失现象和AMP工作原理,提供了关闭AMP、调整学习率等解决方案,并建议预防性开发实践以避免类似问题。
Struts2 interceptor 和 filter
Struts2 interceptor 和 filter Struts2 的工作是基于filter的,其核心的控制器是一个filter:FilterDispatcher。框架的流程如下: a.客户端初始化一个请求; b.这个请求经过一系列的过滤器filter c.F
Ubuntu 24.04 新增用户并禁用 root 账户操作指南
Ubuntu 24.04 新增用户并禁用 root 账户操作指南
struts2:使用Filter作为控制器的MVC
使用Fliter作为控制器,可以方便的在应用程序里对所有资源包括静态资源进行控制访问以下是一个用Filter作为控制器的例子 程序结构 web.xml的配置<?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:x
蓝桥杯嵌入式(基础教程)STM32G431RBT6——创建工程以及点灯
首先选择正确的芯片类型:STM32G431RBT6工程的创建主要有配置时钟以及烧录的方式。在配置好之后需要对时钟进行配置,由于蓝桥杯的外部晶振是24MHz因此需要对时钟树进行相应的配置。第一步先点击时钟配置之后就可以对时钟进行相应的配置了最后一步,需要对工程起一个名字,并且要选择KEIL做为其相应的软件之后再需要再生成代码那里进行相应的控制。当然这样根据生成的工程不能直接使用会有一个报错,所以需要添加一个启动文件。这个启动文件可以在官方的LCD文件夹下复制到自己的工程中。
用Python+NumPy手把手实现分数阶傅里叶变换(FRFT),搞定线性调频信号分析
本文详细介绍了如何使用Python和NumPy实现分数阶傅里叶变换(FRFT),特别针对线性调频信号(Chirp信号)分析。通过从零开始的代码实现和可视化案例,展示了FRFT在时变信号处理中的强大能力,帮助工程师和研究人员高效分析频率随时间变化的信号。
Sturts2 初学学习笔记 4
一、本节知识点 二、新建web.xml和以前一样 三、新建com.eatok.form.UserBea.java package com.etoak.form; public class UserBean { //封装表单项 private String myname; //封装一个非表单项,此表单项不是用户提交的而是开发者自己设计的 private String tip;
“详规一张图”——上海土地利用数据
本文围绕城市规划与土地管理中空间数据的重要性,介绍了基于地理信息系统(GIS)技术对上海市用地数据进行获取与处理的具体方法。文章以上海市为例,详细阐述了如何通过构建以10米为间隔的网格点覆盖全市范围,并采用GET请求方式从“上海用地规划官网:详细规划‘一张图’公众版”平台获取地块信息的过程。通过对API接口参数的设置,包括坐标系、几何类型和返回格式等,实现了对每个网格点对应地块的属性信息(如规划用地类型、容积率、地块编号等)及几何形状信息的提取。
学习笔记Sturts2 day02
复习:1.什么是struts2 1>运行在web层.负责处理请求的. 2>struts2已经帮我们封装了很多web中常用的功能(拦截器) 3>struts2 与 struts1 没什么关系. struts2是基于webwork框架 2.struts2框架搭建 1> 导包 |- struts2/apps/struts-blank.war/WEB-INF/lib 2>...
【异常】Hermes Agent调用z.ai接口失败(余额不足)API call failed (attempt 1/3): RateLimitError [HTTP 429]
补充说明:同步尝试解析接口对应网页时,出现“网页解析失败,可能是不支持的网页类型,请检查网页或稍后重试”提示,该提示不影响核心报错排查,仅作为辅助信息。
PCL DBSCAN密度聚类【2026最新版】
点云密度聚类的PCL代码实现,与matlab自带的密度聚类算法进行对比验证,结果一致。3万多个点能再2秒左右运行出结果,算法效率尚可。
sturts2框架的学习笔记,问题解决:
直接继承ActionSupport有很多的好处, sturt2的默认提供了输出校验错误的能力。 ActionSupport已经提供了国际化信息的能力,通过getText("");获取国际化的信息。 Sturt2也允许通过定义配置文件来完成数据校验。该校验框架实际上是基于Xwork的validator框架。 :No result defined for action com.te
2023华为od机试C卷【最富裕的小家庭】C语言 实现
在一颗树中,每个节点代表一个家庭成员,节点的数字表示其个人的财富值,一个节点及其直接相连的子节点被定义为个小家庭。现给你一颗树,请计算出最富裕的小家庭的财富和。
Struts2学习笔记1
一.下载struts2.0.1http://struts.apache.org/downloads.html,下载struts-2.0.1-all.zip,这个压缩包中包含了开发struts2所需的struts2-core.jar核心包以及其它struts2所依赖的JAR文件,另外还有一些struts2的示例程序以及一些HTML的API文档。二.试用struts2.0.11. 新建一
最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版
Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。
RU DOS版、EFI版32bit/64bit BIOS常用工具
DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。
sturts2校验总结
.struts2提供的校验有以下几种方式: 1.使用从ActionSupport类中继承而来的validate()方法实现校验,开发人员可以自定义如何实现校验, 如果最后校验有错误,则返回INPUT逻辑视图,所以要在配置文件中配置此逻辑视图对应的物理视图。 2.同样是继承ActionSupport类中的validate*()方法,后面的*代表的是将要校验的方法名称,并且方法名首字母要大...
温度PID控制PLC程序
温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值
sturts2入门实例
原文链接:http://gongjiayun.iteye.com/blog/802000 sturts2入门实例: 主要要完成以下加几点: a. 1. 引入struts2相应的jar包 从网上下载,或者用MyEclipse的菜单MyEclipse→project capabilites -> Add capabilites 2. 定义实体类 Book.j
TMS_WebGMaps_1.9.8.0_Full_Source
TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder
Sturts2 要点细谈
Struts2 概述 Struts2 是目前较为普及和成熟的基于MVC设计模式的web应用程序框架,它不仅仅是Struts1 的升级版本,更是一个全新的Struts架构。最初,是以WebWork框架和Struts框架为基础,通过提供增强和改进的Struts框架,进而实现简化web技术人员开发工作的目标。不久之后,Webwork框架和Struts社区联合创造了现在流行的Struts2框架。 Stru...
Sturts2 HelloWorld
最近开始学习Struts2,一个官网的HelloWorld居然搞了两天,一大堆莫名其妙的问题。万事开头难,今天终于把所有bug处理掉了。Struts2 官网的案例 http://struts.apache.org/docs/hello-world-using-struts-2.html搭建Tomcat开发环境 推荐两篇验证过可行没问题的文章: MyEclipse: http://www.tu
sturts2拦截器
sturts2自带了很多拦截器,使用方便。在网上商城项目中,我们自己定义了一个拦截器,操作如下: 写一个拦截器的类: package cn.itcast.shop.interceptor; import org.apache.struts2.ServletActionContext; import cn.itcast.shop.adminuser.vo.AdminUser; import c
Sturts2复习笔记
Sturts2复习笔记 第二章 1.基于Struts2框架的web应用开发流程。 创建web项目.添加基于struts2框架所需要的jar包 创建Web项目的视图 创建业务控制类(Action) 创建struts2.xml 创建web.xml 发布web项目并测试 第三章、第四章 1. struts框架的工作原理; 发起请求 接受请求交给struts2的核心控制器 根据url查看struts...
sturts2 回顾
第一个简单的struts2例子: 1、 创建一个web project 2、 导入jar包 具体jar包在struts 的例子中的lib文件夹中copy 3、 编写web.xml文件 4、 写一个action 5、 编码struts.xml文件 如果name="success";则success可以不写 6、 运行 浏览器中显...
sturts2上传文件
Struts2文件上传 2007-12-05 22:29:51| 分类: Struts2 | 标签: |字号大 中 小 订阅 Struts2使用开源项目Apache Jakarta Commons FileUpload和内建的FileUploadInterceptor拦截器实现文件上传,所需的jar包如下: commons-logging-1.1.jar freemarker-...
Sturts2 ModelDriven
模型驱动 在model中实现ModelDriven接口,重写getModel方法,得new Model对象,Struts2不会自动帮我们new了。 ActionUser类 public class UserAction extends ActionSupport implements ModelDriven<User>{ private User user = new User()...
Sturts2 struts2Tags
property标签 property标签用于取得value的属性值 <li>property: <s:property value="username"/> </li> <!-- proerty标签中value中值默认解析为OGNL表达式 , 想获取为字符串则添加单引号。 --> ...
Struts2学习笔记1——基础知识
1.Struts2是现在Web开发中一个比较流行的MVC框架,它是由WebWork框架发展而来的,Struts1与Struts2如同小熊猫与大熊猫一样,虽然名字相同,但是区别比较大,Struts2充分吸收了Struts1的优秀之处,同时也避免了Struts1的不足之处,开发更方便快捷。2.Struts2在web.xml文件中主要配置一个过滤器用于接收页面请求,并将请求转发给后台逻辑处理,其作用类似于Struts1中的ActionServlet。其具体配置如下:struts2org.apache.struts
关于sturts2和FCKeditor的一些问题
本人在刚接触sturts2的时候遇到的一些问题,在我们做的项目时候用的FCKeditor编辑器和struts2结合的时候有些小问题,就是在做新闻编辑的时候出现一些显示html源码的问题,这时就要设置struts2的标签要指定escape="false"属性才可以显示正常的内容和图片。
322



被折叠的 条评论
为什么被折叠?



