Java 如何发送请求和继续响应,并发送回客户端?

Java 如何发送请求和继续响应,并发送回客户端?,java,servlets,request,response,Java,Servlets,Request,Response,客户机通过HTTP请求(通过浏览器post)调用Servlet,然后Servlet应向外部网站发送请求(get),并从网站接收响应(post)。 servlet继续响应并向客户端发送响应(post) 我的问题是如何在Servlet中发送和接收请求/响应,并将内容发送回客户端?您可以使用以下形式的请求的set属性:request.setAttribute(字符串键、对象值) 例如: public class FindPerson extends HttpServlet { // ...

客户机通过HTTP请求(通过浏览器post)调用Servlet,然后Servlet应向外部网站发送请求(get),并从网站接收响应(post)。 servlet继续响应并向客户端发送响应(post)


我的问题是如何在Servlet中发送和接收请求/响应,并将内容发送回客户端?

您可以使用以下形式的请求的set属性:
request.setAttribute(字符串键、对象值)

例如:

public class FindPerson extends HttpServlet {

    // ... doGet implementation

    @Override
    protected void doPost( HttpServletRequest request, HttpServletResponse response )
            throws ServletException, IOException {

        // data to send to the client
        String name = "John White";
        int age = 54;



        // Adding attributes to the request
        request.setAttribute( "personName", name );
        request.setAttribute( "personAge", age );

        // Sending the result to the.jsp page
        getServletContext().getRequestDispatcher( "/WEB-INF/result.jsp" ).forward( request, response );

        }
    }
}
之后,您可以使用JSTL在JSP页面上读取这些数据:

<p>Name: ${ requestScope.personName } </p>
<p>Age: ${ requestScope.personAge } </p>
名称:${requestScope.personName}

年龄:${requestScope.personAge}

其中
personName
personAge
是地图的键。您可以使用
request.setAttribute
设置它们

!!!更新

在您的情况下,您将调用其他servlet,这些servlet将执行对外部站点的请求等。所有这些(从外部站点收集数据+处理这些数据)都将被放置,而不是设置名称和年龄值的代码(参见上面的示例)。
希望有帮助

您可以首先创建URL,然后使用URLConnection对象连接并接收响应,如下面的GET请求/响应所示

URL url = new URL(urlString);
HttpURLConnection c = (HttpURLConnection)url.openConnection();  //connecting to url
c.setRequestMethod("GET");
BufferedReader in = new BufferedReader(new InputStreamReader(c.getInputStream()));  //stream to resource
String str;
while ((str = in.readLine()) != null)   //reading data
   responsestring += str+"\n";//process the response and save it in some string or so
in.close();  //closing stream
response.getWriter().write(responsestring);
更新 对于POST请求/响应,请执行以下操作

URL obj = new URL(url);
HttpsURLConnection con = (HttpsURLConnection) obj.openConnection();

con.setRequestMethod("POST");

String urlParameters = ..;

con.setDoOutput(true);
DataOutputStream wr = new DataOutputStream(con.getOutputStream());
wr.writeBytes(urlParameters);
wr.flush();
wr.close();

BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer res = new StringBuffer();

while ((inputLine = in.readLine()) != null) {
    res.append(inputLine);
}
in.close();
//process response
response.getWriter().write(res);

你是说网络服务??有外部网站,我是指像ebay这样的普通网络服务,它会以html f.E.的形式回复帖子。
URL url = new URL(urlString);
HttpURLConnection c = (HttpURLConnection)url.openConnection();  //connecting to url
c.setRequestMethod("GET");
BufferedReader in = new BufferedReader(new InputStreamReader(c.getInputStream()));  //stream to resource
String str;
while ((str = in.readLine()) != null)   //reading data
    responsestring += str+"\n";//process the response and save it in some string or so
in.close();  //closing stream
response.getWriter().write(responsestring);