Struts2调用Action的两种方法以及参数处理

第14.5章 高翔博士最新开源框架Lightning-LM源码解读(五):揭秘位姿图优化核心模块,从数学原理到代码实现 本文介绍了Lightning-LM框架中的位姿图优化(PGO)模块实现。该模块通过融合多源定位信息(激光定位、激光里程计、DR等),构建并优化位姿图来获得更精确的位姿估计。 主要内容包括: 模块概况与数据流程:初始化配置→添加PGO帧→分配位姿→优化求解→更新位姿→滑动窗口 16个核心函数详解:从构造函数到边缘化处理,涵盖完整的PGO工作流程 关键技术点:噪声参数设置、优化问题构建、约束添加、异常值处理等 关键数据结构:帧队列管理、顶点和边构建、优化统计信息收集 该PGO模块采用增量式优化方式,支持多种约束 阅读详情

  在Struts2的框架下,Action的配置信息写在struts.xml中,用来处理来自页面的请求。

一.Action调用

  1.通过表单调用

    表单调用是最为常见的调用方法,只要搞清表单与Action之间的对应方法即可完成调用:

<form action="authorsearch" method="get">
	input author's name:<input type="text" name="author.authorname">
	<input type="submit" value="search">
</form>

    这是一个简单的表单,其中action属性即可说明该表单所对应的action,在struts.xml中只要有如下配置即可完成调用:

<action name="authorsearch" class="lab2.AuthorSearch">
            <result name="success">/WEB-INF/content/authorsearchresult.jsp</result>
            <result name="error">/WEB-INF/content/error.jsp</result>
</action>

    很明显,action的name属性必须要和表单中的action属性一致。

  2.通过超链接调用

  如果想实现点击某个文字或图片后在后台执行Java代码,就要使用超链接调用Action:

<td><a href="./showdetails.action?bookname.title=${l.title}">${l.title }</a></td>

  其中showdetails为struts.xml下的另一Action:

<action name="showdetails" class="lab2.ShowDetails">
            <result name="success">/WEB-INF/content/details.jsp</result>
            <result name="error">/WEB-INF/content/error.jsp</result>
</action>


  显然,使用超链接时我们使用了相对URL,以上代码中的"./showdetails.action"即为相对URL。要注意的是,使用这种方法是必须明确struts.xml中Action所在package的namespace属性,这里我的设置为"/",即项目根文件夹,如果是其他目录,还需要在"/XX.action"前加上该目录。

二.参数处理

  注意观察上面的表单和超链接,便能发现author.authorname以及bookname.title这样的变量,它们的作用是向后台的Java代码传递参数。在表单的例子中,author.authorname的值为用户输入,而超链接中的"${l.title }"为jsp的EL表达式,这些都是需要交给后台处理的参数,需要通过Action传送到后台,下面用表单的例子说明。

  在后台对应第一个Action的类为AuthorSearch,代码如下:

public class AuthorSearch implements Action {

	private Author author;
	
	@Override
	public String execute() throws Exception {
		//do something
		return null;
	}
}



  Author的定义如下:

public class Author {
	private int authorid;
	private String authorname;
	private String age;
	private String country;
		
	public int getAuthorid() {
		return authorid;
	}

	public void setAuthorid(int authorid) {
		this.authorid = authorid;
	}

	public String getAuthorname() {
		return authorname;
	}

	public void setAuthorname(String authorname) {
		this.authorname = authorname;
	}

	public String getAge() {
		return age;
	}

	public void setAge(String age) {
		this.age = age;
	}

	public String getCountry() {
		return country;
	}

	public void setCountry(String country) {
		this.country = country;
	}
}

  在代码运行时,Struts2框架会“自动”为author.authorname赋值,其值为表单中用户所输入的内容,这是如何实现的呢?原来在底层,Struts2框架是这样实现的:
  1.调用request.getParameterNames()方法获取所有的参数名。我们在JavaEE的API文档中可以看到这个方法的描述:

 

  2.对以上方法返回的每个String执行Action.getMethod("set" + String的首字母大写)。例如上面举例的表单中我们的参数名为author.authorname,执行后所调用的method为author.setAuthorname(),而在Author类中,该方法正是authorname的setter方法,由此便完成了对author.authorname的赋值。

  所以,当出现Error setting expression 'author.authorname' with value ['XXX', ]的错误时,我们就要检查是否为authorname设置了符合要求的setter方法以及前端的参数名是否与后台的变量名匹配。

