《java从入门到放弃》入门篇:struts2的基本数据传递方式

     2022-03-20     146

关键词:

把这个和JSP的数据传递方式对比一下,你就会发现·······真的可以少写两句代码!!!


struts2中常用的两种数据传递方式如下:

  1. 属性匹配方式

  2. ModelDriven接口匹配方式(常用于自定义类型)

个人比较喜欢使用第一种,为什么呢?因为············懒~~~~~。


接下来,有请代码君登场!!!技术分享

一、属性匹配方式

    属性匹配又分为两种情况,一种是Java基本数据类型,一种是自定义类型,请Look下面的Code。

    1.1)自定义一个Singer类,包含3个属性(singerID,singerName,area),代码如下

public class Singer {
	private int singerID;		//歌手ID
	private String singerName;	//歌手姓名
	private String area;		//所属地区
	public int getSingerID() {
		return singerID;
	}
	public void setSingerID(int singerID) {
		this.singerID = singerID;
	}
	public String getSingerName() {
		return singerName;
	}
	public void setSingerName(String singerName) {
		this.singerName = singerName;
	}
	public String getArea() {
		return area;
	}
	public void setArea(String area) {
		this.area = area;
	}
}

    1.2)在前面定义的Action类中添加两个属性(msg和singer),并修改add方法

public class Hello extends ActionSupport {
	private String msg;       //基本类型
	private Singer singer;    //自定义类型
	
	public String getMsg() {
		return msg;
	}
	public void setMsg(String msg) {
		this.msg = msg;
	}
	public Singer getSinger() {
		return singer;
	}
	public void setSinger(Singer singer) {
		this.singer = singer;
	}

	// 默认调用
	@Override
	public String execute() throws Exception {
		System.out.println("默认调用的方法!");
		return SUCCESS;
	}
	// 添加
	public String add() {
		System.out.println("调用了添加的方法!");
		System.out.println("编号:"+singer.getSingerID());
		System.out.println("姓名:"+singer.getSingerName());
		System.out.println("地区:"+singer.getArea());
		System.out.println("留言:"+msg);
		
		return "add";
	}
}

    1.3)编写添加歌手的JSP页面(前面的singer_add.jsp),注意看代码中表单元素的name属性中基本类型和自定义类型的区别(singer就是上面Action中的singer属性)

    <body>
  	<!-- 提交给前面配置的通配符方式的Action -->
  	<form action="smng_add.action" method="post">
  		编号:<input type="text" name="singer.singerID" value="9527" /><br />
  		姓名:<input type="text" name="singer.singerName" value="小马哥" /><br />
  		地区:<select name="singer.area">
  			<option>大陆</option>
  			<option selected="selected">香港</option>
  			<option>台湾</option>
  			</select><br />
  		留言:<input type="text" name="msg" value="好酷啊!" /><br />
  		<input type="submit" value="提交" />
  	</form>
    </body>

    1.4)因为该JSP页面放在WEB-INF下面,不能直接访问,所以再在struts.xml中配置一个访问Action

<action name="singeradd" class="">
    <result>/WEB-INF/jsp/singer_add.jsp</result>
</action>

    1.5)接下来就可以访问http://localhost:8080/strDemo/singeradd.action点击提交看效果了, 是不是很简单!!!技术分享

技术分享



二、ModelDriven接口方式

    这种方式与属性方式最大的区别就是自定义类型不用封装,而是通过实现该接口来进行自动赋值,请看下面代码。(主要是Action类不一样,另外JSP页面的name属性也不需要加对象名了)

    2.1)修改Action类

public class Hello extends ActionSupport implements ModelDriven<Singer> {
	
	private String msg;
	
	//不用封装get和set,但必须实例化,否则报空指针异常
	private Singer singer = new Singer();	
	
	public String getMsg() {
		return msg;
	}

	public void setMsg(String msg) {
		this.msg = msg;
	}

