spring webflow 学习小结

 

         膜拜了很多大神的博客,深深滴被大神们的技术实力和文采折服了,我从中学到很多东西,也从一个啥也不懂的小菜鸟,变成了略懂的老菜鸟,就像很多人推崇的那样,快乐在于分享,更在于懂的人中分享。今天终于决定鼓起勇气自己也开笔写自己的第一篇博客,一来我觉得自己从别人的博客中受益很多,我有义务把这咱分享的精神传递下去,二来,我觉得也有必要对自己的知识结构作一个梳理与总结。所以呢,何乐而不为呢?

         刚好最近在研究学习spring的 webFlow,那么第一篇就从它开始吧。

         Spring Web Flow (SWF) 是Spring Framework的一个脱离模块。这个模块是Spring Web应用开发模块栈的一部分,Spring Web包含Spring MVC。Spring Web Flow 的目标是成为管理Web应用页面流程的最佳方案。当你的应用需要复杂的导航控制,例如向导,在一个比较大的事务过程中去指导用户经过一连串的步骤的时候,SWF将会是一个功能强大的控制器。---摘自百度百科

       从这些比较官方的介绍中,可以看出spring webflow是spring家族中的一部分,主要的作用就是处理较为复杂的流程控制。下面就先从我自己写的一个demo开始,让我们看看它给干什么,然后再详细的介绍一下各部分的作用。

       一,我建的是一个maven项目,maven项目不需要再去下载架包了,配置好pom就可以了,非常方便。

spring webflow 学习小结_第1张图片

 

二、我的pom中配置的依赖

      


			javax.servlet
			servlet-api
			2.5
		
		
			org.springframework.webflow
			spring-webflow
			2.4.4.RELEASE
		
		
			org.springframework.webflow
			spring-js-resources
			2.3.2.RELEASE
		
		
			org.springframework.webflow
			spring-binding
			2.4.4.RELEASE
		
		
		
			javax.servlet
			jstl
			1.2
			runtime
		javax.servlet
			servlet-api
			2.5
		
		
			org.springframework.webflow
			spring-webflow
			2.4.4.RELEASE
		
		
			org.springframework.webflow
			spring-js-resources
			2.3.2.RELEASE
		
		
			org.springframework.webflow
			spring-binding
			2.4.4.RELEASE
		
		
		
			javax.servlet
			jstl
			1.2
			runtime
		

 

三、配置自定义的流程文件zhengzhou.xml和webflow的配置文件webflow-config.xml

zhengzhou.xml如下:

 



    
      
	
		
		
	
	
		
		
	
	
		
		
	
	
	 


    
      
	
		
		
	
	
		
		
	
	
		
		
	
	
	 

 

 

 

个流程文件表达的意思就是,从郑州经过许昌,平顶山,到社旗(一个古色古香的小镇)然后再返回郑州这样一个流程,在这拿生活中的事件举个例子。接下来是webflow-config.xml文件:

 



	
	
	
	
		
	
	
	
	
	
		
	


	
	
	
	
		
	
	
	
	
	
		
	

 

 

 

      四、spring webflow是spring家族的一个子项目,从名字就可以看出这就是一个web项目,实际上spring webflow就是springWebMvc的一个扩展,作业一种特殊的controller被提出来,所以也要像以前配置SpringMvc一样配置webflow的MVC配置文件webmvc-config.xml,如下:

 


 
           
   
    
     
    
     
    
     
   
      
  
     
       
       /zhengzhou.do=flowController  
     
     
      
       
     
   
    
   
     
  

 
           
   
    
     
    
     
    
     
   
      
  
     
       
       /zhengzhou.do=flowController  
     
     
      
       
     
   
    
   
     
  

 

 

 

五、配置项目的主配置文件和web.xml文件

主配置文件web-applicaion-config.xml:

 



    
   
    
     
    
    


    
   
    
     
    
    

 

