不明白。你在说什么。
xml,http,xml,jsp没有直接的联系呀。
xml,http,xml,jsp没有直接的联系呀。
解决方案 »
- jstl的一个简单问题?
- org.apache.jasper.JasperException: /change_query.jsp(1,1) Unterminated <%@ page tag
- Java工程学习交流
- 拜求一篇详尽的网站开发文档
- 老问题,多文件上传和文件下载,用户量会很大,用什么来实现比较好?smartupload,formfile还是commons-upload组件,大家讨论一下!!!!!!!!!!!!!
- 用java怎么实现数据分页
- c3p0 连接数据库问题
- 如果让url自动的转
- 怎样在Servlet里不用jdbc-odbc连接Mysql?
- 框架中如何加入别的页面?
- 菜鸟请教高人:如何把表单的元素值传给已经定义好的类的属性?(在线等)
- 一个FORM表中,有多个SUBMIT,如何区分是点的哪个按钮?
1.如果是通过在url中,如http://community.csdn.net/Expert/topic/3345/3345470.xml?temp=.5123712,则在jsp中直接用request.getParameter("temp")就可以取到参数
2.如果你给jsp传过来的是一个xml dom,则需在jsp中把他还原为一个dom,可利用jdom来实现。首先从request中取得参数流BufferedReader Stream = request.getReader();然后把这个流一行行的解析成字符串,然后把这个字符串解析成一个jdom的Document对象,以后的操作就简单了。
3.你可以到网上查一些相关资料。
HttpUpload = False
XMLhttp.Open "POST", "http://xxx/aa.jsp", False
XMLhttp.send XMLDoc那么我这个aa.jsp该如何写?
上传后,request.getInputStream()得到的是二进制流?还是什么东西?然后怎样转化成文件?并保存?
int iTotalByte,iTotalRead,iReadByte;
iTotalByte=request.getContentLength();
iTotalRead=0;
iReadByte=0;
byte[] Buffer=new byte[iTotalByte];
if(iTotalByte>0)
{
for(;iTotalRead<iTotalByte;iTotalRead+=iReadByte)
{
try
{
iReadByte=request.getInputStream().read(Buffer,iTotalRead,iTotalByte-iTotalRead);
}
catch(Exception e)
{
e.printStackTrace();
}
}
String strContentType=request.getContentType();
//数据处理开始
String strBuffer=new String(Buffer);
%><!--<br>表单数据:<br>strBuffer<br>--><%
String strBoundary="--"+strContentType.substring(strContentType.lastIndexOf("=")+1,strContentType.length());
String strArray[]=strBuffer.split(strBoundary); String strSubString;
int iBegin,iEnd;
iBegin=0;iEnd=0;
String strFieldName="";
String strFieldValue="";
String strFilePath="";
String strFileName="";
String strFileType="";
boolean bTrue;
bTrue=false;
int iLocation=0;
for(int iIndex=1;iIndex<strArray.length-1;iIndex++)
{
strSubString=strArray[iIndex];
iBegin=strSubString.indexOf("name=\"",0);
if(iBegin!=-1)
{
strFieldName="";strFieldValue="";
strFilePath="";strFileName="";strFileType="";
iEnd=strSubString.indexOf("\"",iBegin+6);
strFieldName=strSubString.substring(iBegin+6,iEnd);
iBegin=strSubString.indexOf("filename=\"",0); if(iBegin!=-1)
{
bTrue=true;
}
iEnd=strSubString.indexOf("\r\n\r\n",0);
if(bTrue==true)
{
//文件路径
strFilePath=strSubString.substring(iBegin+10,strSubString.indexOf("\"",iBegin+10));strFileName=strFilePath.substring(strFilePath.lastIndexOf("\\")+1);
strFileType=strSubString.substring(strSubString.indexOf("Content-Type: ")+14,strSubString.indexOf("\r\n\r\n"));
%><!--<br>文件类型:<br>strFileType<br>--><%
//文件数据
iBegin=strSubString.indexOf("\r\n\r\n",iBegin);
strFieldValue=strSubString.substring(iBegin+4);
strFieldValue=strFieldValue.substring(0,strFieldValue.lastIndexOf("\n")-1);
%><!--<br>文件路径:<br>strFilePath<br>文件名称:<br>strFileName<br>--><%
byte[] pFile=strFieldValue.getBytes();
byte[] pFileExtend=new byte[pFile.length];
iLocation=strBuffer.indexOf("filename=\"",iLocation);
for(int kIndex=iLocation;kIndex<iTotalByte-2;kIndex++)
{
if(Buffer[kIndex]==13&&Buffer[kIndex+2]==13)
{iLocation=kIndex+4;break;}
}
for(int nIndex=0;nIndex<pFile.length;nIndex++)
{
pFileExtend[nIndex]=Buffer[iLocation+nIndex];
}
/*
//保存到Local Disk;
FileOutputStream pFileOutputStream=new FileOutputStream("F:\\Site_App\\UploadFile\\"+strFileName);
pFileOutputStream.write(pFileExtend);
pFileOutputStream.close();
*/
session.putValue(strFieldName+"_FileType",strFileType);
session.putValue(strFieldName+"_FilePath",strFilePath);
session.putValue(strFieldName+"_FileName",strFileName);
session.putValue(strFieldName,pFileExtend);
}
else
{
strFieldValue=strSubString.substring(iEnd+4);
strFieldValue=strFieldValue.substring(0,strFieldValue.lastIndexOf("\n")-1);
session.putValue(strFieldName,strFieldValue);
}
bTrue=false;
}
%><!--<br>表单域名:<br>strFieldName<br>表单域值:<br>strFieldValue<br>--><%
}
//数据处理结束
}
%>这样(String)session.getValue("表单域名")返回表单域值,而(byte[])session.getValue("File上传控件域名")返回的字节数组就可以用new ByteArrayInputStream(byte[])调用updateBinaryStream来更新到数据库了
String sline = " ";
String S = "";
do
{
if(sline == null)
break;
sline = Stream.readLine();
if(sline != null)
S = String.valueOf(String.valueOf(String.valueOf(S))) + String.valueOf(String.valueOf(String.valueOf(sline)));
} while(true);
String xml = new String(S.getBytes("ISO-8859-1"), "GB2312");
InputSource insrc = new InputSource(rSource);
insrc.setEncoding("gb2312");
Parser.parse(new InputSource(rSource));
Document doc = Parser.getDocument();
XMLhttp.Open "POST", "http://xxx/aa.jsp", False
XMLhttp.send XMLDoc
==========================================
以上你写的程序应该这样写
HttpUpload = False
XMLhttp.Open "POST", "http://xxx/aa.jsp?Para='"+param+"'", False
XMLhttp.send XMLDoc
在aa.jsp中,你可以用
request.getParameter("Para")来获得你传递的param参数值,然后你想拿这个(些)参数做什么就是你自己的事了.
就是他要来个循环Stream.readLine();, 这个是没必要的,可以避免的。
我的代码://前面你要先 import "java.io.InputStream" InputStream IStream = (InputStream)request.getInputStream();
int CLength = request.getContentLength();
byte[] b=new byte[CLength];
int iRead = IStream.read(b, 0, CLength);
String xml = new String(b);
out.println(xml);//字符串xml就是发送来的全部xml内容了。
再改进一下:
把上面
int CLength = request.getContentLength();
改为
int CLength = IStream.available();