	// 默认调用
	@Override
	public String execute() throws Exception {
		System.out.println("默认调用的方法!");
		return SUCCESS;
	}
	// 添加
	public String add() {
		System.out.println("调用了添加的方法!");
		System.out.println("编号:"+singer.getSingerID());
		System.out.println("姓名:"+singer.getSingerName());
		System.out.println("地区:"+singer.getArea());
		System.out.println("留言:"+msg);
		
		return "add";
	}
	//下面是实现接口后的新增代码
	@Override
	public Singer getModel() {
		// TODO Auto-generated method stub
		return singer;
	}
	public void setModel(Singer singer){
		this.singer = singer;
	}
	
}

    2.2)修改JSP页面(注意与前面的JSP页面对比表单元素的name值,这儿直接写singer对象的属性名)

    <body>
  	<!-- 提交给前面配置的通配符方式的Action -->
  	<form action="smng_add.action" method="post">
  		编号:<input type="text" name="singerID" value="9527" /><br />
  		姓名:<input type="text" name="singerName" value="小马哥" /><br />
  		地区:<select name="area">
  			<option>大陆</option>
  			<option selected="selected">香港</option>
  			<option>台湾</option>
  			</select><br />
  		留言:<input type="text" name="msg" value="好酷啊!" /><br />
  		<input type="submit" value="提交" />
  	</form>
    </body>

OK,最终的效果是一模一样,今天的内容就到这儿,感谢各位看官。

这些入门级的东西,应该还没有出现要放弃的客官吧,如果还看得过眼,请点个赞技术分享


本文出自 “软件思维” 博客,请务必保留此出处http://softi.blog.51cto.com/13093971/1951466

《java从入门到放弃》入门篇:struts2的基本访问方式

Struts2是个什么玩意呢?引用百度百科的介绍:Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。介绍完毕···其核心原理图网上... 查看详情

《java从入门到放弃》入门篇:struts2的基本数据传递方式

...下,你就会发现·······真的可以少写两句代码!!!struts2中常用的两种数据传递方式如下:属性匹配方式ModelDriven接口匹配方式(常用于自定义类型)个人比较喜欢使用第一种,为什么呢?因为············懒~~~~~。接下来... 查看详情

《java从入门到放弃》入门篇:struts2的常用验证方式

....width=650;"src="https://img.baidu.com/hi/jx2/j_0036.gif"alt="j_0036.gif"/>struts2的验证方式主要有四种方式:一、直接在功能方法中写验证代码(不要扔鸡蛋,这种办法确实算一种 查看详情

《java从入门到放弃》入门篇:struts2的常用验证方式

前一回,我们讲完了“直接在功能方法中写验证代码”这种验证方式,接下来,我们继续搞定后续的三种方式。二、重写validate方法(注意这个方法会验证该类中所有的方法)    使用重写验证方法的好处就是,又... 查看详情

《java从入门到放弃》入门篇:struts2的常用基本标签

说起Struts2中的标签,这真是个好东西,为什么呢?因为··························就算你会这玩意,别人也可能会说,这玩意居然还有人学,用JSTL和EL表达式不就行了么!还有一种情况。如果你不会,你可以理直气... 查看详情

《java从入门到放弃》入门篇:struts2的拦截器基本语法

拦截器,顾名思义,是拦截不是打劫!!!(图片来自于网络,如果有版权或道德问题,请通知本博主删除,谢谢)是贼个样子滴650)this.width=650;"src="https://s5.51cto.com/wyfs02/M00/9D/6C/wKioL1l__fKiIMqHAAKhGk9OcQ8075.png"title="14.png"width="230"height... 查看详情

《java从入门到放弃》入门篇:变量

变量是什么玩意呢?变量,顾名思义就是能变化的量--  好吧,举个栗子。图片上的各种餐具,就是变量,因为同一个盘子可以在不同的时间装不同的菜,在这一桌可以装土豆肉丝,在下一桌可以装清炒黄瓜(当然,这个盘... 查看详情

《java从入门到放弃》javase入门篇:集合

今天来讲讲Java中的集合和常见集合类型的使用。什么是集合呢?刚好最近学校里面军训,只听到教官一声喊:“集合!!!”各位小萌新们就屁颠屁颠的跑过来排列整齐了,这就是集合···650)this.width=650;"src="https://img.baidu.com/hi/... 查看详情

