spring 学习2

 

  1. package com.asm;  
  2. //...省略导入的相关类
  3. public class MessageController implements Controller {  
  4. public ModelAndView handleRequest(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception {  
  5. ModelAndView mav = new ModelAndView("message");  
  6. mav.addObject("message", "您好!spring MVC");  
  7. return mav;  
  8. }  
  9. }  

解释一下:红色代表了去找目录前缀下的message.jsp页面;

下面的message我认为是在找页面上的元素,并赋值。

  1. <bean id="viewResolver"      class="org.springframework.web.servlet.view.InternalResourceViewResolver">  
  2. <property name="prefix" value="/WEB-INF/page/" />  
  3. <property name="suffix" value=".jsp" />  
  4. </bean>  
  5. <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)后端控制器进行处理,并返回视图。

spring 学习2

上一篇:Mysql 主从复制与读写分离


下一篇:继承使用要点