第三章 Struts配置(第三~七节其他配置)

告别USB转接:在STM32探索板上用SPI跑通ESP-Hosted,实现Wi-Fi/BLE连接 本文详细介绍了如何在STM32F469I-DISCO开发板上通过SPI接口实现ESP-Hosted方案,为嵌入式设备添加Wi-Fi和蓝牙连接功能。通过硬件配置、协议栈优化和性能测试,展示了这一创新方案的成本效益和开发效率,特别适合资源受限但需要稳定无线连接的嵌入式应用场景。 阅读详情

3.3节 Result配置

Action里提供了五个默认的返回值:

String SUCCESS = "success";

String NONE    = "none";

String ERROR   = "error";

String INPUT   = "input";

String LOGIN   = "login";

 

默认的一些配置

在package下有如下配置

<result-types>

<result-type name="dispatcher"

class="org.apache.struts2.dispatcher.ServletDispatcherResult"

    default="true" />

</result-types>

 

如果一个Result的type没有设定的话,默认为dispthcher。Dispatcher的意思是转向一个JSP等的资源。

另外如果Result的name没有设定的话,默认为SUCCESS。

 

一个完整的Result的声明如下:

<result name="success" type="dispatcher">

    <param name="location">/ThankYou.jsp</param>

</result>

考虑到默认值可以写成:

<result>

    <param name="location">/ThankYou.jsp</param>

</result>

另外也可以简写为:

<result>/ThankYou.jsp</result>

 

另外为了方便,可以在package中设置一些全局的result,例如:

<global-results>

  <result name="error">/Error.jsp</result>

  <result name="invalid.token">/Error.jsp</result>

  <result name="login" type="redirect-action">Logon_input</result>

</global-results>

 

动态结果

有些时候,在Action执行完毕之后才知道Result的指向,可以使用如下的方法:

Action

private String nextAction;

public String getNextAction() {

    return nextAction;

}

public String execute() throws Exception {

  return “next”;

}

 

struts.xml

<action name="fragment" class="FragmentAction">

  <result name="next" type="redirect-action">${nextAction}</result>

</action>

 

 

3.4节 ActionSupport

Action类不一定非要实现Action接口或者集成ActionSupport类,也就是说Action可以是一个POJO对象,只不过提供一个返回String的方法。如果Action类不实现Action接口,也不从ActionSupport集成,则Struts框架通过Java的反射机制(Reflection)来调用Action类中的处理方法。

Action类的处理方法需要满足以下要求

1 public

2 返回String,框架根据返回值决定迁移的目的

3 (可选)抛出Exception,让Struts框架统一处理异常

 

 

3.5节 Exception Handling

Struts可以以声明的方式处理Action类抛出的异常。以声明的方式处理是指:所有的Action类的处理方法抛出的Exception会被框架统一处理,之后定向到预先定义的Result。处理这些异常的Action,Result等可以动态的配置。

Struts2自带一个默认的配置:struts-default.xml,在这个文件中预先定义了一些基本的操作,其中Exception Handling也在其中,参看下述代码:

 

...

<interceptors>

    ...

    <interceptor name="exception"

          class="com.opensymphony.xwork.interceptor.ExceptionMappingInterceptor"/>

    ...

</interceptors>

 

<interceptor-stack name="defaultStack">

    <interceptor-ref name="exception"/>

    <interceptor-ref name="alias"/>

    <interceptor-ref name="servlet-config"/>

    <interceptor-ref name="prepare"/>

    <interceptor-ref name="i18n"/>

    <interceptor-ref name="chain"/>

    <interceptor-ref name="debugging"/>

    <interceptor-ref name="profiling"/>

    <interceptor-ref name="scoped-model-driven"/>

    <interceptor-ref name="model-driven"/>

    <interceptor-ref name="fileUpload"/>

    <interceptor-ref name="checkbox"/>

    <interceptor-ref name="static-params"/>

    <interceptor-ref name="params"/>

    <interceptor-ref name="conversionError"/>

    <interceptor-ref name="validation">

        <param name="excludeMethods">input,back,cancel,browse</param>

    </interceptor-ref>

    <interceptor-ref name="workflow">

        <param name="excludeMethods">input,back,cancel,browse</param>

    </interceptor-ref>

