0

私はjsonが初めてで、jsonオブジェクト形式でリクエストを受け取っています。

       {"login_detail":[{"password":"world","username":"hello"}]}

サーブレットで解析したいのですが、コードは次のとおりです-

     public class LoginServlet extends HttpServlet{

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter();
    //String json=request.getParameter("x");
   try {
        String jsonreq=request.getParameter("x");

        System.out.println(jsonreq);



        JSONArray outerArray = (JSONArray) JSONSerializer.toJSON(jsonreq);
        JSONObject json1 = (JSONObject) outerArray.get(0);
        JSONArray jarray1 = json1.getJSONArray("login_detail");
        for (int i = 0; i < jarray1.size(); i++)
        {
          JSONObject hotel = jarray1.getJSONObject(i);
          String user = hotel.getString("pasword");
          System.out.println(user);
          String pass=hotel.getString("username");
          System.out.println(pass);
        }

        out.print(jsonreq);

    }catch(Exception e){
        System.out.println("inside exception");
        e.printStackTrace();
    }
    finally {            
        out.close();
    }


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

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

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

しかし、私は例外を取得しています

       Sep 09, 2013 4:57:52 PM org.apache.catalina.core.StandardWrapperValve invoke
       SEVERE: Servlet.service() for servlet login threw exception
       java.lang.ClassNotFoundException:            org.apache.commons.lang.exception.NestableRuntimeException
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:791)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1850)
at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:890)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1354)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
at com.serverside.LoginServlet.processRequest(LoginServlet.java:40)
at com.serverside.LoginServlet.doPost(LoginServlet.java:72)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
at java.lang.Thread.run(Thread.java:722)

今、私はjson-lib 2.2.2 jarファイルを使用しています.Androidクライアントからのリクエストの受信に問題はありません。JSONObject パラメーター化コンストラクターが ANDROID で完全に機能するかどうかを理解できないのに、なぜそれがサーブレットで機能しないのですか?? 私が理解できない問題は何ですか。誰かが私を助けてくれたら、本当に感謝します。

4

5 に答える 5

1

すべての依存関係ライブラリが必要です。これらを見逃すと、実行時例外が発生します。org.apache.commonsがありません

ところで、にhotel.getString("pasword");変更hotel.getString("password");

于 2013-09-09T11:50:47.960 に答える
0

Apache Commons Langをダウンロードして、jar ファイルを の下に置くことができます/WEB-INF/lib。それは問題を解決するはずです。

于 2013-09-09T11:54:22.270 に答える
0

最も可能性の高い説明は、Apache を定義する JAR がNestableRuntimeExceptionWeb アプリケーションの WAR ファイルにないことです。

http://www.findjar.comによると、その依存関係を提供できる JAR ファイルはたくさんありますが、最も可能性が高いのはcommons-lang-x.x.jarファイルの 1 つです。例えばcommons-lang-2.3.jar

Maven を使用して WAR ファイルを構築している場合は、関連する依存関係を POM ファイルに追加するだけです。それ以外の場合は、JAR を手動でダウンロードし、WAR ファイルの「/WEB-INF/lib」ディレクトリに追加します。

于 2013-09-09T11:49:45.827 に答える