js传递二维数组到java后台 0人关注 讲义教程 资讯 常见问题 开发技巧
2015-04-18 12:14
483 查看
思路:前台使用jquery.ajax吧二维数组发送到java后台,Java后台能获取到一维的数组,需要将一维的数组再次进行切割,java后台使用字符串的切割类StringTokenizer将收到的一维数组按照指定的分隔符进行切割,前台发送过来的数组默认以“,”分开,所以使用逗号作为切割符号。重点是红色标记的部分。
前台代码:
<%@ page language="java" contentType="text/html; charset=gbk"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'main.jsp' starting page</title>
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
function test(){
var time1=new rray();
for(var i=0;i<10;i++)
{time1[i]=new Array();
for(var j=0;j<10;j++)
time1[i][j]=i*j+j;
}
jQuery.ajax({
type : "POST",
url : "calculate.action?data="+new Date(),
data:{ec:10,cc:10,cp:cp,ep:ep,time1:time1}, //cc是数组的行数,ec是数组的列数,cp,ep可以忽略,time1是个二维数组
dataType : "json",
success : function(data) {
var result1=data.result1;
alert(result1.length);
},
error : function(request, error, exception)
{
alert("数据获取错误: " + error + " 异常:" + exception);
}
});
}
</script>
</head>
<body onload="test()">
</body>
</html>
web.xml
<filter>
<filter-name>struts</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
jar包:
struts.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="project" extends="struts-default">
<result-types>
<result-type name="rawtext" class="RawTextResult" />
</result-types>
<action name="calculate" class="Calculate">
<result name="success">/index.jsp</result>
</action>
</package>
</struts>
java类:Calculte:
import java.util.List;
import java.util.StringTokenizer;
import javax.servlet.http.HttpServletRequest;
import com.opensymphony.xwork2.ActionSupport;
public class Calculate extends ActionSupport {
private int ec;
private int cc;
private int[] cp;
private int[] ep;
private double[][] time1;
private double changliang;
private String stringResult;
HttpServletRequest request;
public HttpServletRequest getRequest() {
return request;
}
public void setRequest(HttpServletRequest request) {
this.request = request;
}
public String getStringResult() {
return stringResult;
}
public void setStringResult(String stringResult) {
this.stringResult = stringResult;
}
public double getChangliang() {
return changliang;
}
public void setChangliang(double changliang) {
this.changliang = changliang;
}
public int getEc() {
return ec;
}
public void setEc(int ec) {
this.ec = ec;
}
public int getCc() {
return cc;
}
public void setCc(int cc) {
this.cc = cc;
}
public int[] getCp() {
return cp;
}
public void setCp(int[] cp) {
this.cp=new int[this.cc];
this.cp = cp;
}
public int[] getEp() {
return ep;
}
public void setEp(int[] ep) {
this.ep=new int[this.ec];
this.ep = ep;
}
public void setTime1(String[] time2){
this.time1=new double[cc][ec];
String[] t=new String[cc];
t=time2;
for(int i=0;i<cc;i++){
System.out.println(t[i]);
StringTokenizer st=new StringTokenizer(t[i],",");
int j=st.countTokens();
if(j==ec){
int y=0;
while(st.hasMoreElements()){
String x=st.nextToken();
System.out.println(x);
this.time1[i][y]=Double.parseDouble(x);
y++;
}
}
}
}
public String execute() throws Exception {
return "success";
}
}
前台代码:
<%@ page language="java" contentType="text/html; charset=gbk"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'main.jsp' starting page</title>
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
function test(){
var time1=new rray();
for(var i=0;i<10;i++)
{time1[i]=new Array();
for(var j=0;j<10;j++)
time1[i][j]=i*j+j;
}
jQuery.ajax({
type : "POST",
url : "calculate.action?data="+new Date(),
data:{ec:10,cc:10,cp:cp,ep:ep,time1:time1}, //cc是数组的行数,ec是数组的列数,cp,ep可以忽略,time1是个二维数组
dataType : "json",
success : function(data) {
var result1=data.result1;
alert(result1.length);
},
error : function(request, error, exception)
{
alert("数据获取错误: " + error + " 异常:" + exception);
}
});
}
</script>
</head>
<body onload="test()">
</body>
</html>
web.xml
<filter>
<filter-name>struts</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
jar包:
struts.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="project" extends="struts-default">
<result-types>
<result-type name="rawtext" class="RawTextResult" />
</result-types>
<action name="calculate" class="Calculate">
<result name="success">/index.jsp</result>
</action>
</package>
</struts>
java类:Calculte:
import java.util.List;
import java.util.StringTokenizer;
import javax.servlet.http.HttpServletRequest;
import com.opensymphony.xwork2.ActionSupport;
public class Calculate extends ActionSupport {
private int ec;
private int cc;
private int[] cp;
private int[] ep;
private double[][] time1;
private double changliang;
private String stringResult;
HttpServletRequest request;
public HttpServletRequest getRequest() {
return request;
}
public void setRequest(HttpServletRequest request) {
this.request = request;
}
public String getStringResult() {
return stringResult;
}
public void setStringResult(String stringResult) {
this.stringResult = stringResult;
}
public double getChangliang() {
return changliang;
}
public void setChangliang(double changliang) {
this.changliang = changliang;
}
public int getEc() {
return ec;
}
public void setEc(int ec) {
this.ec = ec;
}
public int getCc() {
return cc;
}
public void setCc(int cc) {
this.cc = cc;
}
public int[] getCp() {
return cp;
}
public void setCp(int[] cp) {
this.cp=new int[this.cc];
this.cp = cp;
}
public int[] getEp() {
return ep;
}
public void setEp(int[] ep) {
this.ep=new int[this.ec];
this.ep = ep;
}
public void setTime1(String[] time2){
this.time1=new double[cc][ec];
String[] t=new String[cc];
t=time2;
for(int i=0;i<cc;i++){
System.out.println(t[i]);
StringTokenizer st=new StringTokenizer(t[i],",");
int j=st.countTokens();
if(j==ec){
int y=0;
while(st.hasMoreElements()){
String x=st.nextToken();
System.out.println(x);
this.time1[i][y]=Double.parseDouble(x);
y++;
}
}
}
}
public String execute() throws Exception {
return "success";
}
}
相关文章推荐
- JAVA开发常见问题收集
- [jsp]常见问题--Java 开发中遇到的乱码问题
- Asp.NET应用thickbox.js传递参数,后台请求不到的问题
- 解决在url中传递js变量到java程序中出现乱码问题(转自http://www.blogjava.net/fine)
- Palm OS开发常见问题和技巧
- Java常见问题集锦(来自Sun中国官方站)-Java基础-Java-编程开发
- JAVA视频教程,学习JAVA常见问题分析-JAVA学习方法系列
- js 传中文,java后台乱码问题
- JAVA技巧:JAVA常见异常-asp.net关注
- Java事务开发常见问题
- Java事务开发常见问题
- WF 自定义活动开发常见问题(进入第二个流程状态,数据传递失败的解决方法)
- WM下C#程序通过webservices传递时间到Java后台的时间问题
- JS 开发过程中遇到的常见问题
- IOS开发的一些技巧和常见问题
- android 开发之旅 R.java 常见问题
- java与c/c++进行socket通信的一些问题(1)-JSP教程,Java技巧及代码
- iPhone开发教程之Core Data 常见问题的总结
- 【Android开发技巧】 UI开发常见问题
- Java开发中常见的十个问题