Java 如何发送请求和继续响应,并发送回客户端?
客户机通过HTTP请求(通过浏览器post)调用Servlet,然后Servlet应向外部网站发送请求(get),并从网站接收响应(post)。 servlet继续响应并向客户端发送响应(post)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 { // ...
我的问题是如何在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);