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

Spring-MVC 初体验(一)

2010-06-04 23:51 246 查看
Spring MVC 初体验(一) 最近开始研究spring 的mvc Web框架,首先是说明一下spring mvc中的流程. spring 中有一个非常重要的类DispatherServlet 他非常类似于Struts1 中的ActionServlet 和 Struts2中的DispatherFilter(2.0)或PrepareAndExecuteFilter(2.1.X) .其实这就是一个前端控制器(font controller) 这个Servlet在web.xml中的配置如下:

 



     经过这样的配置后,所有以.htm结尾的请求都将交与DispatherServlet处理.DispatherServlet会按照servlet的名称(此处即为springmvc)+“-servlet.xml”在WEB-INF目录下查找spring的配置文件(即在WEB-INF目录中查找"springmvc-servlet.xml")。 请求到达DispatherServlet之后,我们的前端控制器会参考一个或多个HandlerMapping(处理器映射)这样才能找到我们真正的Controller(控制器),类似于Struts中的Action。然后我们的Controller中一般是调用我们的一个或者多个业务bean对象进行业务逻辑处理。处理完成之后 会返回一个ModelAndView对象给DispatcherServlet(前端控制器)。DispatherServlet此时会根据一个ViewResolver(视图解析器)对封装了模型和视图的ModelAndView对象进行解析,找到相应的视图(页面)显示给浏览器。流程图如下:

 



 

      再让我们看看spring 配置文件中的配置如下 在这里我们配置了2个Bean 其中一个bean 是用的name属性,原因是id属性中不能有特殊字符,该bean就是我们的后控制器(Controller) 我们可以将其理解为struts中的Action。而另外一个bean 则是我们的视图解析器。规定了逻辑视图名称的前缀和后缀,这样我们就能通过返回的逻辑视图名得到一个物理视图名. 注意,这里我们没有配置HandlerMapping(处理器映射),spring 将采用默认的BeanNameUrlHandlerMapping。这样会按访问的Url路径找到我们的Controller Bean。 Controller中内容如下:



 

      通过上面的分析,我们已经看出了 ModelAndView对象中包含了一个逻辑视图名称home。那么最后将跳转的视图为 /WEB-INF/view/home.jsp 并且在这里我们大胆的猜想我们的model(即这里的greeting)也被封装在了request中一并转发,之后就能通过el表达式来访问。 上面曾经提到了DispatherServlet在读取配置文件的时候是按他的servlet-name 加上“-servlet.xml”,这样个人觉得很不舒服.其实我们可以修改的,修改后的servlet节点如下:



这里我们只是增加了初始化参数节点。这样就大功告成咯!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息