spring-MVC框架的一点认识

DispatchServlet 是一个Servlet 对所有匹配的url进行处理
对它进行配置的xml文件默认是 {servlet-name}-servlet.xml
这个文件中配置了spring的MVC框架。
DispatchServlet 接受到请求之后
通过URL找到适合的处理器映射,使用处理器映射SimpleUrlHandlerMapping或者BeanNameUrlHandlerMapping
一个基本的HandlerMapping所提供的功能是将请求传递到HandlerExecutionChain上,首先HandlerExecutionChain包含一个符合输入请求的处理器。其次(但是可选的)是一个可以拦截请求的拦截器列表。当收到请求,DispatcherServlet将请求交给处理器映射,让它检查请求并获得一个正确的HandlerExecutionChain。然后,执行定义在执行链中的处理器和拦截器(如果有拦截器的话)

Controller 的操作流程
对表单来说,spring标签让你把表单数据绑定到指定的对象上,该对象要自己来定义,但它不需要实现任何接口,然后在Controller 中从该对象中提取用户数据,在这之前可以先对表单数据进行验证,然后执行业务逻辑的方法,执行完之后,返回一个返回一个ModelAndView对象例如:
ModelAndView("Cart", "cart", cart);
其中"Cart"为视图对象
由resolver 处理逻辑名找到对应真正的资源(jsp文件)
后面两个的实际操作是把它们放到一个map对象中,
name:"cart" value:cart


BeanNameUrlHandlerMapping
它将收到的HTTP请求映射到在web应用上下文中定义的bean的名字上
SimpleUrlHandlerMapping
需要提供映射的url,和对应的controller
支持正则表达式的url


拦截器的概念:
处理器映射提供了拦截器概念,当你想要为所有请求提供某种功能时,例如做某种检查,这就非常有用。

处理器映射中的拦截器必须实现org.springframework.web.servlet包中的HandlerInterceptor接口。这个接口定义了三个方法,一个在处理器执行前被调用,一个在处理器执行后被调用,另一个在整个请求处理完后调用。这三个方法提供你足够的灵活度做任何处理前和处理后的操作。

preHandle方法有一个boolean返回值。使用这个值,你可以调整执行链的行为。当返回true时,处理器执行链将继续执行,当返回false时,DispatcherServlet认为拦截器本身将处理请求(比如显示正确的视图),而不继续执行执行链中的其它拦截器和处理器。

简单的示例:webminimal
网址:http://www.jactiongroup.net/reference/html/mvc.html#mvc-handlermapping
阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