精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-12-01
最后修改:2010-12-24
使用注解的Controller: @Controller @RequestMapping("/user") // 使用ControllerClassNameHandlerMapping,可以不写这一行,我喜欢! public class UserController { } 当一个Controller有多个方法时,如下: @Controller public class UserController { @RequestMapping public void index(HttpServletRequest request) { } @RequestMapping("/show") // 我是个懒人!RequestMapping的参数与方法名相同,能不能不写呢? public User show(Long id) { return manager.getUser(id); } } 另外,也想用REST,但对我这样的懒人来说还是不够简便。 @Controller @RequestMapping("/user") // 去掉这一行,遇到了郁闷的400:The request sent by the client was syntactically incorrect public class UserController { @RequestMapping(method = RequestMethod.GET) public List<Person> list() { return manager.getUserList(); // 这里可以直接返回List,还是相当不错的。 } @RequestMapping(value = "/{id}", method = RequestMethod.GET) public String show(@PathVariable("id") Long id, Model model) { model.addAttribute(manager.getUser(id)); return "show"; // 能不能不返回View Name呢?直接return manager.getUser(id)多好,还可以少一个model参数 // 因为URL不能确定View Name,DefaultRequestToViewNameTranslator是搞不定的了,但其实返回的就是方法名嘛 } } 最近二天才开始研究Spring MVC,但就是找不到怎样可以写更少的代码,郁闷 -------------------------------------------------------------------------------------------------------------- 考虑到一个场景:弹出一个输入页面(新增或修改),有“保存”、“保存并关闭”、“关闭”等按钮,当用户点击“保存”时须将当前用户的输入保存到数据库,并且继续展现这条数据,以方便用户修改后再次“保存”,不确定用户何时会点“关闭”按钮(最好用JavaScript在客户端直接关闭,另外用户也可能点击浏览器的关闭)。 Struts2是类级别的拦截,实现ModelDriven接口之后,能够自动绑定用户在页面上的输入,在save方法中只需将对应的类变量保存到数据库,并且返回"input"字符串,就又回到输入页面,对应的类变量的值会重新展现在页面上,包括保存过程中自动生成的值(业务层可能生成最后修改时间等)。 Spring MVC可以在打开输入页面时将实体数据放在Session中,但却不清楚应该何时清除Session,因为不好确定用户何时关闭页面。 Spring MVC也可以在save方法中重新从数据库中取出实体数据(Struts2其实也是在ModelDriven的实现中取出来赋到类变量上),然后手工绑定用户在页面上的输入数据,然后保存回数据库,再将此实体数据返回给VIEW展现。这样Spring MVC其实和Struts2在原理上差不多,只不过Spring MVC需要手工绑定,并且从数据库中取出实体的代码需要写多次(可以归纳到一个方法中,但少不了对这个方法的显式调用);Struts2需要为每一个请求创建一个对象,效率差一些,却优雅一些。 但很多系统都没有这里提到的需求,也就不用考虑这一点。没有什么需求是某项技术一定不能实现的,只是效率、性能和优雅程度等不同,这就需要做出权衡。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-12-02
不返回View Name也可以,不过有些限制。
见org.springframework.web.servlet.DispatcherServlet: // Do we need view name translation? if (mv != null && !mv.hasView()) { mv.setViewName(getDefaultViewName(request)); } 不过,很可惜,这里他拿不到方法的名字,只能根据request来推测。 |
|
返回顶楼 | |
发表时间:2010-12-02
深有同感,我跟你一样,只要可以不写的代码,坚决不写!
感觉Spring,Hibernate,Struct这些框架用起来都特别麻烦,一个简单的业务都要写不少的代码,又要改xml,又要在Java文件里改,改改改改,改死人才做好,烦死人! Java程序的设计,简洁就是美,这些框架的确解决了一些问题,但带来更多的问题,真的没有提高效率,建议慎用! |
|
返回顶楼 | |
发表时间:2010-12-02
简单的应用用框架当然觉得繁琐
等你的项目越大,就觉得框架的方便之处了 框架也是越用越熟悉的,努力去用,光看没什么切身体会的 |
|
返回顶楼 | |
发表时间:2010-12-02
181054867 写道 深有同感,我跟你一样,只要可以不写的代码,坚决不写!
感觉Spring,Hibernate,Struct这些框架用起来都特别麻烦,一个简单的业务都要写不少的代码,又要改xml,又要在Java文件里改,改改改改,改死人才做好,烦死人! Java程序的设计,简洁就是美,这些框架的确解决了一些问题,但带来更多的问题,真的没有提高效率,建议慎用! 这只能说明你选错框架了。杀鸡用宰牛刀,不是刀不好,而是人用错了。 |
|
返回顶楼 | |
发表时间:2010-12-02
181054867 写道 深有同感,我跟你一样,只要可以不写的代码,坚决不写!
感觉Spring,Hibernate,Struct这些框架用起来都特别麻烦,一个简单的业务都要写不少的代码,又要改xml,又要在Java文件里改,改改改改,改死人才做好,烦死人! Java程序的设计,简洁就是美,这些框架的确解决了一些问题,但带来更多的问题,真的没有提高效率,建议慎用! ssh这些框架功能强大,同时它们要适应多种开发习惯,考虑各种扩展性、低耦合什么的,因此几乎对于任何具体的项目来说都存在不同程度的过度设计,我理解这也就是我们用这些框架感觉麻烦的根本原因。Spring,Hibernate,Struts的设计者都是大牛,不可能不懂得如何设计一个简单框架。 要解决框架使用麻烦的问题,就是需要定义我们自己的编码习惯,自己可以在这些框架基础上再做些工作,裁剪它们的用法,减少灵活性(灵活性和麻烦总是一对矛盾)。我自己也尝试做了一些这样的工作,搞自己的快速框架,做到了不再使用xml做配置文件了(有一部分是用注解代替了,但大部分配置是直接省去了),跟一年前比起来省事了很多,有时间自己在好好总结一下。 |
|
返回顶楼 | |
发表时间:2010-12-02
是可以不写的
|
|
返回顶楼 | |
发表时间:2010-12-02
http://www.iteye.com/topic/792005
看看这个,我写的,最近忙着换工作没时间搞api和demo,但是dispatcher这个框架应用起来还是不怎么需要demo的,一看就会。 |
|
返回顶楼 | |
发表时间:2010-12-02
有其它框架的,我以前公司自己搞的一个框架就是规则大于配置,只要你把文件放入相应的文件夹就可以了,根本不要写啥requestMapping之类的东西
|
|
返回顶楼 | |
发表时间:2010-12-02
spring3MVC这么强大的..
如果你用STS开发的话 配置什么的都不用写 STS自带得有模板 创建一个spring3MVC的maven项目 直接写代码就是了 |
|
返回顶楼 | |