从客户端调用servlet

时间:2011-09-05 07:22:59

标签: java servlets

我一直在阅读servlet,所有书籍都涉及通过表单(POST请求)调用servlet。 我想知道是否有其他方法可以由客户端调用servlet。

以下是我的理解:对于对servlet的POST请求,我们使用一个链接,因此在该servlet上发出GET请求,在servlet中我们需要从doGet()调用doPost()。

7 个答案:

答案 0 :(得分:2)

  

对于对servlet的POST请求,我们使用链接进行GET   请求该servlet

这没有意义,也是不正确的。

客户端提出GETPOST请求。在html表单中,您可以指定method属性中的哪个,以及使用ajax / javascript时还指定哪个。

是的,在servlet中指定了doGet和doPost。惯例是使用POST将数据发送(发布)到服务器,而get用于返回数据;但是这不会 强制执行。

答案 1 :(得分:1)

您可以编写一个创建GETPOST HTTP消息的客户端并调用servlet。但是,您可以使用Apache Commons HTTP Client来执行此操作。

此外,根据您的问题,您似乎很难通过GET请求所有 Servlet处理POST请求。那是不对的。在您查看的servlet中完成它的原因是因为servlet对GETPOST请求执行相同的操作。因此,为了最大限度地减少重复代码的数量,就这样写了。

更新:似乎Apache Commons HTTP Client现已结束,不再被开发。它已被Apache HttpComponentsHttpClient模块中的HttpCore项目取代,后者提供了更好的性能和更大的灵活性。

UPDATE2:我把你原来的问题称为“我们如何调用除浏览器以外的servlet”。好吧,浏览器只是一个客户端,可以高效,轻松地让我们向服务器发出GETPOST个请求[在我们的例子中为Servlet]。我们还可以编写Java proram来向GET请求POSTServlet,但这将是繁琐而繁琐的。因此,我们可以使用上面指定的库来做到这一点。这些库不仅限于客户端Java prorams,可以在任何可以调用Java代码[包括JSP]的应用程序中使用。

答案 2 :(得分:0)

您可以使用java.net.UrlConnectionjava.net.URL

请求servlet

答案 3 :(得分:0)

查看servlet api(http://download.oracle.com/javaee/1.2.1/api/javax/servlet/http/HttpServlet.html)。

支持四种方法(GET,POST,PUT,DELETE)。理论上你可以使用客户端的任何一个。

但实际上,您的客户端通常是浏览器或Web服务使用者。实际上,经常只使用GET和POST。

答案 4 :(得分:0)

我使用Apache的HttpClient库。真的很容易使用和定制。
这里有一些代码供您开始使用:

HttpClient httpclient = new DefaultHttpClient();
httpclient.getParams().setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);
HttpPost request = new HttpPost("YourServletURL");
List<NameValuePair> postParameters = new ArrayList<NameValuePair>();
// Set your parameters here...
UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(postParameters);
request.setEntity(formEntity);
HttpResponse response = httpclient.execute(request);
HttpEntity resEntity = response.getEntity();
if (resEntity != null)
    // Here you can read the response
    EntityUtils.consume(resEntity);
httpclient.getConnectionManager().shutdown();

答案 5 :(得分:0)

你有8个http 1.1方法:GET,POST,HEAD,TRACE,OPTIONS,PUT,DELETE和CONNECT。 servlet api只实现其中的7个及其对应的匹配doXXXX():doGet(),doPost(),doOptions(),doHead(),doTrace(),doPut(),doDelete()。但对于大多数servlet开发,您将使用doGet()(对于简单请求)或doPost()(以接受和处理表单数据)。

  

以下是我的理解:对于对servlet的POST请求,我们使用一个链接,从而在该servlet上发出GET请求,在servlet中我们需要从doGet()调用doPost()

我不明白这一部分,但我认为你错了。 service()方法根据HTTP方法(例如GET,POST)确定要调用的servlet方法。如果客户端发送了HTTP GET请求,则service()方法将调用doGet()方法,并将请求和响应对象作为参数传递。为方便起见,一些IDE设置servlet,因此它们的doPost()方法调用doGet(),因为它们旨在以相同的方式处理GET和POST请求。

答案 6 :(得分:-1)

有两个是调用servlet,HTTP GET调用doGet()和HTTP POST调用doPost()。 HTTP协议很简单,可以使用大量客户端。你可以编写自己的,你可以使用现成的java库,你可以使用像curl这样的命令行实用程序。

doGet()和doPost()方法可以做同样的事情或不同的事情。

设计servlet有两种常用方法:

  1. 每个servlet在doGet()和doPost()中执行相同操作,其中一个调用另一个。
  2. 实施例: FindCustomerServlet - 查找客户记录 UpdateCustomerServlet - 更新客户记录

    1. servlet在doGet()和doPost()中执行不同的操作。
    2. 实施例: CustomerServlet - 使用GET查找记录,使用POST进行更新。