SpringMvc的自动注入与Struts2的区别

项目中难免使用到传值,从前台form表单传到后台控制层,还记得刚开始学习的时候使用的方法吗,在表单添加name,然后再后台通过request.getParament获取的方式,这当然是可以的,但是这样难免有点麻烦,毕竟要考虑表单数据的变动和后期的维护,加入真的要增加一个字段,最好的方式是通过angular.js或者Vue.js框架来维护,毕竟让现实和数据脱离可以减低页面的耦合,修改的时候也简单容易。小项目中可以在表单中直接改写name。

说到用框架,可以解决这样的麻烦,比如在前台name给个和后台model层对应的字段,可以很轻松的拿到前台的值,框架提供的自动注入减少了人工手写出错的可能性。

如果使用struts框架:假如后台有一个这样的Bean

class Student{
     private String name;
     //..getter setter
}
前台表单
<form>
<input type="text" name="student.name"/>
</form>

struts的框架action层

public myAction implements Action{
<span style="white-space:pre">	</span>private Student student;//这样就可以获取到前台的数据,还行
<span style="white-space:pre">	</span>//others<span style="white-space:pre">	</span>
}


如果使用SpringMVC框架:和struts差不多

	/*-------------------处理用户表单--------------------*/
	@RequestMapping(value="uploadtext",produces = "text/html;charset=UTF-8")
	@ResponseBody
	public String updateInf(Student student,HttpServletRequest request,Model model){
		//student直接作为形参,这样可以直接使用student,还可以免去setter,getter更方便
		return null;
	}
他们的不同点就是SpringMVC的前端form的name字段直接使用对象的属性值,比如:改成这样

<form>
<input type="text" name="name"/>
</form>


那么也许你会觉得,假如name冲突怎么办?

对这个问题是存在的,但是form表单通常不会那样写,标准的做法是后台用一个Bean来接受前台的数据,而不是使用如string这样的类型。毕竟,这也是面向对象思想的一部分体现!



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值