我尝试通过使用JMetter提交表单(提交100个数据)来测试我的保存功能。在我的函数中,首先我将数据保存到数据库。但是因为有太多的数据保存了重复,所以我试着写数据。我得到了原因,当我捕捉到JMetter提交的数据时,重复的数据就出现了。我想问,为什么提交的数据是重复的,而当我使用wireshark检查提交的请求(post)数据时,没有由JMetter发送的重复。这意味着问题在于struts。如何解决这个问题,谢谢。在动作类Duplicate Post Data Struts
功能代码形式展现
public String renderAddMaintenanceItemForm(){
maintenanceItem = new MaintenanceItemDto();
return SUCCESS;
}
JSP表单代码
<%@ taglib prefix="s" uri="/struts-tags"%>
<script type="text/javascript">
jQuery(document).ready(function() {
jQuery("#frmAddMaintenanceItem").validate({
submitHandler: function(form) {
return postForm(form, "savemaintenanceitem", "listmaintenanceitem", true);
}
});
});
</script>
<h4 class="widgettitle nomargin shadowed">Add Maintenance Item</h4>
<div class="widgetcontent bordered shadowed nopadding">
<form id="frmAddMaintenanceItem" class="stdform stdform2">
<s:hidden name="maintenanceItem.id" value="%{maintenanceItem.id}"/>
<s:if test="maintenanceItem.criteria == 'perma'">
<s:hidden name="maintenanceItem.criteria" value="%{maintenanceItem.criteria}"/>
<p>
<label>Item Name</label>
<span class="field">
<s:textfield name="maintenanceItem.name" value="%{maintenanceItem.name}" cssClass='input-xlarge required chardigit' minlength="5" maxlength="50"/>
</span>
</p>
</s:if>
<s:else>
<p>
<label>Tipe</label>
<span class="field">
<select name="maintenanceItem.criteria" class="uniformselect required">
<option>Select</option>
<option value='event' <s:if test="maintenanceItem.criteria == 'event'">selected="selected"</s:if>>
Event
</option>
<option value='time' <s:if test="maintenanceItem.criteria == 'time'">selected="selected"</s:if>>
Time
</option>
</select>
</span>
</p>
<p>
<label>Item Name</label>
<span class="field">
<s:textfield name="maintenanceItem.name" value="%{maintenanceItem.name}" cssClass='input-xlarge required chardigit' minlength="5" maxlength="50"/>
</span>
</p>
<p>
<label>Normal Treshold (KM)</label>
<span class="field"><s:textfield name="maintenanceItem.normalTreshold" value="%{maintenanceItem.normalTreshold}" cssClass="input-xxlarge required"/></span>
</p>
<p>
<label>Max Treshold (KM)</label>
<span class="field"><s:textfield name="maintenanceItem.maxTreshold" value="%{maintenanceItem.maxTreshold}" cssClass="input-xxlarge required"/></span>
</p>
</s:else>
<p>
<label>Note</label>
<span class="field"><s:textfield name="maintenanceItem.note" value="%{maintenanceItem.note}" cssClass="input-xxlarge required"/></span>
</p>
<p class="stdformbutton">
<button class="btn btn-primary">Submit </button>
<button type="reset" class="btn">Reset </button>
</p>
</form>
</div>
这个功能,以节省用户输入(在这种情况下,我只是把它写到控制台)
public String saveMaintenanceItem(){
System.out.println(maintenanceItem.getName());
/*messageDto = carService.saveMaintenanceItem(maintenanceItem);
actionStatus = messageDto.getResult();
SessionManager.serviceReturnToSession(session(), messageDto);*/
return SUCCESS;
}
当我检查时,它就像jmetter忽略窗体上的JavaScript。 Jmetter直接将数据发布到操作类。这样对吗?我仍然混淆为什么它仍然会得到重复的数据。
首先告诉我你做了什么和你的代码 – 2013-03-11 08:00:01