您的位置:首页 > 编程语言 > Java开发

SpringMvc的自动注入与Struts2的区别

2016-04-19 12:12 246 查看
项目中难免使用到传值,从前台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这样的类型。毕竟,这也是面向对象思想的一部分体现!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息