</interceptor-stack>

...

 

要使用Struts2声明式异常处理,只需要将异常映射到result就可以了,可以用两种方法配置,一种方法是全局配置,针对所有的Action有效,另一种是针对具体的Action做配置,只针对具体的Action有效。

参看如下struts.xml 配置文件片段:

<package name="default">

      ...

      <global-results>

          <result name="login" type="redirect">/Login.action</result>

          <result name="Exception">/Exception.jsp</result>

      </global-results>

 

      <global-exception-mappings>

          <exception-mapping

exception="java.sql.SQLException" result="SQLException"/>

          <exception-mapping

exception="java.lang.Exception" result="Exception"/>

      </global-exception-mappings>

      ...

      <action name="DataAccess" class="com.company.DataAccess">

          <exception-mapping

exception="com.company.SecurityException" result="login"/>

          <result name="SQLException" type="chain">SQLExceptionAction</result>

          <result>/DataAccess.jsp</result>

      </action>

      ...

</package>

 

上述配置有如下结果

1 一个java.sql.SQLException异常将链接到SQLExceptionAction (上述文件中没有说明)

2 一个com.company.SecurityException将重新定位到login.action

3 其他从java.lang.Exception继承而来的Exception将会被定为到/Exception.jsp页面

 

3.6节 Intercepter拦截器

拦截器的运行时机在Action类运行之前和之后。拦截器使用Filter模式,将你需要执行的代码放在Action类处理方法之前或者之后执行。拦截器在开发程序的时候功能非常强大,通过使用拦截器可以完成校验,属性设置,安全,日志,程序剖析等功能。

 

拦截器可以彼此链接构成一个拦截器的栈,每一个拦截器本质上是一个Java类,都有一个常常的类名,为了方便使用,可以在Struts2框架中注册这些拦截器,例如:

<interceptor name="security" class="com.jpleasure.security.SecurityInterceptor"/>

  <interceptor-stack name="secureStack">

    <interceptor-ref name="security"/>

    <interceptor-ref name="defaultStack"/>

  </interceptor-stack>

</interceptors>

拦截器和拦截器栈可以混合使用来定义新的拦截器栈,在调用过程中,框架按照在拦截器栈中的顺序逐个调用这些拦截器。

 

可以在Package中定义默认的拦截器栈,例如:

<default-interceptor-ref name="secureStack"/>

当然每一个Action类也可以定义自己的拦截器栈,例如:

<action name="VelocityCounter"

                         class="org.apache.struts2.example.counter.SimpleCounter">

    <result name="success">...</result>

    <interceptor-ref name="defaultComponentStack"/>

</action>

 

3.7节 分离配置文件

可以在struts.xml中使用include标记将配置文件分离成不同的部分。

例如:

<!DOCTYPE struts PUBLIC

  "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

  "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

    <include file="Home.xml"/>

    <include file="Hello.xml"/>

    <include file="Simple.xml"/>

    <include file="/util/POJO.xml"/>

</struts>

 
【ComfyUI】Wan2.2 Animate 动作迁移重绘视频生成 本文介绍了一个基于ComfyUI的Wan2.2 Animate视频生成工作流,通过动作迁移和视频重绘技术实现高质量视频创作。该系统融合视频帧重建、动作迁移、图像重绘和音频合成等多种AI技术,核心采用Wan2.2 Animate 14B_fp8模型配合专属VAE解码器和LoRA微调模块。工作流程包含输入预处理、模型加载、特征提取、动作采样生成、解码输出和资源清理六个阶段,通过WanVideo系列节点实现从图像/视频输入到最终视频输出的完整处理。系统支持对参考图像进行视觉特征提取和嵌入生成,结合文本/动作嵌入进 阅读详情

相关推荐

【Pytorch教程】:卷积神经网络 CNN

