第二次Servlet不调用WebService



我正在与java一起工作,并使用netbeans w/glashfish。我正在编写一个类似于电话簿的简单程序,我有两个Servlet和一个Web服务。第一个servlet创建表单,促使用户输入并将上述输入发送到第二个servlet。

第二个servlet从另一个项目调用Web服务,获取与用户输入的名称相关的相应电话号码。但是,我如何获得第二个servlet来致电WebService?

第二次servlet:

package com.temp;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet(name = "ResultServlet", urlPatterns = {"/ResultServlet"})
public class ResultServlet extends HttpServlet {
    /**
     * Processes requests for both HTTP
     * <code>GET</code> and
     * <code>POST</code> methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse   response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            /* TODO output your page here. You may use following sample code. */
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Servlet ResultServlet</title>");            
            out.println("</head>");
            out.println("<body>");
            out.println("<h1>Phone Number:</h1>");
            String person = request.getParameter("userName");

            //out.println(person);  --> TEST to see if ResultServlet can get "string" from FormServlet.... IT CAN!! :)

            String phone = getPerson(person); //THIS IS WHAT CANNOT BE ACCOMPLISHED!!!
            //out.println(phone);

            out.println("</body>");
            out.println("</html>");
        } finally {            
            out.close();
        }
    }
    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP
     * <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }
    /**
     * Handles the HTTP
     * <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }
    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>
}

WebService:

package com.temp;
import com.sun.xml.ws.developer.servlet.HttpSessionScope;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import javax.jws.WebService;
import javax.jws.WebMethod;
import javax.jws.WebParam;

@HttpSessionScope
@WebService(serviceName = "Lookup")
public class Lookup {
    String phoneNum="";
    private HashMap<String, String> theBook = new HashMap<String, String>();
        public Lookup() {
        theBook.put("person1", "941-111-1111");
        theBook.put("person2", "941-222-2222");
        theBook.put("person3", "941-333-3333");
        theBook.put("person4", "941-444-4444");
        theBook.put("person5", "941-555-5555");
    }
    /**
     * Web service operation
     */
    @WebMethod(operationName = "getPerson")
    public String getPerson(String personName) {
        phoneNum = "";
        if (theBook.containsKey(personName)) {
            phoneNum = theBook.get(personName);
        }
        return phoneNum;
    }
}

您应该能够使用NetBeans生成服务客户端。

独立于您的IDE,您可以将AXIS2用于客户生成。

工具通常会为您生成一些易于使用的Java类。

最新更新