2017-01-05 5 views
0

Я новичок в веб-сервисах jsps и сервлетах, и у меня есть этот очень простой пример, чтобы понять, как все работает.Передача параметров между страницами jsp и сервлетами

Во-первых, у меня есть этот простой веб-сервис:

package com.sav.calculator; 

    import javax.jws.WebService; 
    import javax.jws.WebMethod; 
    import javax.jws.WebParam; 

    @WebService(serviceName = "CalculatorWS") 
    public class CalculatorWS { 

     @WebMethod(operationName = "add") 
     public int add(@WebParam(name = "i") int i, @WebParam(name = "j") int j) { 
      int k = i + j; 
      return k; 
     } 

    } 

Тогда я использовать этот веб-сервис в своем клиентском приложении. Im пытается работать правильно, поэтому я отправляю данные из jsp в сервлет, выполняю вычисления в сервлете и отправляю данные в другой jsp для презентации .. но вопрос в том, почему я не понял это правильно?

здесь является первым JSP (только HTML-форма):

<%@page contentType="text/html" pageEncoding="UTF-8"%> 
    <!DOCTYPE html> 
    <html> 
     <head> 
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     </head> 
     <body> 

      <form method="POST" action="ClientServlet"> 
       <input type="text" name="j"/> 
       <input type="text" name="i"/> 
       <input type="submit" value="submit"/> 
      </form> 

     </body> 
    </html> 

здесь сервлет, где я использую мой добавить WebMethod:

package com.sav.calculator.client; 

import com.sav.calculator.CalculatorWS_Service; 
import java.io.IOException; 
import java.io.PrintWriter; 
import javax.servlet.RequestDispatcher; 
import javax.servlet.ServletException; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import javax.xml.ws.WebServiceRef; 

@WebServlet(name = "ClientServlet", urlPatterns = {"/ClientServlet"}) 
public class ClientServlet extends HttpServlet { 

    @WebServiceRef(wsdlLocation = "WEB-INF/wsdl/localhost_8080/CalculatorWSApplication/CalculatorWS.wsdl") 
    private CalculatorWS_Service service; 

    protected void processRequest(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 

    } 

    @Override 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
     processRequest(request, response); 
     doPost(request, response); 
    } 

    @Override 
    protected void doPost(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
     processRequest(request, response); 

     int i = (int) request.getAttribute("i"); 
     int j = (int) request.getAttribute("j"); 

     int k = add(i, j); 
     request.setAttribute("k",k); 

     RequestDispatcher dispatcher = this.getServletContext().getRequestDispatcher("newjsp2.jsp"); 
     dispatcher.forward(request, response); 
    } 

    @Override 
    public String getServletInfo() { 
     return "Short description"; 
    } 

    private int add(int i, int j) { 
     com.sav.calculator.CalculatorWS port = service.getCalculatorWSPort(); 
     return port.add(i, j); 
    } 

} 

И newjsp2 это просто мир страница привет , я просто пытаюсь попасть туда первым, но я получаю: that.

ответ

0

После запуска сервера веб-сервиса в веб-браузере введите адрес:

http://localhost:8080/CalculatorWSApplication/CalculatorWS.wsdl 

если этот адрес содержит WSDL (формат XML), а затем использовать его в качестве wsdlLocation.

Попробуйте также некоторые инструменты, например SoapUI, or some other.

0

От Servlet к JSP

Вы можете установить значение в объект ответа перед отправлением запроса Jsp. Или вы можете поместить свои значения в сессионный компонент и получить доступ к нему в jsp.

От JSP в сервлет

Вы должны представить форму и передать параметр в качестве входных данных. Пример ...

<form method="Post" action="path/to/servlet"> 
    <input type="text" name="x" /> 
    <input type="password" name="xx" /> 
    <input type="hidden" name="xxx" value="zzz" /> 
    <input type='submit' /> 
</form> 
Смежные вопросы