SAP BTP ABAP environment 集成本地系统实践:Cloud Connector、Connectivity service 与隧道通信全解析 摘要: 随着ABAP开发者向云端扩展业务逻辑,如何安全访问企业内网SAP系统成为关键问题。本文基于SAP官方文档,解析通过Cloud Connector和Connectivity service实现云端ABAP环境与本地系统集成的方案。 架构上分为四个角色:ABAP环境、Connectivity服务、Cloud Connector和内网系统。Cloud Connector作为内网出口,通过TLS隧道主动连接云端,避免防火墙开放入站端口。Connectivity服务则作为子账户级“总机”,自动路由请求。 实施 阅读详情

相关推荐

Struts2框架中Action参数获取的三种实现方式

模型-视图-控制器(MVC)是软件开发中的一种架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。模型代表数据和业务逻辑,视图是用户界面,控制器处理输入,将命令传递给模型和视图。MVC模式的主要目的是实现一种分层架构,以降低模块间的耦合度,提高系统的可维护性和可扩展性。Struts2是一个基于MVC模式的Java Web框架,由Apache软件基金会开发。它的设计目标是简化企业级Web应用程序的开发。

weixin_42560991的博客 1280

struts2 从一个action 跳转到另一个action两种方法

action1直接跳转到action2,有两种方法:  1. 需要保存前一个action的属性信息时使用,保存住action1的request对象:       action2  2. 不保存前一个action参数可以用这种方法:        action2  Struts.xml Java代码  "1.0" encoding="UTF-8"

king的专栏 800

用js模拟struts2的多action调用示例

主要介绍了用js模拟struts2的多action调用的实现过程,需要的朋友可以参考下

struts2直接调用action中的方法

struts2直接调用action中的方法

hfdgjhv的博客 2610

struts2action跳转到别的action同时传递参数

struts2action跳转到别的action时,可以使用redirectAction 如: ./pages_crm/crm_cust 如果还需要传递参数: 可以这样:    ./pages_crm/crm_cust                                    ${customerId} 在hrEmploye

xclsky的博客 1479

Struts2中Redirect传参方法

今天在用struts2在做项目时候,从一个action我想跳转到另一个action,并且呢得带上值。说说我的做法吧,首先你得在你的第一个action中这个id必须要有set、get方法。 跳转时你的struts.xml: (方法一): /topicAction!findTo

有梦就能实现 1万+

Struts2从一个action转到另一个action两种方法

感谢博主分享     在Struts2中,Action处理完用户请求后,将会返回一个字符串对象,这个字符串对象就是一个逻辑视图名。Struts 2通过配置逻辑视图名和物理视图之间的映射关系,一旦系统收到Action返回的某个逻辑视图名,系统就会把相应的物理视图呈现给浏览者。                     Struts 2的结果类型决定了Action处理结束后,下一步将会

hi_23 783

struts2的高级配置

动态方法的开启 2方法 1、&lt;action name="helloAction_*" class="com.hd.action.hello" method=”{1}”&gt; *号占位符 2.开启常量 &lt;constant name="struts.enable.DynamicMethodInvocation" value="true"&gt;&lt;/const

马小马的博客 251

Struts2学习笔记(五) Action(下)

调用非execute方法 在前面有关Action的学习中,我们的Action中真正实现业务逻辑的只有execute方法,如果我们每个Action中都只有这么一个方法的话,那么当我们程序中需要的功能很多时,我们就不得不手动编写很多的Action类了,这显然是不合理的。前面我也说道了我们的Action类并不一定非得继承某个类或者实现某个接口,我们可以使用POJO来作为我们的Action,并且我们的A...

weixin_30644369的博客 69

Struts2中的Action的创建以及Action中的方法调用

Structs2Action接口非常的重要,在struts.xml配置中根据对应的action的名字匹配对应的类处理,如果class没写,则默认使用ActionSopport类执行execute方法 ,返回success字符串,做出相应的处理Action的创建有大体上有3种方式, 1:创建一个普通类,里面可以没execute方法,但是必须实现方法返回字符串,否则接收端无法接收对应的参数做出

Watering_sea的专栏 2691

Struts2一个Action内包含多个请求处理方法处理,method的使用方法,struts2中的路径问题,通配符映射

