簡體   English   中英

在jsp頁面和servlet之間傳遞參數

[英]passing parameters between jsp pages and servlets

我是Web服務jsps和servlet的新手,我有這個非常簡單的示例,只是為了了解事物的工作原理。

首先,我有這個簡單的Web服務:

    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;
        }

    }

然后,我在客戶端應用程序中使用此Web服務。 我試圖以正確的方式工作,所以我將數據從一個jsp發送到servlet,在servlet中進行計算,然后在另一個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>

這是我使用添加web方法的servlet:

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只是一個世界頁面,我只是想先到達那里,但我得到的是: 那。

啟動Web服務服務器后,在Web瀏覽器中輸入address:

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

如果此地址包含wsdl(xml格式),則將其用作wsdlLocation

也嘗試一些工具,例如SoapUI或其他工具

從Servlet到JSP

您可以在將請求轉發到jsp之前將值設置到響應對象中。 或者,您可以將值放入會話bean並在jsp中訪問它。

從JSP到Servlet

您需要提交表單並傳遞參數作為輸入。 一個例子 ...

<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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM