Java servlet发送回发响应

时间:2015-03-14 01:38:20

标签: java http servlets

我正在尝试将一些文本从服务器端发送回客户端。我已经尝试了response.setStatus,response.setHeader,但它们都不起作用。我需要一些帮助

这是我的客户:

 public static void main(String[] args) throws MalformedURLException, IOException {
    URL url = new URL("http://localhost:8080/WebServiceDesignStyles3ProjectServer/NewServlet/www");

    HttpURLConnection con = (HttpURLConnection) url.openConnection();
    url.openConnection();
    con.setRequestMethod("GET");
    con.setRequestProperty("Accept", "text/xml");
    con.setDoOutput(true);
    con.setDoInput(true);
    DataOutputStream wr = new DataOutputStream(con.getOutputStream());
    wr.writeUTF("aaa");
    wr.flush();
    wr.close();

    InputStream is = con.getInputStream();
    BufferedReader rd = new BufferedReader(new InputStreamReader(is));
    String line;
    StringBuffer response = new StringBuffer();
    while ((line = rd.readLine()) != null) {
        response.append(line);
        response.append('\r');
    }
    rd.close();
    System.out.println(response);
    System.out.println(con.getResponseCode());
    System.out.println(con.getResponseMessage());

}

}

这是我在服务器上的doGET方法:

   @Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    //processRequest(request, response);
 response.setStatus(404);
  response.setContentType("text/xml");
  PrintWriter writer=response.getWriter();
  writer.append("this is 404");
 writer.flush();






}

但是我的客户端仍打印出200和OK,这是默认的。如何将一些消息发送回客户端。

编辑:

解决了,我不应该为doGet请求机构。

感谢。

2 个答案:

答案 0 :(得分:1)

  

实际上是调用了doPost。

这可能没有线

response.setStatus(404);
response.setContentType("text/xml");
PrintWriter writer=response.getWriter();
writer.append("this is 404");

确保使用doGet()或在doPost()中实施上述内容。

答案 1 :(得分:1)

当您将doOutput设置为true时,您还将请求方法设置为POST:请参阅Javadoc。因此,您的doGet()方法未被调用。

尝试将GET与输出结合到请求中是没有意义的。 GET请求不能有请求正文。