- package com.asm;
- //...省略导入的相关类
- public class MessageController implements Controller {
- public ModelAndView handleRequest(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception {
- ModelAndView mav = new ModelAndView("message");
- mav.addObject("message", "您好!spring MVC");
- return mav;
- }
- }
解释一下:红色代表了去找目录前缀下的message.jsp页面;
下面的message我认为是在找页面上的元素,并赋值。
- <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
- <property name="prefix" value="/WEB-INF/page/" />
- <property name="suffix" value=".jsp" />
- </bean>
- <bean name="/message.do" class="com.asm.MessageController"></bean>
message.jsp
<body>
Message:${message}
</body>
红色标签。
启动服务器,输入…/message.do访问测试。
逻辑:
message.do--->com.asm.MessageController-->message.jsp(ModelAndView mav = new ModelAndView("message");)
(1)启动服务器后,当我们向服务器发送message.do请求时,首先被在web.xml中配置的前端控制器DispatcherServlet拦截到。
(2)前端控制器把此请求转交给后端控制器,下面分析转交过程:当在spmvc-servlet.xml中查找能执行message.do请求的映射处理器时,发现没有能处理此请求的映射处理器,这时便使用默认的映射处理器BeanNameUrlHandlerMapping.我们还需注意:这种后端控制器的bean Name必须以“/”开头,并且要结合DispatcherServlet的映射配置。同时beanName支持通配符配置。比如如果配置:<bean name="/m*.do" class="com.asm.MessageController" /> 时,当访问messasge.do时也可以成功访问到MessageController类。
(3)BeanNameUrlHandlerMapping处理器,会查找在spring容器中是否在名为“message.do”的bean实例。当查找到此实例后,则把此bean作为处理此请求的后端控制器。同时把自身加到映射处理器链上,并向处理器链传递此请求。
(4)后端控制器进行处理,并返回视图。