Struts2处理流程性需求的一种解决方案

网友投稿 233 2022-11-27

Struts2处理流程性需求的一种解决方案

在应用程序设计中,经常出现如下的需求。 查看用户填写的数据,而且数据是分页填写。

看下面这个情况

用户的信息有三页,分别是Form abc。

现在的问题是,后面的逻辑该如何设计。

如果把,FormABC,三张记录的保存(在froma里点下一步,就会先保存froma的数据)与回显(在formb里点上一步,就会显示之前填写的forma)都放在一个类里面,那么系统就很容易设计了。

可问题是,保存B与显示C是两个逻辑,放到一个类里面不合适呀。

而且这个类会大,后面如果需要重构的话,这个类是个大麻烦。

那么就是第二种方案。

也就是说,ActionA里面有save与show方法,同理ActionB里面也有save与show方法。

那么这里的问题就是要涉及到action间的跳转。

我认为这个也不好。

为什么?

因为我总觉得保存a与显示b是两回事,让这两个逻辑直接耦合不好。

那么我的方案出现了

<%@ taglib prefix="s" uri="/struts-tags"%>

来取得数据,并且通过s:action标签的rd属性来获得数据,如下:


2016/3/2

我们看一个例子:

我设计的例子是3个jsp页面,Step1,2,3。

对应3个类,StepOne.java....

//Step1.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><%@ taglib prefix="s" uri="/struts-tags"%> 标题

This is step1


//Step2.jsp<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><%@ taglib prefix="s" uri="/struts-tags"%> 标题

this is step2


//Step3.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><%@ taglib prefix="s" uri="/struts-tags"%> 标题

this is step3


然后就是关键的struts配置文件了

Step2.jsp Step3.jsp success.jsp

package com.module.step;import java.util.Date;import org.springframework.context.annotation.Scope;import org.springframework.stereotype.Controller;import com.core.BaseAction;@Controller()@Scope("prototype")public class StepOne { /** * */ private static final long serialVersionUID = 4765544864968563763L; private String step1_name; public String execute() { System.out.println(step1_name); return SUCCESS; } public String show(){ step1_name="step1_name"+new Date(); System.out.println(step1_name); return SUCCESS; } public String getStep1_name() { return step1_name; } public void setStep1_name(String step1_name) { this.step1_name = step1_name; } }package com.module.step;import java.util.Date;import org.springframework.context.annotation.Scope;import org.springframework.stereotype.Controller;import com.core.BaseAction;@Controller()@Scope("prototype")public class StepTwo { /** * */ private static final long serialVersionUID = 4765544864968563763L; private String step2_name; public String execute(){ System.out.println(step2_name); return SUCCESS; } public String show(){ step2_name="step2_name"+new Date(); System.out.println(step2_name); return SUCCESS; } public String getStep2_name() { return step2_name; } public void setStep2_name(String step2_name) { this.step2_name = step2_name; } }

package com.module.step;import java.util.Date;import org.springframework.context.annotation.Scope;import org.springframework.stereotype.Controller;import com.core.BaseAction;@Controller()@Scope("prototype")public class StepThree { /** * */ private static final long serialVersionUID = 4765544864968563763L; private String step3_name; public String execute(){ System.out.println(step3_name); return SUCCESS; } public String show(){ step3_name="step3_name"+new Date(); System.out.println(step3_name); return SUCCESS; } public String getStep3_name() { return step3_name; } public void setStep3_name(String step3_name) { this.step3_name = step3_name; } }

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:CentOS下Mariadb表名大小写的问题
下一篇:基于FPGA的应用系统集成
相关文章

 发表评论

暂时没有评论,来抢沙发吧~