2007-04-19

spring mvc循序渐进(4)

关键字: spring

第十五步——连接视图和控制器

现在控制器定义的视图路径是全名路径,这就在控制器和视图之间建立了一种不确定的关联。比较理想的方法是视图的映射使用一个局部名称,这允许我们不修改控制器也可以定位视图。如果使用ResourceBundleViewResolver 和SimpleUrlHandlerMapping 类,你可以用一个properties文件来存放视图的映射。如果你需要简便的映射的话,在InternalResourceViewResolver对象中设置前缀和扩展名将是一件很轻松的事。我们现在就使用这种方式,让我们修改springapp-servlet.xml并且包含这个viewResolver 作为入口。我们选用可以把JSTL和消息群结合起来同时也支持国际化的JstlView 。

springapp/war/WEB-INF/springapp-servlet.xml

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.        xsi:schemaLocation="   
  5. http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">  
  6.   
  7.   
  8. <!--  - Application context definition for "springapp" DispatcherServlet.  -->  
  9.     <bean id="springappController" class="SpringappController"/>    
  10.     <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">       
  11.         <property name="mappings">         
  12.             <props>              
  13.                 <prop key="/hello.htm">springappController</prop>     
  14.             </props>         
  15.         </property>     
  16.     </bean>  
  17.   
  18.     <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">  
  19.         <property name="viewClass"><value>org.springframework.web.servlet.view.JstlView</value></property>  
  20.         <property name="prefix"><value>/WEB-INF/jsp/</value></property>  
  21.         <property name="suffix"><value>.jsp</value></property>  
  22.     </bean>  
  23.   
  24. </beans>  

 

上面添加了一个viewResolver,所以视图名称就可以移去前缀和扩展名了。

springapp/src/SpringappController.java

  1. import org.springframework.web.servlet.mvc.Controller;   
  2. import org.springframework.web.servlet.ModelAndView;   
  3. import javax.servlet.ServletException;   
  4. import javax.servlet.http.HttpServletRequest;   
  5. import javax.servlet.http.HttpServletResponse;   
  6. import java.io.IOException;   
  7. import org.apache.commons.logging.Log;   
  8. import org.apache.commons.logging.LogFactory;   
  9.   
  10. public class SpringappController implements Controller   
  11. {     
  12.     /** Logger for this class and subclasses */      
  13.     protected final Log logger = LogFactory.getLog(getClass());     
  14.   
  15.     public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response)      
  16.         throws ServletException, IOException   
  17.     {    
  18.         String now = (new java.util.Date()).toString();    
  19.         logger.info("returning hello view with " + now);   
  20.   
  21.         return new ModelAndView("hello""now", now);   
  22.     }   
  23. }   

 

运行ant,重启tomcat,程序照样能运行。

评论
发表评论

您还没有登录,请登录后发表评论

aninfeel
搜索本博客
博客分类
最近加入圈子
最新评论
评论排行榜