servlet转发post请求给另一个servlet接受返回值处理完在传给·另一个jsp页面···

问题描述

感觉崩溃模仿别人写的··改改··好像有点问题···大体上功能是post请求给servlet,我转发给另一个servlet··解析返回值,取其中一部分,然后传给另一个jsp页面,输出ShuJuservice.javapublicclassShuJuServletextendsHttpServlet{@OverrideprotectedvoiddoPost(HttpServletRequestreq,HttpServletResponseresp)throwsServletException,IOException{//TODOAuto-generatedmethodstubreq.setCharacterEncoding("UTF-8");resp.setCharacterEncoding("UTF-8");StringrespMessage=ShuJuService.processRequest(req);req.setAttribute("result",respMessage);req.getRequestDispatcher("2.jsp").forward(req,resp);}}ShuJuservier,javapublicclassShuJuService{publicstaticStringprocessRequest(HttpServletRequestreq)throwsIOException{ServletInputStreamsis=req.getInputStream();finalintBUFFER_SIZE=8*1024;byte[]buffer=newbyte[BUFFER_SIZE];intlength=0;ByteArrayOutputStreambaos=newByteArrayOutputStream();intbLen=0;while((bLen=sis.read(buffer))>0){baos.write(buffer,0,bLen);}Stringbao=baos.toString();Stringjson=formUpload("http://121.42.43.44:80/bar/serv/pushAttachment",bao);ShuJuResultShuJuResult=newGson().fromJson(json,ShuJuResult.class);Stringresult=ShuJuResult.getResult();StringresultUrl="http://121.42.43.44:80/bar/sample/preview?aid={aid}";resultUrl=resultUrl.replace("{aid}",result);returnresultUrl;}publicstaticStringformUpload(StringurlStr,Stringreq){Stringres="";HttpURLConnectionconn=null;StringBOUNDARY="---------------------------123821742118716";//boundary就是request头和上传文件内容的分隔符try{URLurl=newURL(urlStr);conn=(HttpURLConnection)url.openConnection();conn.setConnectTimeout(5000);conn.setReadTimeout(30000);conn.setDoOutput(true);conn.setDoInput(true);conn.setUseCaches(false);conn.setRequestMethod("POST");conn.setRequestProperty("Connection","Keep-Alive");conn.setRequestProperty("User-Agent","Mozilla/5.0(Windows;U;WindowsNT6.1;zh-CN;rv:1.9.2.6)");conn.setRequestProperty("Content-Type","multipart/form-data;boundary="+BOUNDARY);OutputStreamout=newDataOutputStream(conn.getOutputStream());//textout.write(req.toString().getBytes());out.flush();out.close();//读取返回数据StringBufferstrBuf=newStringBuffer();BufferedReaderreader=newBufferedReader(newInputStreamReader(conn.getInputStream()));//BufferedReaderreader=newBufferedReader(newInputStreamReader(conn.getInputStream(),"utf-8"));Stringline=null;while((line=reader.readLine())!=null){strBuf.append(line).append("n");}res=strBuf.toString();reader.close();reader=null;}catch(Exceptione){System.out.println("发送POST请求出错。"+urlStr);e.printStackTrace();}finally{if(conn!=null){conn.disconnect();conn=null;}}returnres;}}

解决方案

解决方案二:
代码不完整。
解决方案三:
············哪块不完整······你是说没有最外面的头············
解决方案四:
好吧··完整的代码···ShuJuService.javapackageorg.wangzizhao.course.service;importjava.io.BufferedReader;importjava.io.ByteArrayOutputStream;importjava.io.DataOutputStream;importjava.io.IOException;importjava.io.InputStream;importjava.io.InputStreamReader;importjava.io.OutputStream;importjava.net.HttpURLConnection;importjava.net.URL;importjava.text.SimpleDateFormat;importjava.util.Iterator;importjava.util.Map;importjavax.servlet.ServletInputStream;importjavax.servlet.http.HttpServletRequest;importcom.google.gson.Gson;publicclassShuJuService{publicstaticStringprocessRequest(HttpServletRequestreq)throwsIOException{ServletInputStreamsis=req.getInputStream();finalintBUFFER_SIZE=8*1024;byte[]buffer=newbyte[BUFFER_SIZE];intlength=0;ByteArrayOutputStreambaos=newByteArrayOutputStream();intbLen=0;while((bLen=sis.read(buffer))>0){baos.write(buffer,0,bLen);}Stringbao=baos.toString();Stringjson=formUpload("http://121.42.43.44:80/bar/serv/pushAttachment",bao);ShuJuResultShuJuResult=newGson().fromJson(json,ShuJuResult.class);Stringresult=ShuJuResult.getResult();StringresultUrl="http://121.42.43.44:80/bar/sample/preview?aid={aid}";resultUrl=resultUrl.replace("{aid}",result);returnresultUrl;}publicstaticStringformUpload(StringurlStr,Stringreq){Stringres="";HttpURLConnectionconn=null;StringBOUNDARY="---------------------------123821742118716";//boundary就是request头和上传文件内容的分隔符try{URLurl=newURL(urlStr);conn=(HttpURLConnection)url.openConnection();conn.setConnectTimeout(5000);conn.setReadTimeout(30000);conn.setDoOutput(true);conn.setDoInput(true);conn.setUseCaches(false);conn.setRequestMethod("POST");conn.setRequestProperty("Connection","Keep-Alive");conn.setRequestProperty("User-Agent","Mozilla/5.0(Windows;U;WindowsNT6.1;zh-CN;rv:1.9.2.6)");conn.setRequestProperty("Content-Type","multipart/form-data;boundary="+BOUNDARY);OutputStreamout=newDataOutputStream(conn.getOutputStream());//textout.write(req.toString().getBytes());out.flush();out.close();//读取返回数据StringBufferstrBuf=newStringBuffer();BufferedReaderreader=newBufferedReader(newInputStreamReader(conn.getInputStream()));//BufferedReaderreader=newBufferedReader(newInputStreamReader(conn.getInputStream(),"utf-8"));Stringline=null;while((line=reader.readLine())!=null){strBuf.append(line).append("n");}res=strBuf.toString();reader.close();reader=null;}catch(Exceptione){System.out.println("发送POST请求出错。"+urlStr);e.printStackTrace();}finally{if(conn!=null){conn.disconnect();conn=null;}}returnres;}}ShuJuServlet.javapackageorg.wangzizhao.course.servlet;importjava.io.BufferedReader;importjava.io.DataInputStream;importjava.io.DataOutputStream;importjava.io.File;importjava.io.FileInputStream;importjava.io.IOException;importjava.io.InputStreamReader;importjava.io.OutputStream;importjava.io.PrintWriter;importjava.net.HttpURLConnection;importjava.net.URL;importjava.util.Iterator;importjava.util.Map;importjavax.activation.MimetypesFileTypeMap;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importorg.wangzizhao.course.service.ShuJuService;publicclassShuJuServletextendsHttpServlet{@OverrideprotectedvoiddoPost(HttpServletRequestreq,HttpServletResponseresp)throwsServletException,IOException{//TODOAuto-generatedmethodstubreq.setCharacterEncoding("UTF-8");resp.setCharacterEncoding("UTF-8");StringrespMessage=ShuJuService.processRequest(req);req.setAttribute("result",respMessage);req.getRequestDispatcher("2.jsp").forward(req,resp);}}ShuJuResult.javapackageorg.wangzizhao.course.service;publicclassShuJuResult{Stringerror;Stringresult;publicStringgetError(){returnerror;}publicvoidsetError(Stringerror){this.error=error;}publicStringgetResult(){returnresult;}publicvoidsetResult(Stringresult){this.result=result;}}接受页面<%@pagelanguage="java"import="java.util.*"pageEncoding="GB18030"%><%Stringresult=(String)request.getAttribute("result");%><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"><html><head><metahttp-equiv="pragma"content="no-cache"><metahttp-equiv="cache-control"content="no-cache"><metahttp-equiv="expires"content="0"><metahttp-equiv="keywords"content="keyword1,keyword2,keyword3"><metahttp-equiv="description"content="Thisismypage"><!--<linkrel="stylesheet"type="text/css"href="styles.css">--></head><body>文件预览链接:<%=result%><br></body></html>post请求页面<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="http://www.w3.org/1999/xhtml"><head><metahttp-equiv="Content-Type"content="text/html;charset=GBK"/><title>无标题文档</title></head><body><formrole="form"action="http://121.42.43.44:80/weixin/ShuJuServlet"method="post"enctype="multipart/form-data">文件上传:<inputtype="file"name="file">deadline<inputtype="text"name="deadline"value="2014-10-1023:00:00"><inputtype="submit"value="上传"></form></body></html>

时间: 2024-09-04 01:24:59

servlet转发post请求给另一个servlet接受返回值处理完在传给·另一个jsp页面···的相关文章

在servlet中怎么传集合显示在jsp页面

问题描述 在servlet中怎么传集合显示在jsp页面 jsp页面: <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServ

在创建带输出参数和返回值的存储过程时---犯下的一个低级错误

异常处理汇总-数据库系列  http://www.cnblogs.com/dunitian/p/4522990.html 后期会在博客首发更新:http://dnt.dkill.net/Article/Detail/313 错误如图,怎么执行都没有自己想要的效果(return掉了,还有个啥???!!!) 处理后: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 if exists(select * from sysobjects 

json-android把一个字符串变成键值对的形式

问题描述 android把一个字符串变成键值对的形式 android客户端把一个字符串变成键值对(JSON之类的)的形式,比如:{name=张三,age=20,sex=男}..实在不明白..唉..求解答.. 解决方案 String[] arrays = new String[]{"name=张三", "age=20", "sex=男"}; JSONObject element = new JSONObject(); for(int i= 0; i

vb6.0-VB6.0一个从Text拿值的问题的解释

问题描述 VB6.0一个从Text拿值的问题的解释 VB6.0一个从Text拿值的问题的解释 Dim s$ $s=Text1,请问这两行代码什么意思 解决方案 Dim s$ $s=Text1 相当于 Dim s As String s = Text1.Text '这是默认属性 解决方案二: $声明一个字符串变量,使用时要把模块前option explicit去掉

求问,我在servlet中首先转发到一个jsp页面进行输出,然后怎么才能重定向跳转到另一个jsp呢?

问题描述 求问,我在servlet中首先转发到一个jsp页面进行输出,然后怎么才能重定向跳转到另一个jsp呢? User user = (User) request.getSession().getAttribute("user"); if(user==null){ request.setAttribute("message", "请先登陆!!,3秒后自动跳转!"); request.getRequestDispatcher("/mes

如何在加载首页前连接一个servlet?

问题描述 RT<bodyonload()==fun()>这种方法专业吗?还有其他什么方法啊 解决方案 解决方案二:<body><ahref="addreddOfServlet"></a></body>解决方案三:或者使用iframe等解决方案四:你这种方法我测试了<body><ahref="indexServlet"></a>并没有先执行indexServlet这个ser

http-设置servlet网关发送请求包,解析接受以后跳转问题

问题描述 设置servlet网关发送请求包,解析接受以后跳转问题 我s2sh+servlet项目把,servlet地址配置成网关地址,支付宝服务器向我主动发起请求要传送一个xml包给我我接受之后对支付宝做出了响应,做出响应以后我想跳转到页面,可是用request跳转方式转发和response重定向都不能实现触发页面,也曾想过使用java代码来触发一个网址,来继续访问,求懂行的做过支付宝类似功能来为小弟解答一下谢了.

第四章 使用Servlet处理HTTP请求

  回顾上一章的知识: 请求网络资源HTTP会发出多个请求并得到响应 设置响应状态行关键是设置状态码 在向客户端输出内容之前要设置状态码和响应头 设置响应头让Servlet发挥最大功能 消息体可以用文本或二进制流方式发送 响应重定向把请求转发给另外一个URL,利用302状态码和Locatoin头,让浏览器处理 可以根据时间来控制响应   本章目标: HTTP请求提交的方法 获取HTTP请求行与请求头 获取表单数据 请求派发和请求范围   GET/POST提交方法: 浏览器向Web服务器发送HTT

三、第一个Servlet

servlet   3.1 Servlet基本结构 下面的代码显示了一个简单Servlet的基本结构.该Servlet处理的是GET请求,所谓的GET请求,如果你不熟悉HTTP,可以把它看成是当用户在浏览器地址栏输入URL.点击Web页面中的链接.提交没有指定METHOD的表单时浏览器所发出的请求.Servlet也可以很方便地处理POST请求.POST请求是提交那些指定了METHOD="POST"的表单时所发出的请求,具体请参见稍后几节的讨论. import java.io.*;imp