Pytorch教程目录 Torch and Numpy 变量 (Variable) 激励函数 关系拟合(回归) 区分类型 (分类) 快速搭建法 批训练 加速神经网络训练 Optimizer优化器 卷积神经网络 CNN 目录Pytorch教程目录什么是卷积神经网络 CNN卷积 和 神经网络池化(pooling)流行的 CNN 结构CNN 卷积神经网络MNIST手写数据CNN模型训练可视化训练全部代码 什么是卷积神经网络 CNN 卷积 和 神经网络 卷积神经网络是如何运作的呢, 举一个识别图片的例子, 我们知

nanke_4869的博客 8087

Struts2学习之package配置

包配置 在struts框架中 ,是通过包配置来管理Action和拦截器的。在包中可以配置多个Action和拦截器。再struts.xml配置文件中,包是通过元素来配置的。 包配置在struts.xml中的配置格式如下: 包名" extends="包名" namespace="/命名空间">……   元素的常用属性如下所示: name:指定包名,是供其它包继承的时候使用

不如一默 810

Chroma向量数据库实战:用Python快速搭建本地知识库(附中文诗词检索案例)

本文详细介绍了如何使用Chroma向量数据库和Python快速搭建本地知识库,并附有中文诗词检索的实战案例。通过解析核心概念、数据准备、向量化及智能检索实现,展示了Chroma在处理中文语义搜索时的轻量级与易用性,为开发者构建AI应用原型提供了实用指南。

weixin_29221753的博客 480

使用Struts2开发Java Web应用程序(目录)

配套源代码网站:https://teamware.dev.java.net 第一部分 Struts入门    第一章 Struts2 概览(beta)    第二章 一个简单的Login 应用程序(beta)       Struts 2 概要    第三章Struts配置(beta)        第三章 Struts配置(第一节 struts.properties配置)  

Struts 2 的专栏 7万+

CRMEB小程序订阅消息实战指南:PHP配置与疑难排查

本文提供CRMEB小程序订阅消息的完整实战指南,重点解析PHP环境下的配置流程与常见错误解决方法。文章从订阅消息的核心规则讲起,详细拆解了从微信后台获取模板到CRMEB后台完成字段映射的关键步骤,并提供了从用户授权、缓存清除到服务器日志检查的逐层排查方案,帮助开发者高效打通消息通道,避免常见配置陷阱。

weixin_29022115的博客 318

突破Shopee平台数据采集的风控挑战与技术解决方案

高效、稳定、合规的数据采集能力,始终是我们服务的核心价值。多类型代理组合:采用高匿名住宅代理(模拟真实用户IP)与数据中心代理(高并发需求)混合策略,结合IP轮换频率与目标国家后缀(如.com.my、.vn)动态匹配14。反反爬数据过滤:针对Shopee页面中的混淆数据(如虚假价格标签、隐藏元素),采用XPath精准定位结合正则表达式清洗,确保数据准确性89。随机化请求间隔:在爬虫代码中引入随机延迟(如1-5秒),并模拟“浏览-点击-滚动”等用户行为链,降低行为模式的可预测性48。

klj3388的博客 2977

第七节:Struts2-类型转换

类型转换的作用: 实现了表示层与逻辑层数据类型之间的转换。(JSP页面只有String类型,Action层有各种类型),这种数据转换可以放在Action处理类中实现,因为几乎每个Action都涉及到数据转换所以抽出来做了自动(基本类型、OGNL表达式)的类型转换拦截器。 1.处理请求参数 将JSP页面(也可能是其他视图类型)提交的数据(字符串类型),转换成Action中设定的复杂类型属性

我是xxxx 613

从仿真曲线到电路状态:用Cadence Virtuoso深度剖析CS放大器各个工作区(以电流源负载为例)

本文通过Cadence Virtuoso平台,深入剖析电流源负载CS放大器在不同工作区的表现,从仿真曲线解读电路状态。详细介绍了如何通过Vout-Vin直流扫描曲线判断MOS管工作区域(截止区、饱和区、线性区),并验证理论与仿真的一致性,提升模拟IC设计调试效率。

weixin_30940783的博客 442

使用Struts2开发Java Web应用程序

