一、学习案例:通过在loginUI.jsp页面输入登录账号和密码判断是否正确,正确则跳转到成功页面(success.jsp),错误则返回登录页面(loginUI.jsp)。
二、案例分析:struts2值传递分为:属性驱动和模型驱动。
a)属性驱动
属性驱动就是在页面通过form表单设置name属性,在表单提交后在action中通过相同的名称属性的变量获取提交值。
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; }
a)模型驱动
模型驱动就是通过指定的对象获取表单提交的值,struts2会自动填充对象,在action中,我们可以直接通过对象获取单个属性值。
注意:使用模型驱动必须实现ModelDriven。
private User user = new User(); public User getModel() { return user; }
应用分层体系架构初始,大家也了解到分层带来的好处,首先就是逻辑清晰,还有就是协作带来的开发好处。分层开发只能上层调用下层,而下层是不可以调用上层的,同时,下层只会对上层开放接口,这也是面向接口开发带来的好处。
d)通过查看API文档大家可以发现ModelDriven使用了泛型,而在泛型中不可或缺地会使用反向代理,关于“反向代理”在此不多做解释,有兴趣地可以去单独查资料,有空时,我也会单独写篇博文讲解。
e)大家要学会思考问题,多动手。比如,模型驱动是通过匹配对象赋值,还是通过匹配属性名称赋值?我就不说答案了。大家可以动手测试。
三、经验之谈:
a) Mvc分层可以说是现在项目开发必用的,毕竟一个项目的开发是多人同时协作进行的。分层的优势和好处也是不言而喻的。当然分层的好处对于后期的维护也是很重要的。但在一些小型项目的开发,我们应该根据现实情况来定,不然过多的分层也会影响系统的开发。我的“爱尚合伙人”就抛弃了dao层的处理,毕竟自己开发的该舍也的舍,不然就是自找麻烦。
b) 对于初学者学习ssh而言,框架的庞大和繁琐是很让人头疼。我当初学习ssh的路线是:struts2---->hibernate---->spring。Ssh框架的学习对于大多人来讲都是这样的学习路线。但是这样的学习方式对于初学者来讲也是有一定负面的。比如struts2插件功能的繁琐和标签库的庞大都是很容易让初学者失去耐心的。但在学习了解了hibernate之后,框架的好处才得以体现,这时就会自然而然地让人眼前一亮,框架简单的配置就能省去servlet的繁琐而重复的开发,框架的优势也得以体现。所以框架的学习和掌握是很重要的,我们要耐得住寂寞,多读、多写,等到ssh系统学完,我们就会发现自己已经不知不觉的爱上了它。
c) 属性驱动和模型驱动的优劣:
1、属性驱动灵活,准确。模型驱动不灵活,有时候页面提交过来的参数并不属于 模型中的属性,此时我们要么使用代理对象,要么就使用属性驱动。
2、模型驱动更符合面向对象的编程风格,它可以把离散的值聚合在一起。
d) 至于在项目开发中我们要使用哪种方式,其实按情况分。在“爱尚合伙人”的开发 中,一般通用模型驱动,在模型中没有的值,我会用属性驱动单个获取,结合使用 也是很不错的。
四、参考项目:http://download.csdn.net/detail/u011638419/8186055
五、每日一乐:
男人就是这么奇怪,自己的女人,脱光了他都没反应,
别人的女人,露个乳沟,就流鼻血。
最终解释权归爱尚合伙人所有,转载请注明出处。