场景描述:
& IDE:myeclipse10
项目上线已经5个多月了,一直很稳定,昨天晚上一个界面(其他界面正常)突然返回404错误,一开始以为是url出现问题了,测试后发现发送请求后后台正常执行,
直到return SUCCESS时返回404错误。
& 开发环境:SSH2 + Easyui 1.3.6,jdk1.6& IDE:myeclipse10
& 浏览器:google
JSP页面:
<table id="contractprofile" class="easyui-datagrid" fit="true" title="" style="width:auto;height:auto"
data-options="loadMsg:'正在加载商务合同列表,请稍等 ... ',iconCls: 'icon-edit',rownumbers:true,
singleSelect: true,toolbar: '#contractprofiletools',
method: 'get', pagination:true,pageList:[20,50,100],pageSize:20,
onDblClickRow:onDblClickRow,onLoadError:onLoadError, onRowContextMenu : onRowContextMenu">
<thead>
<tr>
<th data-options="field:'erpstate',width:45,align:'center',formatter:erpStateFormater">ERP</th>
<th data-options="field:'infostate',width:45,align:'center',formatter:infoStateFormater">Info</th>
<th hidden="true" data-options="field:'auditingestate',width:45,align:'center'">Info合同状态</th>
<th data-options="field:'contractno',width:100,align:'center'">合同编号</th>
<th data-options="field:'contractname',width:150,align:'center'">项目名称</th>
<!-- <th data-options="field:'purchasecompany',width:150,align:'center'">订货单位</th> -->
<th data-options="field:'usecompany',width:150,align:'center'">使用单位</th>
<th data-options="field:'contracttype',width:100,align:'center'">合同类型</th>
<th data-options="field:'signingdate',width:90,align:'center'">签定时间</th>
<th data-options="field:'receiptdate',width:90,align:'center'">接受时间</th>
<th data-options="field:'createuser',width:70,align:'center'">录入人</th>
<th data-options="field:'createtime',width:90,align:'center'">录入时间</th>
<th data-options="field:'auditingeuser',width:70,align:'center'">审核人</th>
<th data-options="field:'auditingetime',width:90,align:'center'">审核时间</th>
</tr>
</thead>
</table>
XML配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="busincessContract" namespace="/busincessContract"
extends="json-default">
<action name="busincessContractList" method="busincessContractList"
class="com.xjec.action.busincessContract.BusincessContractAction">
<result type="json">
<param name="root">result</param>
</result>
</action>
</package>
</struts>
Java code:
private JSONObject result;
public JSONObject getResult() {
return result;
}
public void setResult(JSONObject result) {
this.result = result;
}
public String busincessContractList() throws IOException {
try {
logger.info("Into BusincessContractAction::busincessContractList() ... " + DateTools.getCurrentTime());
String contractno = request.getParameter("contractno") == null ? "" : request.getParameter("contractno").trim();
String erpstate = request.getParameter("erpstate") == null ? "" : request.getParameter("erpstate").trim();
String infostate = request.getParameter("infostate") == null ? "" : request.getParameter("infostate").trim();
String startReceiptDate = request.getParameter("startReceiptDate") == null ? "" : request.getParameter(
"startReceiptDate").trim();
String endReceiptDate = request.getParameter("endReceiptDate") == null ? "" : request.getParameter(
"endReceiptDate").trim();
String startDate = request.getParameter("startDate") == null ? "" : request.getParameter("startDate").trim();
String endDate = request.getParameter("endDate") == null ? "" : request.getParameter("endDate").trim();
Integer page = request.getParameter("page") == null ? 1 : Integer.parseInt(request.getParameter("page")
.trim());
Integer rows = request.getParameter("rows") == null ? 20 : Integer.parseInt(request.getParameter("rows")
.trim());
List<String> params = new ArrayList<String>();
params.add(contractno);
params.add(erpstate);
params.add(infostate);
params.add(startReceiptDate);
params.add(endReceiptDate);
params.add(startDate);
params.add(endDate);
List<ShowsInfoBusinessContract> resultList = bcontractService.findBusinessContract(page, rows, params);
Map<String, Object> jsonMap = new HashMap<String, Object>();// 定义map
jsonMap.put("total", bcontractService.findBusinessContractAmount(page, rows, params));// total键
// 存放总记录数
jsonMap.put("rows", resultList);// rows键 存放每页记录 list
// 格式化result一定要是JSONObject
this.result = JSONObject.fromObject(jsonMap);
} catch (Exception e) {
e.printStackTrace();
}
String resultStr = String.valueOf(result);
System.out.println(resultStr);//可以正常输出json格式的字符串
return SUCCESS;
}
<strong><span style="font-size:14px;">问题原因:</span></strong>
<span style="white-space:pre"> </span>由于后台程序返回404,所以可以肯定是因为没有找到目标资源造成,但具体是由什么原因造成的尚待查明。
<strong><span style="font-size:14px;">解决办法:</span></strong>
<span style="font-weight: bold;"><span style="font-size:14px;"><span><span style="font-size: 14px;">Java code:</span></span></span></span>
public String busincessContractList() throws IOException {
try {
logger.info("Into BusincessContractAction::busincessContractList() ... " + DateTools.getCurrentTime());
String contractno = request.getParameter("contractno") == null ? "" : request.getParameter("contractno").trim();
String erpstate = request.getParameter("erpstate") == null ? "" : request.getParameter("erpstate").trim();
String infostate = request.getParameter("infostate") == null ? "" : request.getParameter("infostate").trim();
String startDate = request.getParameter("startDate") == null ? "" : request.getParameter("startDate").trim();
String endDate = request.getParameter("endDate") == null ? "" : request.getParameter("endDate").trim();
String startReceiptDate = request.getParameter("startReceiptDate") == null ? "" : request.getParameter("startReceiptDate").trim();
String endReceiptDate = request.getParameter("endReceiptDate") == null ? "" : request.getParameter("endReceiptDate").trim();
Integer page = request.getParameter("page") == null ? 1 : Integer.parseInt(request.getParameter("page").trim());
Integer rows = request.getParameter("rows") == null ? 20 : Integer.parseInt(request.getParameter("rows").trim());
List<String> params = new ArrayList<String>();
params.add(contractno);
params.add(erpstate);
params.add(infostate);
params.add(startDate);
params.add(endDate);
params.add(startReceiptDate);
params.add(endReceiptDate);
List<ShowsInfoBusinessContract> resultList = bcontractService.findBusinessContract(page, rows, params);
Map<String, Object> jsonMap = new HashMap<String, Object>();// 定义map
jsonMap.put("total", bcontractService.findBusinessContractAmount(page, rows, params));// total键
// 存放总记录数,必须的
jsonMap.put("rows", resultList);// rows键 存放每页记录 list
this.result = JSONObject.fromObject(jsonMap);
} catch (Exception e) {
e.printStackTrace();
}
String resultStr = String.valueOf(result);
System.out.println(<span style="font-family: Arial, Helvetica, sans-serif;">resultStr</span><span style="font-family: Arial, Helvetica, sans-serif;">);</span>
<span style="color:#003333;background-color: rgb(255, 0, 0);"> outputPage(<span style="font-family: Arial, Helvetica, sans-serif;">resultStr</span><span style="font-family: Arial, Helvetica, sans-serif;">);</span>
return null;</span>
}
/**
* 将数据输出到前台页面
*
* @throws IOException
*/
public void outputPage(String resultString) throws IOException {
response.setContentType("text/html;charset=UTF-8");
String result = resultString.toString();
PrintWriter out = response.getWriter();
out.print(result);
out.flush();
out.close();
}