在servlet的doPost中调用Java函数?

时间:2012-07-03 01:05:04

标签: java http servlets

我想处理HTTP请求并对其进行一些处理。我可以这样做吗?

protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    response.setContentType("application/soap+xml;charset=utf-8");
    char[] cbuf = new char[10000];

    PrintWriter out = response.getWriter();

    InputStreamReader in = new InputStreamReader(request.getInputStream());

    in.read(cbuf,0,10000);

    int req_len = request.getContentLength(); 

    String inputLine = new String(cbuf);

    Spoof sp = new Spoof();

    String xml_response = sp.spoof_second(inputLine.substring(0, req_len), request.getParameter("mode"));    

    out.println(xml_response);
}

我得到一个null响应,所以我想知道是否有办法调用函数spoof_second()。

我的web.xml看起来像:

<?xml version="1.0"?>
<web-app
 xmlns="http://java.sun.com/xml/ns/j2ee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
 version="2.4">
 <servlet>
    <servlet-name>home</servlet-name>
    <servlet-class>website.web.HomeServlet</servlet-class>
 </servlet>
 <servlet-mapping>
    <servlet-name>home</servlet-name>
    <url-pattern>/home</url-pattern>
 </servlet-mapping>

我将请求发送到[http:// localhost:4321 / website / home?mode = record],因此模式正确并且inputLine也正确,因为我通过打印它们来检查。我不确定的是如何在Eclipse中构建整个项目,因为我认为没有进行函数调用。我没有得到任何异常,我得到一个带有null内容的HTTP 200 OK响应。

1 个答案:

答案 0 :(得分:0)

当您使用http://localhost:4321/website/home?mode=record之类的请求时,会调用doGet。对于“发布”,您可以创建HTML表单并设置action="home"method="post"并添加submit按钮。在提交时,它将提交表单中的所有数据。