-2

私はJAVAにまったく慣れていません。クライアントから送信された http ポスト パラメータを使用するサーブレットを作成する必要があります。私はすでに Java アプリケーション プラットフォーム サーバーを持っており、そこにアプリケーションをデプロイすることができました。必要なのは、投稿されたパラメーターに反応するサーブレットを作成することです。

どうやら、これらの変数をサーブレットで公開する必要がありますか? Google で調べたところ、REST フレームワークを使用してこれを実現することが提案されている結果に出くわしました。これは、追加のフレームワークを使用せずにプレーン Java コード (Tomcat を実行するなど) を書くことはできませんか? サンプルまたはチュートリアルへのリンクも役立ちます。

ありがとう

4

2 に答える 2

5

いいえ、REST フレームワークは必要ありません。

HttpServletを拡張して実装するサーブレットを作成するだけdoPost()です。

Sun/Oracle のチュートリアルから始めます。

http://java.sun.com/developer/onlineTraining/Programming/BasicJava1/servlet.html

親クラスの javadoc は次のとおりです。

http://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpServletRequest.html

于 2012-09-10T20:37:00.303 に答える
1

jax-RS を使用してアプリを構築する場合は、Tomcat にデプロイする前にプロジェクトにいくつかの jar を含める必要があります。IDE が war ファイルをビルドするときにこれを行う場合があります。デプロイ時にアップロードのサイズを小さくしたい場合は、これらの jar を Tomcat lib フォルダーに移動できます。ただし、REST を使用して要求パラメーターにアクセスする必要はありません。

実質的にすべての従来の Web アプリは、http ポスト パラメーターをキャプチャする必要があります。すべてのパラメーターを一覧表示する小さなユーティリティ サーブレットを作成して、パラメーターを HTML で 1 つの名前で呼び出し、サーブレットで別の名前で呼び出すというばかげた間違いを防ぐのに役立てました。このコードは、リクエストおよびセッション パラメータを取得する方法を示しています ( HttpServletRequest のドキュメントを参照) 。

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;

/**
 * This Servlet contains some helpful debugging methods.
  * @author Leon LaSpina
 */
@WebServlet(name = "UtilityServlet", urlPatterns = {"/dev/Utility"})
public class UtilityServlet extends HttpServlet {

    /**
     * This is a utility method for displaying the list of all request parameters
     * sent to a Servlet or JSP.
     * @param request - The HTTP request sent to the Servlet or JSP
     * @param out The stream so that the method may write directly to the web page.
     */
    public static void printMap(HttpServletRequest request, PrintWriter out) {
        java.util.Map<String, String[]> paramMap = request.getParameterMap();
        out.println("<h3>From Data</h3>");
        out.println("<table border='1'><tr>");
        out.print("<td>attribte name</td><td>Attribute Data</td></tr>");
        String[] attribute;
        for (String name : paramMap.keySet()) {
            out.print("<tr>");
            out.println("<td>" + name + "</td><td>");
            attribute = paramMap.get(name);
            if (attribute.length == 1) {
                out.print(attribute[0]);
            } else {
                for (String s : attribute) {
                    out.print(s + ", ");
                }
            }
            out.println("</td></tr>");
        }
        out.println("</table>");
    }

    /**
     * This is a simple utility method for displaying the list of all Session
     * Objects in a simple table.
     * @param request - sent to servlet or JSP
     * @param out the OutputStream so that we may write directly to the web page
     */
    public static void printSessionMap(HttpServletRequest request, PrintWriter out) {
        HttpSession session = request.getSession();
        printSessionMap(session, out);
    }

    /**
     * This is a simple utility method for displaying the list of all Session
     * Objects in a simple table.
     * @param request - sent to servlet or JSP
     * @param out the OutputStream so that we may write directly to the web page
     */
    public static void printSessionMap(HttpSession session, PrintWriter out) {
        java.util.Enumeration<String> names = session.getAttributeNames();
        out.println("<h3>Session Objects</h3>");
        out.println("<table border='1'><tr>");
        out.print("<td>attribte</td><td>DataType</td><td>Object Data</td></tr>");
        while (names.hasMoreElements()) {
            out.print("<tr><td>");
            String attribute = names.nextElement();
            out.print(attribute + "</td><td>");
            out.print(session.getAttribute(attribute).getClass().getName());
            out.print("</td><td>");
            out.println(session.getAttribute(attribute));
            out.println("</td></tr>");
        }
        out.println("</table>");
    }

    /** 
     * 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 {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        //HttpSession theSession = request.getSession();
        try {
            out.println("<html><head>");
            out.println("<title>UtilityServlet</title></head>");
            out.println("<body><h1>UtilityServlet for development</h1>");
            printMap(request, out);
            printSessionMap(request, out);
            out.println("</body></html>");
        } finally {
            out.close();
        }
    }
}
于 2012-09-10T20:42:31.747 に答える