原文: http://blog.youkuaiyun.com/struts2/archive/2007/08/01/1721752.aspx 配套源代码网站:https://teamware.dev.java.net 第一部分 Struts入门    第一章 Struts2 概览(beta)    第二章 一个简单的Login 应用程序(beta)       Struts 2 概要

cool_rain_man的专栏 1085

使用IGV软件可视化染色质可及性

染色质可及性(chromatin accessibility)是指DNA序列在植物细胞核中的可访问程度。染色质是由DNA和蛋白质组成的复杂结构,它紧密地包裹在细胞核中,并影响基因的表达和功能。染色质可及性研究着重于理解染色质是否容易被转录因子和其他调控蛋白访问,从而影响基因的表达。文献中,常常会有下面这种图片来表示基因组上的一些区域或基因的染色质开放性强弱。一般情况下,我们可以使用IGV软件或GSA-man软件进行可视化,两者的操作相似。这里,以IGV软件为例,演示如何对染色质可及性进行可视化。

沉香best的博客 3724

【OCPP】ocpp1.6J协议框架说明

本文档的目的是为读者提供创建正确的可互操作 OCPP JSON 实现 (OCPP-J) 所需的信息。我们将根据我们自己的经验,尝试解释什么是强制性的、什么是良好做法以及什么是不应该做的。毫无疑问,误解或歧义仍然存在,但我们旨在通过本文件尽可能地防止它们。IANA:互联网数字分配机构(OCPP-J:使用JSON通过WebSocket进行OCPP通信。特定的OCPP版本应使用J扩展进行指示。OCPP1.5J表示我们正在讨论1.5版本的JSON/WebSocket实现。

qq_53871375的博客 1241

struts2开发web

[置顶] 使用Struts2开发Java Web应用程序(目录) 分类: Struts2 2007-08-01 22:12 57367人阅读 评论(48) 收藏 举报 strutsjavaweblocalizationjquerydojo 配套源代码网站:https://teamware.dev.java.net   第一部分 Struts入门     第一章 Struts2...

LIXG425的专栏 187

数据科学助力大数据领域的航空安全分析

随着航空业的快速发展,航班数量不断增加,航空安全问题日益受到关注。大数据时代的到来,使得航空领域积累了大量的数据,包括飞行数据、维护数据、气象数据等。本文章的目的在于探讨如何运用数据科学的方法和技术,对这些大数据进行分析,以提高航空安全水平。范围涵盖了从数据收集、预处理到数据分析、模型构建和应用的整个流程。本文将按照以下结构进行组织:首先介绍数据科学和航空安全分析的核心概念以及它们之间的联系;接着阐述核心算法原理和具体操作步骤,并使用Python源代码进行详细说明;

软件工程实践的博客 1292

Struts2的专栏

第一部分 Struts入门    第一章 Struts2 概览(beta)    第二章 一个简单的Login 应用程序(beta)    第三章Struts配置(beta)        第三章 Struts配置(第一节 struts.properties配置)        第三章 Struts配置(第二节 Actin配置)        第三章 Struts配置(第三~七节其他配置)

518

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Struts2,大爷你好!第二天补一发笔记

第四节Struts2处理传入多个值处理数目不定的字符串。多选框 String[] students处理数目不定的JavaBean对象 List<student> Student第五节:struts.xml配置 说明例:<package name="包名" namespace="/fore" abstract="true" extends="strus-default...

weixin_30485799的博客 100

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Struts2学习拦截器

介绍 拦截器之所以称为拦截器,是因为他可以在Action执行前后拦截调用。 Struts 2 将它的核心功能放到拦截器中实现而不是分散到 Action 中实现, 有利于系统 的解耦, 使得功能的实现类似于个人电脑的组装, 变成了可插拔的。 需要某个功能就“ 插 入” 一个拦截器, 不需要某个功能就“ 拔出” 一个拦截器。 你可以任意组合拦截器来为 Action 提供附加的功能, 而不需要修...

茨时代べ 的博客 200

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

上一篇: 第三章 Struts配置(第二节 Actin配置)
下一篇: 附录一 Maven2 安装
struts2
博客等级 码龄19年 885粉丝 103原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值