`
langshao
  • 浏览: 7139 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

想用Spring MVC却感觉它好像还不够方便

阅读更多
想在项目中使用Spring MVC,研究了一下,感觉还是差一点点,可能是我研究得不够深入啦。

使用注解的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需要为每一个请求创建一个对象,效率差一些,却优雅一些。

        但很多系统都没有这里提到的需求,也就不用考虑这一点。没有什么需求是某项技术一定不能实现的,只是效率、性能和优雅程度等不同,这就需要做出权衡。
分享到:
评论
8 楼 pclfs1983 2010-12-02  
有其它框架的,我以前公司自己搞的一个框架就是规则大于配置,只要你把文件放入相应的文件夹就可以了,根本不要写啥requestMapping之类的东西
7 楼 dwbin 2010-12-02  
http://www.iteye.com/topic/792005
看看这个,我写的,最近忙着换工作没时间搞api和demo,但是dispatcher这个框架应用起来还是不怎么需要demo的,一看就会。
6 楼 java_jian 2010-12-02  
是可以不写的
5 楼 fhjxp 2010-12-02  
181054867 写道
深有同感,我跟你一样,只要可以不写的代码,坚决不写!
感觉Spring,Hibernate,Struct这些框架用起来都特别麻烦,一个简单的业务都要写不少的代码,又要改xml,又要在Java文件里改,改改改改,改死人才做好,烦死人!

Java程序的设计,简洁就是美,这些框架的确解决了一些问题,但带来更多的问题,真的没有提高效率,建议慎用!

ssh这些框架功能强大,同时它们要适应多种开发习惯,考虑各种扩展性、低耦合什么的,因此几乎对于任何具体的项目来说都存在不同程度的过度设计,我理解这也就是我们用这些框架感觉麻烦的根本原因。Spring,Hibernate,Struts的设计者都是大牛,不可能不懂得如何设计一个简单框架。
要解决框架使用麻烦的问题,就是需要定义我们自己的编码习惯,自己可以在这些框架基础上再做些工作,裁剪它们的用法,减少灵活性(灵活性和麻烦总是一对矛盾)。我自己也尝试做了一些这样的工作,搞自己的快速框架,做到了不再使用xml做配置文件了(有一部分是用注解代替了,但大部分配置是直接省去了),跟一年前比起来省事了很多,有时间自己在好好总结一下。
4 楼 logicgate 2010-12-02  
181054867 写道
深有同感,我跟你一样,只要可以不写的代码,坚决不写!
感觉Spring,Hibernate,Struct这些框架用起来都特别麻烦,一个简单的业务都要写不少的代码,又要改xml,又要在Java文件里改,改改改改,改死人才做好,烦死人!

Java程序的设计,简洁就是美,这些框架的确解决了一些问题,但带来更多的问题,真的没有提高效率,建议慎用!

这只能说明你选错框架了。杀鸡用宰牛刀,不是刀不好,而是人用错了。
3 楼 xieyongwei 2010-12-02  
简单的应用用框架当然觉得繁琐
等你的项目越大,就觉得框架的方便之处了
框架也是越用越熟悉的,努力去用,光看没什么切身体会的
2 楼 181054867 2010-12-02  
深有同感,我跟你一样,只要可以不写的代码,坚决不写!
感觉Spring,Hibernate,Struct这些框架用起来都特别麻烦,一个简单的业务都要写不少的代码,又要改xml,又要在Java文件里改,改改改改,改死人才做好,烦死人!

Java程序的设计,简洁就是美,这些框架的确解决了一些问题,但带来更多的问题,真的没有提高效率,建议慎用!
1 楼 do77 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来推测。

相关推荐

    精通Spring MVC 4

    Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。Spring MVC4是当前zuixin的版本,在众多特性上有了进一步的提升。, 在精通Spring...

    Spring MVC jar包

    Spring MVC 是一个基于Java的轻量级Web应用框架,它为开发者提供了模型-视图-控制器(MVC)架构,使开发人员能够更好地组织和分离应用程序的业务逻辑、数据处理和用户界面。Spring MVC是Spring框架的一个核心组件,...

    Spring MVC使用Demo

    此外,Spring MVC提供了ModelAndView类,它可以将处理结果(模型数据)和视图名组合在一起,方便返回给视图层进行渲染。`@ResponseBody`注解可以让方法的返回值直接写入HTTP响应体,常用于返回JSON或XML等格式的数据...

    最全最经典spring-mvc教程

    Spring MVC 是一款强大的Java Web开发...对于想要深入理解和使用Spring MVC的开发者来说,这是一份非常宝贵的资源。通过学习这个教程,你可以提高你的Web开发技能,更好地利用Spring MVC来构建高质量的Java Web应用。

    Spring.MVC-A.Tutorial-Spring.MVC学习指南 高清可复制版PDF

    在实际开发中,Spring MVC常常与Spring Data JPA或MyBatis等持久层框架结合使用,以方便数据库操作。此外,Spring MVC还能够与其他Spring模块(如Spring Security、Spring WebSocket等)无缝集成,提供完整的解决...

    Spring MVC + Mybatis+Spring实现的个人博客系统

    Spring MVC是Spring框架的一部分,它是一个用于构建Web应用程序的模型-视图-控制器(MVC)架构。在Spring MVC中,Controller负责处理HTTP请求,Model持有业务数据,而View则负责数据的展示。通过DispatcherServlet...

    Spring MVC 教程快速入门 深入分析

    Spring MVC是一种基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,使用了IoC容器,支持RESTful风格的应用程序开发。Spring MVC通过分离模型(Model)、视图(View)和控制器(Controller)来简化Web开发...

    Spring MVC 4.2.3

    Spring MVC是Spring框架的一个核心模块,专为构建Web应用程序而设计。它提供了模型-视图-控制器(MVC)架构,使开发者能够有效地分离业务逻辑、数据处理和用户界面。在"Spring MVC 4.2.3"版本中,我们看到了一系列的...

    spring MVC配置详解

    要想灵活运用 Spring MVC 来应对大多数的 Web 开发,就必须要掌握它的配置及原理。 一、Spring MVC 环境搭建 1. jar 包引入 在使用 Spring MVC 之前,需要引入相应的 jar 包,包括 Spring 2.5.6 和 Hibernate ...

    spring mvc框架依赖全面jar

    Spring MVC 是一个基于 Java 的轻量级Web应用框架,它为构建模型-视图-控制器(MVC)架构的应用程序提供了强大的支持。在本压缩包中包含了一系列与Spring MVC相关的jar文件,这些文件是构建和运行Spring MVC项目所...

    spring mvc 4.0

    在Spring MVC 4.0版本中,它引入了许多改进和新特性,以提升开发效率和应用程序的性能。 1. **依赖注入**:Spring MVC 4.0继续支持Spring框架的核心功能,依赖注入(DI),允许开发者通过配置来管理对象及其依赖...

    Mastering Spring MVC 4(2015.09)源码

    Spring MVC 是一个强大的Java Web开发框架,它是Spring框架的一部分,专为构建高度可扩展和模块化的Web应用程序而设计。在2015年的版本中,Spring MVC 4已经相当成熟,提供了许多特性来简化开发流程并提高开发效率。...

    spring MVC .docx

    Spring MVC 是一个基于Java的轻量级Web应用框架,它是Spring框架的重要组成部分,主要用于构建Web应用程序的后端控制器。Spring MVC的设计目标是提供一个清晰的组件化架构,使得开发者可以独立地开发和测试控制器、...

    Spring MVC所需jar包

    Spring MVC 是一个基于 Java 的轻量级 Web 开发框架,它是 Spring 框架的一个重要模块,主要用于构建 Web 应用程序的后端控制层。这个框架提供了模型-视图-控制器(MVC)设计模式的实现,简化了Java Web应用的开发...

    spring mvc

    Spring MVC 是一个基于Java的轻量级Web应用框架,它属于Spring框架的一部分,主要用于构建控制器层,实现模型-视图-控制器(Model-View-Controller)架构。在Spring MVC中,开发者可以方便地处理HTTP请求,进行数据...

    spring MVC简单示例

    Spring MVC 是一个基于Java的轻量级Web应用框架,它为构建模型-视图-控制器(Model-View-Controller)架构的应用程序提供了强有力的支持。在本示例中,我们将深入探讨Spring MVC的基本概念、配置以及如何创建一个...

    Spring mvc5.0.3 所有jar包

    11. **MVC配置**: 使用Java配置或XML配置来设置Spring MVC的行为。Spring Boot简化了这个过程,通过自动配置来减少配置文件的复杂性。 12. **WebSocket支持**: Spring MVC 5.0.3版本引入了对WebSocket的支持,可以...

    Spring mvc 教程

    Spring MVC 是一个功能强大且灵活的框架,它不仅提供了基础的 MVC 实现,还包含了大量高级特性和工具来支持现代 Web 开发的需求。无论是初学者还是有经验的开发者,都能从中受益,构建高效、健壮的 Web 应用。

Global site tag (gtag.js) - Google Analytics