web.xml文件配置如下:

 



	Archetype Created Web Application
	
		springMVC
		org.springframework.web.servlet.DispatcherServlet
		
			contextConfigLocation
			
				classpath*:config/web-application-config.xml
			
		
		1
	
	
		springMVC
		/spring/*
	
	
		index.jsp
	



	Archetype Created Web Application
	
		springMVC
		org.springframework.web.servlet.DispatcherServlet
		
			contextConfigLocation
			
				classpath*:config/web-application-config.xml
			
		
		1
	
	
		springMVC
		/spring/*
	
	
		index.jsp
	

 

 

 

六、最后写三个简单的jsp页面放在根目录下

index.jsp:

从郑州出发啦

xuchang.jsp:

到许昌了

pingdingshan.jsp:

到平顶山了

sheqi.jsp:

welcome to my hometown,SHEDIAN

社旗县是河南省南阳市下辖县,位于伏牛山南麓,河南省西南部,南阳盆地东缘,紧邻南阳市卧龙区。自古有“依伏牛而襟汉水,望金盆而掬琼浆;仰天时而居地利,

富物产而畅人和”之说。

社旗历史文化灿烂辉煌。县城所在地赊店古镇古称“赊旗店”,因东汉光武帝刘秀曾在此“赊旗访将,起师反莽”而得名,是“万里茶道”的重要中转站,有“中原第一古镇”

之称。先后被评为中国历史文化名镇和全国特色景观旅游名镇。县城内七十二条古街道保存完好,构成中原最大的清代建筑群。其中,国家级文物保护单位--山陕会馆,

气势恢弘,辉煌壮丽,集中展现了中国古代建筑艺术之精华,被有关专家誉为“天下第一会馆”。1965年建县时,周恩来总理亲自更名“赊旗”为“社旗”,寓“社会主义旗帜”

之意

 

总结,通过自己的摸索,感觉配置有点多,为什么没有注解呢?

我这里用的是spring-webflow-2.4.4.RELEASE 版本,在 Spring Web Flow 2.0 中明确声明是webflow基于 Spring Web MVC 的一个扩展,本质上还是web 框架,利用它开出来的程序是一个web程序。现在主流的web框架有多种,但是spirng webflow作为spring下的一个子项目当然优先选用springMVC了,所以在web.xml中的servlet配置了org.springframework.web.servlet.DispatcherServlet来处理客户端的请求。

         这几个页面都使用了变量flowExecutionUrl ,表示 flow 执行到当前状态时的 URL 。 flowExecutionUrl 的值已经由 Spring Web Flow2.0 框架的代码进行赋值,并放入相应的 model 中供 view 访问。flowExecutionUrl 的值包含 flow 在执行过程中会为每一状态生成的唯一的 key ,因此不可用其他手段来获取。请求参数中 _eventId 的值与shoppting.xml中 transition 元素的 on 属性的值是对应的,在接收到_eventId参数后,相应transition会被执行。

客户端发送的请求,先会由 servlet 容器(Tomcat)接收, servlet容器会找到相应的应用程序(20170520-SpringWebFlow),再根据 web.xml 的配置找到出符合映射条件的 servlet 来处理。Spring Web MVC 中处理请求的 servlet 是 DispatcherServlet ,如果请求的路径满足 DispatcherServlet的映射条件,则 DispatcherServlet 会找出 Spring IoC 容器中所有的 HandlerMapping ,根据这些HandlerMapping 中匹配最好的 handler (一般情况下都是 controller ,即控制器)来处理请求。当 Controller处理完毕,一般都会返回一个 view (视图)的名字,DispatcherServlet再根据这个view的名字找到相应的视图资源返回给客户端。

弄清楚Spring Web MVC 处理请求的流程后,基本上就可以明白要整合 Spring Web MVC 与 Spring Web Flow所需要的配置了。为了让客户端的请求变成执行某个 flow 的请求,要解决以下几个问题:

1.      需要在某个 HandlerMapping 中配置负责处理 flow 请求的 handler (或 controller )--配置controller(flowController)

2.      该handler (或 controller )要负责启动指定的 flow--该controller负责启动flow(flowExecutor)

3.      flow 执行过程中以及执行完成后所涉及的视图应呈现给客户端--配置解析返回视图方式(viewResolvers)

 

所有这些配置的目的无非是两个:一是要让客户端的请求转变成flow 的执行,二是要让 flow 执行过程中、或执行结束后得到的视图能返还给客户端。

 

 

以上为自己一点一点总结,有兴趣的小伙伴可以加我微信咱们一起讨论研究哦

spring webflow 学习小结_第2张图片

你可能感兴趣的:(spring)