Spring Web Flow 简单实现-自定义配置文件位置
来源:互联网 发布:unity3d角色动画模型 编辑:程序博客网 时间:2024/05/23 01:57
前言
在文章 Spring Web Flow 简单实现 中,我们把Web Flow 的的配置文件和 jsp 页面文件统一放置在了 WEB-INF 目录下,事实上,那种情况下我们不得不这样做。
这片文章将介绍如何将Web Flow 的配置文件和 jsp 页面分离,这样更加符合我们的开发规范了,从某种程度上来说,本文应该比上一篇要更接近开发实际。
开始
项目文件结构比较简单,先整体贴出
从项目基本构建流程上来说,应该
eclipse 搭建WEB应用的MAVEN基本结构
然后是 8、6、4、2、1、3、5
依次介绍各个文件
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.bestcxx.stu</groupId> <artifactId>springwebflow</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <name>spring web flow study</name> <description>spring web flow study</description> <properties> <!-- 设置utf-8编码,必须设置 --> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <!-- spring 4.0.0 --> <!-- 设置spring版本 --> <springframework.version>4.3.0.RELEASE</springframework.version> <!-- 设置Spring web flow 版本 --> <springwebflow.version>2.4.5.RELEASE</springwebflow.version> </properties> <build> <!-- jar包名称 --> <finalName>mvc</finalName> <plugins> <!-- 编译jdk版本设置 1.6 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.2</version> <configuration> <source>1.7</source> <target>1.7</target> <uriEncoding>${project.build.sourceEncoding}</uriEncoding> </configuration> </plugin> <!-- jetty插件 --> <plugin> <groupId>org.mortbay.jetty</groupId> <artifactId>maven-jetty-plugin</artifactId> <version>6.1.26</version> <configuration> <!-- 通过jetty访问项目时的项目名称 ${project.build.outputDirectory} 为war包名 --> <webApp> <contextPath>${project.build.outputDirectory}</contextPath> </webApp> <!-- jetty附属配置,未启用 --> <!-- <webDefaultXml>src/main/resources/webdefault.xml</webDefaultXml> --> <!-- configuration.scanIntervalSeconds 配置表示新代码的扫描时间间隔(秒),值 <= 0 表示不扫描 --> <scanIntervalSeconds>0</scanIntervalSeconds> <!-- 端口设置 --> <connectors> <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector"> <port>8085</port> </connector> </connectors> </configuration> </plugin> </plugins> </build> <dependencies> <!-- junit仅测试环境使用 --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <!-- 设置spring依赖 --> <!-- spring-mvc --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${springframework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${springframework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${springframework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>${springframework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>${springframework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> <version>${springframework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>${springframework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${springframework.version}</version> </dependency> <!-- spring web flow 2.0 --> <!--Spring Web Flow所需要的依赖--> <dependency> <groupId>org.springframework.webflow</groupId> <artifactId>spring-webflow</artifactId> <version>${springwebflow.version}</version> </dependency> <!-- servlet --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.0.1</version> <!-- tomcat的话只在编译时和测试时运行,本文jetty插件则注释掉 --> <!-- <scope>provided</scope> --> </dependency> <!-- jstl标签 --> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> <scope>runtime</scope> </dependency> <!-- apache 基础组件 --> <dependency><groupId>commons-lang</groupId><artifactId>commons-lang</artifactId><version>2.6</version></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.4</version></dependency> </dependencies> </project>
web.xml
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"><display-name>spring web flow</display-name> <!-- Spring MVC DispatcherServlet配置--> <servlet> <servlet-name>mvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- 自定义配置文件路径 --> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring/mvc-servlet.xml</param-value> </init-param> <!-- 初始化即加载 --> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>mvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list></web-app>
mvc-servlet.xml
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:util="http://www.springframework.org/schema/util" xmlns:orm="http://www.springframework.org/schema/orm" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:webflow="http://www.springframework.org/schema/webflow-config" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.3.xsd http://www.springframework.org/schema/orm http://www.springframework.org/schema/orm/spring-orm-4.3.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd http://www.springframework.org/schema/webflow-config http://www.springframework.org/schema/webflow-config/spring-webflow-config-2.0.xsd "> <!-- 配置注解驱动(自动配置注解形式的处理器映射器和处理器适配器)和转化器(conversion-service) --><mvc:annotation-driven/> <!-- 加载其他配置文件 --> <import resource="classpath:applicationContext/applicationContext-*.xml" /></beans>
接下来两个文件要统筹看,尤其是内部注解
applicationContext-flow.xml
注意看注解
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:webflow="http://www.springframework.org/schema/webflow-config" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/webflow-config http://www.springframework.org/schema/webflow-config/spring-webflow-config-2.0.xsd"> <webflow:flow-executor id="flowExecutor" /><!-- 所有 flow的定义文件它的位置在这里进行配置, flow-builder-services 用于配置 flow 的特性,这里可以自定义id的名字,将结合applicationContext-mvc.xml的配置形成Web Flow的入口访问配置 --><webflow:flow-registry id="flowRegistry" flow-builder-services="flowBuilderServices"><webflow:flow-location path="classpath:flows/shopping.xml" id="shopping" /></webflow:flow-registry><!--Web Flow 中的视图通过 MVC 框架的视图技术来呈现 --><webflow:flow-builder-services id="flowBuilderServices" view-factory-creator="mvcViewFactoryCreator" /><!-- 指明 MVC 框架的 view resolver ,用于通过 view 名查找资源 --><bean id="mvcViewFactoryCreator" class="org.springframework.webflow.mvc.builder.MvcViewFactoryCreator"><property name="viewResolvers" ref="viewResolver" /></bean></beans>
applicationContext-mvc.xml
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:webflow="http://www.springframework.org/schema/webflow-config" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/webflow-config http://www.springframework.org/schema/webflow-config/spring-webflow-config-2.0.xsd"> <bean id="viewResolver"class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="viewClass"value="org.springframework.web.servlet.view.JstlView"></property><property name="prefix" value="/WEB-INF/views/"></property><property name="suffix" value=".jsp"></property></bean><bean id="viewMappings"class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"><!-- id为 shopping 的请求由 flowController 来处理,事实上,这个请求时Web Flow的入口访问地址 --><property name="mappings"><value> /shopping=flowController </value></property><property name="defaultHandler"><!-- UrlFilenameViewController 会将 "/index" 这样的请求映射成名为 "index" 的视图 --><bean class="org.springframework.web.servlet.mvc.UrlFilenameViewController" /></property></bean><bean id="flowController" class="org.springframework.webflow.mvc.servlet.FlowController"><property name="flowExecutor" ref="flowExecutor" /></bean></beans>
shopping.xml
<?xml version="1.0" encoding="UTF-8"?><flow xmlns="http://www.springframework.org/schema/webflow" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/webflow http://www.springframework.org/schema/webflow/spring-webflow-2.0.xsd"> <view-state id="cart"> <transition on="submit" to="order"> </transition> </view-state> <view-state id="order" view="order"> <transition on="confirm" to="finish"> </transition> </view-state> <view-state id="finish" view="finish"> <transition on="toindex" to="index"> </transition> </view-state> <end-state id="index" view="externalRedirect:index.jsp"> </end-state></flow>
/views/cart.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <h2 align="center">Hello,WebFlow</h2><br/> <a href="shopping">去购物车</a></body> </html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <h2 align="center">确认支付</h2><br/> <a href="${flowExecutionUrl}&_eventId=toindex">恭喜你,支付成功..</a> </body> </html>
/views/index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <h2 align="center">Hello,WebFlow</h2><br/> 开启流程:<a href="shopping">购物车</a><br/></body> </html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <h2 align="center">订单</h2><br/> <a href="${flowExecutionUrl}&_eventId=confirm">确认支付</a> </body> </html>
webapp/index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <h2 align="center">Hello,WebFlow</h2><br/> <a href="shopping">去购物车</a></body> </html>
项目启动入口地址
http://localhost:8085/springwebflow/index.jsp
代码
https://github.com/Bestcxy/Spring-Web-Flow-Study/tree/master/complexdemo/springwebflow
阅读全文
0 0
- Spring Web Flow 简单实现-自定义配置文件位置
- Spring Web Flow 简单实现
- Spring web flow 配置文件
- 自定义spring配置文件位置
- Spring Web Flow
- Spring Web Flow
- spring web flow
- spring web flow 随记
- Spring学习 WEB FLOW
- Spring Web Flow
- Spring Web Flow实例教程
- spring web flow起步
- Spring Web Flow
- Spring Web Flow
- 《Spring Web Flow 实践》
- Spring Web Flow 简介
- spring-mvc-web.xml配置文件简单介绍
- 自定义Log4j配置文件位置
- BZOJ 2751 [HAOI2012]容易题(easy) 数学
- Jzoj4738 神在夏至祭降下了神谕(GOSICK系列)
- python中面向对象I
- [deeplearning-001] stotisticks gradient descent随机梯度下降算法的最简单例子解释
- 【二分+曼哈顿距离】51Nod 1671 货物运输
- Spring Web Flow 简单实现-自定义配置文件位置
- 博客迁址
- angularjs表格表单增删改查
- Xcode9学习笔记16
- 重走长征路|《算法竞赛入门经典》第2章 习题笔记
- Vysor Error installing Apak:pakg:/data/local/tem/apk1508661961221
- ora 12170 tns 连接超时
- angularjs添加用户
- 线性表的顺序储存(顺序表)