Struts2一个Action内包含多个请求处理方法处理,method的使用方法,struts2中的路径问题,通配符映射 struts2的关于method=“{1}"意思详解   name= "Login_* "   method= "{1} "   class= "mailreader2.Login "> 中Login_*带*是什么意思?method= "{1} "带{}这个是什么意

4202

使用<a>标签调用struts2action、传递动态参数、以及参数中出现加号等特殊字符的处理方法

首先说一下我的web应用是通过标签调用struts2框架下的一个action,给该action传递一个参数,然后action通过这个参数进行相应的处理方法是: 点击我 问号后面是参数的名称。当然调用action里面要有相应的变量来接受这个参数。 那么如果参数是动态生成的,比如我要传递的参数phoneName并不是一个固定的值,而是另一个action生成的。 比如我的应用中,要

fallcreek的博客 5982

struts2action从request获取参数值的两种方式

无论是提交form表单还是从URL中直接获取,struts2action类中获取请求参数值,总的来说有2种方式: 第一种在action中定义同名变量,提供get/set方法。 第二种方式是手动获取HttpServletRequest,然后调用request.getParameter()。

PrayAllForYou 9358

struts2动态方法调用 ActionName!methodName.action

<br />Struts1框架提供了DispatchAction,从而允许一个Action内包含多个处理逻辑。例如对于同一个表单,当用户通过不同的请求按钮提交表单时,应该使用Action的不同方法处理请求。 <br /><br /> Struts2同样提供了这种处理多个请求的Action,看下面的JSP页面。 <br /><br /> 上面的JSP页面包含两个提交按钮,但两个提交按钮分别提交给Action的不同方法处理,其中“登陆”按钮希望使用登陆逻辑来处理请求,而“注册”按钮则希望使用注册逻

shmily_yang的专栏 1553

框架Struts:@Action注解方法中如何调用另一个@Action注解的方法

工作中遇到标题问题:之前直接在一个@Action方法中通过方法名的方式调用另外一个被@Action 注释的方法,结果测试的时候显示找不到返回的页面,修改之后调用如下:@Action(value="invoked")public String test1(){System.out.println("被调用!");return "XX";}@Action(value="invoke", results...

lxxlovezsj626的博客 1910

struts中从一个action跳转到另一个action

<br /><br />平时在action中利用service处理完业务后,直接通过<br /> return mapping.findForward("myVIew");<br /> 这样的方法跳转到页面。<br />现在遇到了这样一种情形,即在action中service完工后,不需要跳转到页面,而是把当前的结果直接传给另外一个action处理(注:该 action是现成的),按上面的做法,是无法传值到下一个action的,搜索了下,可以通过request/session传值,不过简单点可以如下

jaub的技术专栏 1万+

Struts2调用Action方法

Struts2Action调用方法可以分为三种 第一种:首先定义一个Action类,这个类中有两个方法一个登录,一个注册 public String login(){ System.out.println("登录的方法........................"); if (username.equals("demo") && password.equals("demo"))

vcvcttt的博客 1295

【计算机视觉】YOLOv8目标检测数据集构建与配置:图像标注格式及数据集管理指南

内容概要:文章详细介绍了YOLOv8数据集的构建与使用方法。数据集由图像文件(常见格式如`.jpg`、`.png`,建议分辨率为640×640)和标注文件(`.txt`或`.json`格式)构成,标注文件采用归一化的坐标表示目标位置。标准的数据集目录结构包括`images`和`labels`两个主要文件夹,分别存放图像和对应的标注文件,并细分为训练集、验证集(测试集可选)。必需的配置文件`dataset.yaml`定义了数据集路径和类别名称。文中还列举了主流公开数据集如COCO和VOC,提供了数据集划分建议(训练集70-80%,验证集10-15%,测试集10-15%),以及创建自定义数据集的具体步骤,包括收集图像、标注、导出、整理、创建配置文件和验证。最后强调了标注质量、类别平衡、数据增强和预处理的重要性。;适合人群:对目标检测领域有一定了解,尤其是YOLO系列模型的研究者和开发者。;使用场景及目标:①帮助用户理解YOLOv8数据集的组成和结构;②指导用户创建和准备自己的数据集用于YOLOv8模型的训练;③提高数据集的质量,确保模型训练的有效性和准确性。;其他说明:文中提到YOLOv8支持自动数据集下载,简化了使用公开数据集的过程。此外,提供了标注工具和转换工具的链接,方便用户进行数据准备。

CodeDrugger
博客等级 码龄12年 0粉丝 1原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值