最近连续几个项目,都用到Spring MVC,在开发项目的过程中,有着对Spring MVC的思考,在这里就谈一谈我的思考吧。
一、为什么会学习Spring MVC?
在接触Spring MVC之前,我都是用Servlet+JSP进行编程的,记得当时在做一个网上云打印店的项目,开始时项目规模比较少,但后来发现,随着功能的增多,Servlet类也越来越多,记得当时还没有用到Servlet的注解技术,每新增一个Servlet,都要调整web.xml,这样对多人协作开发,带来了很多的不便。面对着一大堆的Servlet,有没有办法减少他们的数量呢?答案是有的,最原始的方法,当然就是把一个URL请求,通过传一个参数来做标记,如xxx?action=getAllOrder,servlet接收到action参数,再把请求分发到不同的方法。对于这样的请求分发,当时我们自己尝试实现了一下:
action = request.getParameter("action"); if(action==null) { action="myMessages"; } if("submitMessage".equals(action)) { submitMessage(request, response); }else if("myMessages".equals(action)) { myMessages(request, response); }else if("adminMessages".equals(action)) { adminMessages(request, response); }else if("userMessages".equals(action)) { userMessages(request, response); }else if("viewMessage".equals(action)) { viewMessage(request, response); }else if("allMessages".equals(action)) { allMessages(request, response); }else if("markMessage".equals(action)){ markMessage(request, response); }
通过对action参数的匹配,去调用不同的方法,这样一来,这个servlet就集合了对Message的操作的逻辑。而这个Servlet,我们也称作Message的控制器。
这样做的好处是,我们可以按照功能,对Servlet进行分类,同一个功能模块的操作,都可以放到一个Servlet类里面了。即:以前URL跟Servlet类进行映射,现在变为URL跟类里面的方法进行映射了。很显然,映射到方法上,项目的架构上没这么臃肿,Servlet类本身充当控制器的角色,其职责功能已经不再是单一功能。然而,在没用框架的情况下,要实现请求的分发,往往要用上if else或者 switch 去实现,代码上不够简洁。而在此时,我们刚好遇到了Spring MVC的诞生,它的思想,跟我们不谋而合,于是便开始了学习Spring MVC之旅。
原文:http://www.cnblogs.com/xillkey/p/5126102.html