当前位置:  技术问答>java相关

JSP能接收xmlHTTP请求吗?怎么接收?

    来源: 互联网  发布时间:2015-05-26

    本文导语:  Example The following script example creates an XMLHTTP object, and then uses the open method to synchronously open an Active Server Pages (ASP) page. The script then posts an XML document to an ASP page, which uses the load method to load the...

Example
The following script example creates an XMLHTTP object, and then uses the open method to synchronously open an Active Server Pages (ASP) page. The script then posts an XML document to an ASP page, which uses the load method to load the document.

var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP.4.0");
xmlHTTP.open("GET","http://myserver/save.asp", false);
xmlHTTP.send(xmlDoc)
The following code belongs on the server.



--------------------------------------------------------------------
以上这段是MSXML SDK里的例子,最后一句用ASP来接收xmlHTTP请求
我想问问,能用JSP来接收吗?如何接收呢并处理呢?



|
try on the client side

var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP.4.0");
xmlHTTP.open("POST","http://myserver/save.jsp", false);
xmlHTTP.setRequestHeader("Content-Type","text/xml");
xmlHTTP.send(xmlDoc.xml);

on the server, get the text input stream and load it into your dom object


|
BufferedReader in = request.getReader();
String line;
while ((line = in.readLine()) != null)
{
//....
}

|
ServletRequest Class

getInputStream
public ServletInputStream getInputStream()
                                  throws java.io.IOException
Retrieves the body of the request as binary data using a ServletInputStream. Either this method or getReader() may be called to read the body, not both.
Returns:
a ServletInputStream object containing the body of the request
Throws:
java.lang.IllegalStateException - if the getReader() method has already been called for this request
java.io.IOException - if an input or output exception occurred

|
out.println(realPath);看看是什么,是否有问题?

|
while ((line = in.readLine()) != null)
{
  out.println(line); //看看有没有东西。如果没有即没有收到XML
  fw.write(line);
}

|
Servlet中我们是这样处理的,不知Jsp怎样,不过应该大同小异
        response.setContentType( "text/xml" );

        // get the communication channel with the requesting client
        PrintWriter out = response.getWriter();

        try
        {
            ServletInputStream servletInputStream = request.getInputStream();
            int contentLength = request.getContentLength();
            byte[] b = new byte[ contentLength ];
            int once = 0;
            int total = 0;

            while ( ( total = 0 ) )
            {
                once = servletInputStream.read( b, total, contentLength );
                total += once;
            }

            if ( total > 0 )
            {
                XMLFileVisitor xmlData = new XMLFileVisitor();
                Hashtable values = xmlData.getExecCommandAttributes(
                                           new StringBufferInputStream(
                                                   new String( b, 0, total ) ),
                                           "root" );
                String command = values.get( "command" ).toString();

                // 上传文件
                if ( command.equals( "1" ) )
                {
                    String fileContent = values.get( "fileContent" ).toString();
                    byte[] c = stringToHex( fileContent );
                    String filename = SystemVar.getSerialNumberString() +
                                      values.get( "filename" ).toString();
                    File file = new File( SystemVar.getWorkflowUploadPath() +
                                          filename );
                    BufferedOutputStream out1 = new BufferedOutputStream(
                                                        new FileOutputStream(
                                                                file ) );
                    out1.write( c );
                    out1.close();

                    // 输出结果
                    out.println( SystemVar.getWorkflowDownloadPath() +
                                 filename );
                    out.close();

                    return;
                }
            }
        }
        catch ( Exception exp )
        {
            exp.printStackTrace();
        }

|
因为xmlHttp在Client端没进行Base64编码,所以上传过程中是以16进制数据的Ascii形式进行的,上传以后还需要将它转为Byte形式;如果你要优化,可以进行Base64编码。

    
 
 

您可能感兴趣的文章:

  • 谁能给我一份“接收邮件”的jsp代码?
  • 在JSP页面中要如何接收FORM表单提交的表元数组,请高手指点
  • JSP父页面传参数到子页面及接收示例
  • 救急:url为product_list.jsp?dpt_code=01+product_type=0101,怎么样能让product_list.jsp接收到的是dpt_code=01&product_type=0101呢?
  • 怎样用程序(在javabean中,不是jsp)post一个文件到网络服务器上?并接收返回的信息?
  • 有jsp~javabean的关于如何接收email的代码吗?利用他人的邮件服务器(smtp:163.com)收发邮件
  • JSP、Servlet中get请求和post请求的区别总结
  • 请问在JSP中如何得到请求的URL?
  • jsp中 ajax的get请求的中文乱码问题的解决方法
  • 在.jsp中非表单请求action的几种方式总结
  • 我是新手,有个简单的问题问问( jsp) ,高分请求帮助我入门
  • jsp判断请求来自手机示例代码
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • jsp&xmlhttp
  • JSP中清空cookie代码参考
  • 现有1.jsp、2.jsp、3.jsp三个文件,我怎么在3.jsp文件中得到1.jsp中输入的值?
  • 一个框界网爷包含上下两个网页a1.jsp和a2.jsp,怎么实现a1.jsp自身不变且提交数据到下面的a2.jsp呢?不胜感激,急..
  • 请问jsp和serlet之间怎么通讯,jsp和jsp之间呢?
  • 请问<%@include file="abc.jsp"%>与<jsp:include page="abc.jsp"/>之间的差别
  • response.sendRedirect("index.jsp") 和 <jsp:forward page="index.jsp"/>的区别?
  • 想把一个jsp转到另一个jsp页面,要穿参数,中文的(jsp变量)。谁教教我?!
  • aaa.jsp有如下链接,当单击该链接时将id值传递给bbb.jsp,怎样在bbb.jsp中引用这个id值?
  • jsp+bean还是jsp+ejb还是jsp+servlet还是asp+activex好?
  • 谁能告诉我,怎么调试jsp程序呀!我在jsp中调用java,但是Tomcat这家伙只会给我报jsp文件出错。这可怎么办呀?
  • jsp中如何获得当前jsp文件所在的目录,用request.getServletPath()得到的路径含有jsp文件名,有没有办法得到目录(不含文件名)?
  • 初学jsp,一个html调用一个jsp,这个jsp调用一个javaBean,已编译成类,最后如何部署(用j2sdkee)?
  • 我要学jsp,已经下载了j2ee1.4,需要一个支持jsp引擎的WEB服务器或jsp引擎!!(急,马上给分)
  • jsp中相对路径怎么表示?例如当前目录下的jsp目录里的文件。
  • 我已经在输出前包含了<jsp:include page="2.jsp"/>,
  • 欲学JSP,请教JSP资料,最好电子版。
  • jsp中文乱码 jsp mysql 乱码的解决方法
  • jsp+JavaBean vs jsp+Servlet+JavaBean
  • JSP/html 编辑器 Bravo JSP editor
  • JSP开发入门(五)--JSP其他相关资源
  • <jsp:include page="SystemLeft.jsp?TypeId=<%= itTypeId.toString() %>" flush="true" />


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3