首页 > 其他分享 >struts2中的参数传递

struts2中的参数传递

时间:2023-08-27 11:03:54浏览次数:42  
标签:username return String myparam 参数传递 struts2 password public



这个问题其实一直很困惑我的,在写平常的jsp程序时,传递参数很容易,通过表单,request,链接等都可以传递,但是到了struts2中,在写的各个地方,都看不到任何的request或是response,不知道该怎么传递参数了,到了今天学习了struts2中的参数传递这一节,终于解开了疑惑,但是还不是很清楚,有待以后探索。

在这里说一下,struts2中,Action之间如何传递参数。Action间的参数传递是在struts.xml文件中进行配置的,在result元素中,用param标签指定传递参数的名字和值,但是这个参数名,不是随便写的,要和将要传递给的Action中的属性名相对应。下面举例来说明一下。

示例:有一个Login.jsp页面,有用户名和密码两个元素,要将数据提交到Action1中,Action1再请求转发或者重定向到Action2中,在Action1请求转发或者重定向到Action2的过程中,要将用户名和密码两个参数,外加一个自定义的不变参数,传递到Action2中。Action2接收到参数,将参数显示到一个结果页面:result.jsp


代码:

Login.jsp:
<form action="/struts2/test/action1" method="post">
    	姓名:<input type="text" name="username"/><br/>
    	密码:<input type="password" name="password"/><br/>
    	<input type="submit" value="提交"/>
    	<input type="hidden" name="type" value="something"/>
    </form>
struts.xml:
<action name="action1" class="com.suo.actions.Action1">
	 <result name="success" type="redictAction"><!--type指定是请求转发还是重定向-->
	 	<param name="actionName">action2</param><!--在这里指定要请求转发或是重定向到的Action-->
	 			
	 	<param name="username">${username}</param>
	 	<param name="password">${password}</param><!--action1中的属性值-->
	 	<param name="myparam">piao</param><!-- 自定义的不变参数 -->
	 			
	 	<!--在这里定义的参数,在传到的Action中,都要有相应的set/get方法,才能够得到该参数 ,
	 				并且在传递到的Action中的属性名,要和参数的name保持一致-->
	 </result>
</action>
	 	
<action name="action2" class="com.suo.actions.Action2">
	<result name="success">/WEB-INF/result/action.jsp</result>
</action>
Action1.java:

package com.suo.actions;

import com.opensymphony.xwork2.ActionSupport;

public class Action1 extends ActionSupport {
	
	private String username;
	private String password;
	
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	
	public String execute()
	{
		System.out.println(type);
		return SUCCESS;
	}
}



Action2.java:

package com.suo.actions;

import com.opensymphony.xwork2.ActionSupport;

public class Action2 extends ActionSupport {
	
	private String username;
	private String password;
	private String myparam;
	
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	
	public String getMyparam() {
		return myparam;
	}
	public void setMyparam(String myparam) {
		this.myparam = myparam;
	}
	public String execute()
	{
		System.out.println(username);
		System.out.println(password);
		System.out.println(myparam);
		
		return SUCCESS;
	}
}



result.jsp:

<body>
   	username:<s:property value="username"/><br>
   	password:<s:property value="password"/><br>
   	myparam:<s:property value="myparam"/><br>
   	
   	<!-- 这里可以用标签得到的属性值,必须是在Action中有对应的set/get方法才可以 -->
   	
  </body>




标签:username,return,String,myparam,参数传递,struts2,password,public
From: https://blog.51cto.com/u_5173797/7251449

相关文章

  • Struts2中防止表单重复提交的两种方式
    防止表单重复提交,这是个很重要的知识点,而且很有用。当用户提交了一个表单,此时,地址栏显示的是处理这个表单的Action的地址,若此时刷新,则会重新发送一次表单数据,即又进行了一次提交,若这个Action是用来处理用户注册的,那么重复提交会再一次向数据库中插入之前已经插入的数据,这显然不是我......
  • struts2模型驱动
    和模型驱动的相对应的是属性驱动,虽然名字叫的挺牛的,其实很好理解。属性驱动就是在Action中,定义的是和表单中对应的一个个属性,然后有属性的get/set方法。而模型驱动就是事先定义了一个模型,即Model,将表单传递过来的数据封装成一个对象后,再传递给Action,这和Struts1的这种机制很相似。......
  • Struts2输入校验以及错误信息处理(2)——用Struts2定义好的校验框架进行校验
    Struts2的输入校验有两种方式:一种是用Action中定义的validate()方法进行校验,一种是用Struts2定义好的校验框架进行校验。前者里面的逻辑判断要自己写,而后者只需要传递相应的参数即可。不管是哪种方式,程序执行的流程都是一样的,执行流程如下:1、对表单传递过来的数据,先进行类型转换......
  • Struts2的自定义类型转换和简单的输入校验
    这里关键是对自定义类型的理解,它和8个基本数据类型的地位是一样的,只不过这个是你自己定义的类型。那么在Struts2中什么时候要用到数据类型转换呢?其实,我们一直在用,只是我们没有感觉到而已,Struts2对8个基本数据类型以及Date、String等常见类型,会自动的用内建的类型转换器进行转换,这个......
  • Struts2输入校验以及错误信息处理(1)——用Action中定义的validate()方法进行校验
    Struts2的输入校验有两种方式:一种是用Action中定义的validate()方法进行校验,一种是用Struts2定义好的校验框架进行校验。前者里面的逻辑判断要自己写,而后者只需要传递相应的参数即可。不管是哪种方式,程序执行的流程都是一样的,执行流程如下:1、对表单传递过来的数据,先进行类型转换2、......
  • struts2文件上传
    上传文件其实分为两个步骤:首先,将客户端传递过来的文件保存到struts.multipart.saveDir键所指定的目录下,如果没有指定,那么就保存到javax.servlet.context.tempdir环境变量所指定的目录下,然后,Action中所定义的成员变量file,实际指向的是临时目录中的临时文件,在服务器通过IO的方式,将临......
  • struts2异常处理
    Struts2中的异常处理有两种形式:一种是局部异常处理,一种是全局异常处理在struts.xml中的package下有两个这样的标签:<global-exception-mappings>和<global-results>,前者指定异常处理的类,后者是异常处理结果,通常指定一个显示异常信息的页面。而在action中,也有类似全局的异常处理,<exce......
  • GO语言中的参数传递
    在Go语言中,函数参数传递有两种方式:值传递和引用传递。值传递(PassbyValue):当将一个值作为参数传递给函数时,函数会创建该值的一个副本,并将副本传递给函数。在函数内部,对参数的修改不会影响原始值。下面是一个示例:packagemainimport"fmt"funcmodifyValue(xint){x......
  • pytest 多参数传递时的坑 参数数组格式 :[(参数1,参数2)(参数1,参数2)] ;一个参数传递时
    一个参数传递时结果:(参数1) 两个参数传递时:参数1参数2 ......
  • Struts2核心工作流程与原理
    这是Struts2官方站点提供的Struts2的整体结构。     一个请求在Struts2框架中的处理大概分为以下几个步骤:客户端提起一个(HttpServletRequest)请求,如上文在浏览器中输入”http://localhost:8080/TestMvc/add.action”就是提起一个(HttpServletRequest)请求。请求被提交......