《java从入门到放弃》javase入门篇:单元测试

单元测试其实没什么好说的,直接看操作步骤!我们来测试前一篇的小明买食物的方法。第一步:在小明类上点右键,然后再new一个JUnitTestCase650)this.width=650;"src="https://s3.51cto.com/wyfs02/M02/A5/8D/wKioL1m_iAygNbgSAABZDwejGG4076.png"title="11.png"w... 查看详情

《java从入门到放弃》javase入门篇:面向对象语法一(入门版)

前一次简单说明了一下面向对象编程的概念,今天我们就把这些概念通过Java语法来实现,然后看看效果。来看第一个案例:定义女神类,再根据女神类创建三个女神对象,并使用女神对象的属性和方法。第一步:定义女神类(... 查看详情

《java从入门到放弃》入门篇:hibernate查询——hql

不知不觉又到了hibernate的最后一篇了,只感觉时光飞逝~,岁月如梭~!转眼之间,我们就···························,好吧,想装个X,结果装不下去了,还是直接开始吧·650)this.width=650;"src="https://img.baidu.com/hi/jx2/j_00... 查看详情

《java从入门到放弃》入门篇:xmlhttprequest的基本用法

不闲扯,直接开讲。使用XMLHttpRequest对象,主要分为以下七个步骤:创建对象设置过期时间设置数据格式初始化HTTP请求设置HTTP头请求回传数据的处理发送HTTP请求对应代码如下所示<script type="text/javascript">   &nbs... 查看详情

《java从入门到放弃》javase入门篇:网络编程(入门版)

要进行网络编程,首先要搞清楚目的是什么。网络编程说简单点就是在网络上的计算机进行数据的交互。650)this.width=650;"src="https://s4.51cto.com/wyfs02/M00/07/18/wKiom1nDU8jBR29DAADRe0E88II285.png"title="11.png"width="600"height="328"border="0"hspace="0 查看详情

《java从入门到放弃》javase入门篇:面向对象语法二(入门版)

想了半天,发现单独的封装和多态没什么好讲的,我们就简单说说Java里面对应的语法吧。相关内容如下:一、访问修饰符二、getter/setter方法三、构造方法四、super和this五、static关键字六、final关键字七、方法重写八、抽象类和... 查看详情

《java从入门到放弃》javase篇:数组

数组,就是一组数!!!之前我们学习的变量只能保存一个数据,如果一个部门有50个员工的姓名要保存,怎么办?如果定义50个变量··················Stringname1;Stringname2;............Stringname49;Stringname50;,这画面太美,我不... 查看详情

《java从入门到放弃》入门篇:运算符

运算符分为运算和符。运算:是一种行为,通过已知量的可能的组合,获得新的量。 符:上古时期,符是沟通人和神的秘密图案,所以符是不可以随便乱画的,故有所谓“画符不知窍,反惹鬼神笑;画符若知窍,惊得鬼神叫”... 查看详情

《java从入门到放弃》入门篇:运算符

运算符分为运算和符。运算:是一种行为,通过已知量的可能的组合,获得新的量。 符:上古时期,符是沟通人和神的秘密图案,所以符是不可以随便乱画的,故有所谓“画符不知窍,反惹鬼神笑;画符若知窍,惊得鬼神叫”... 查看详情

《java从入门到放弃》入门篇:hibernate基本配置

hibernate是个什么玩意呢?简单点说,就是别人写好的一套访问数据库的东东,底层其实就是JDBC。使用JDBC就像以前没有电饭煲,我们要自己根据经验,多少人煮多少米,放多少水,用多大的火,煮多长时间,整个过程都需要自己... 查看详情