2016-09-28 6 views
2

JSPページのみを使用してJSON WebServiceを作成します。 これは私が1つのJSPファイルで何でもしたいのです。JSPのみを使用してJSON WebServiceを作成するページ

私は以下の手順に従ってください:名 "テスト" と

ファイル]> [新規]> [動的Webプロジェクトを

「名前 "なtest.jsp" と "のWebContent" フォルダに

を新しいファイルを作成します。 web.xmlの "ファイルコード

の下に与えられているなtest.jsp」

<%@ page import="javax.ws.rs.POST"%> 
<%@ page import="javax.ws.rs.Path"%> 
<%@ page import="javax.ws.rs.core.Response"%> 
<%@ page import="javax.ws.rs.Consumes"%> 
<%@ page import="javax.ws.rs.Produces"%> 
<%@ page import="org.json.JSONObject"%> 
<%@ page import="java.util.Date"%> 
<%@ page import="java.util.TimeZone"%> 
<%@ page import="java.text.DateFormat"%> 
<%@ page import="java.text.SimpleDateFormat"%> 

@Path("/") 
<%! 
    DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
    SimpleDateFormat returnDateFormat = new SimpleDateFormat("dd-MM-yyyy HH:mm"); 
    @POST 
    @Consumes("application/x-www-form-urlencoded") 
    @Path("/Register") 
    public Response Register(String json) { 
     Date dt = new Date(); 
     formatter.setTimeZone(TimeZone.getTimeZone("IST")); 
     String currentTime = formatter.format(dt); 
     JSONObject returnJson = new JSONObject(); 
     try { 
      JSONObject innerJsonObj = new JSONObject(json); 
      String email = innerJsonObj.getString("email"); 

      JSONObject jsonData = new JSONObject(); 
      jsonData.put("id", email); 
      returnJson.put("success", true); 
     } catch (Exception e) { 
      JSONObject errorJson = new JSONObject(); 
      errorJson.put("success", false); 
      return Response.ok(errorJson.toString()).header("Access-Control-Allow-Origin", "*").build(); 
     } 
     return Response.ok(returnJson.toString()).header("Access-Control-Allow-Origin", "*").build(); 
    } 
%> 

私は、以下に述べるファイルコード"私は右の「テスト」プロジェクトを右クリックして、サーバー上で実行すると

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1"> 
    <display-name>test</display-name> 
</web-app> 

が、それは次のようなエラーになります

HTTP Status 404 - /test/ 

私はクローム残りWebサービスクライアントプラグイン JSONデータを使用してJSONを投稿 " http://localhost:8080/test/Register "URLは

{"email": "[email protected]"} 

これは、次の応答を与える

404, Not Found 
Date: Wed, 28 Sep 2016 12:06:00 GMT 
Server: Apache-Coyote/1.1 
Content-Length: 1036 
Content-Language: en 
Content-Type: text/html;charset=utf-8 

私のTomcat 8サーバーログ:

Sep 28, 2016 5:01:46 PM org.apache.tomcat.util.digester.SetPropertiesRule begin 
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:test' did not find a matching property. 
Sep 28, 2016 5:01:46 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: Server version:  Apache Tomcat/8.0.33 
Sep 28, 2016 5:01:46 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: Server built:   Mar 18 2016 20:31:49 UTC 
Sep 28, 2016 5:01:46 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: Server number:   8.0.33.0 
Sep 28, 2016 5:01:46 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: OS Name:    Windows 8.1 
Sep 28, 2016 5:01:46 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: OS Version:   6.3 
Sep 28, 2016 5:01:46 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: Architecture:   amd64 
Sep 28, 2016 5:01:46 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: Java Home:    C:\Program Files\Java\jdk1.8.0_45\jre 
Sep 28, 2016 5:01:46 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: JVM Version:   1.8.0_45-b15 
Sep 28, 2016 5:01:46 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: JVM Vendor:   Oracle Corporation 
Sep 28, 2016 5:01:46 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: CATALINA_BASE:   D:\Documents\Eclipse_Workspace\test\.metadata\.plugins\org.eclipse.wst.server.core\tmp0 
Sep 28, 2016 5:01:46 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: CATALINA_HOME:   C:\Program Files\Apache Software Foundation\Tomcat 8.0 
Sep 28, 2016 5:01:46 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: Command line argument: -Dcatalina.base=D:\Documents\Eclipse_Workspace\test\.metadata\.plugins\org.eclipse.wst.server.core\tmp0 
Sep 28, 2016 5:01:46 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: Command line argument: -Dcatalina.home=C:\Program Files\Apache Software Foundation\Tomcat 8.0 
Sep 28, 2016 5:01:46 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: Command line argument: -Dwtp.deploy=D:\Documents\Eclipse_Workspace\test\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps 
Sep 28, 2016 5:01:46 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: Command line argument: -Djava.endorsed.dirs=C:\Program Files\Apache Software Foundation\Tomcat 8.0\endorsed 
Sep 28, 2016 5:01:46 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: Command line argument: -Dfile.encoding=Cp1252 
Sep 28, 2016 5:01:46 PM org.apache.catalina.core.AprLifecycleListener lifecycleEvent 
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jdk1.8.0_45\bin;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:/Program Files/Java/jre1.8.0_45/bin/server;C:/Program Files/Java/jre1.8.0_45/bin;C:/Program Files/Java/jre1.8.0_45/lib/amd64;C:\ProgramData\Oracle\Java\javapath;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Skype\Phone\;C:\Program Files\TortoiseSVN\bin;C:\WINDOWS\System32;;. 
Sep 28, 2016 5:01:47 PM org.apache.coyote.AbstractProtocol init 
INFO: Initializing ProtocolHandler ["http-nio-8080"] 
Sep 28, 2016 5:01:47 PM org.apache.tomcat.util.net.NioSelectorPool getSharedSelector 
INFO: Using a shared selector for servlet write/read 
Sep 28, 2016 5:01:47 PM org.apache.coyote.AbstractProtocol init 
INFO: Initializing ProtocolHandler ["ajp-nio-8009"] 
Sep 28, 2016 5:01:47 PM org.apache.tomcat.util.net.NioSelectorPool getSharedSelector 
INFO: Using a shared selector for servlet write/read 
Sep 28, 2016 5:01:47 PM org.apache.catalina.startup.Catalina load 
INFO: Initialization processed in 2795 ms 
Sep 28, 2016 5:01:47 PM org.apache.catalina.core.StandardService startInternal 
INFO: Starting service Catalina 
Sep 28, 2016 5:01:47 PM org.apache.catalina.core.StandardEngine startInternal 
INFO: Starting Servlet Engine: Apache Tomcat/8.0.33 
Sep 28, 2016 5:01:49 PM org.apache.jasper.servlet.TldScanner scanJars 
INFO: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time. 
Sep 28, 2016 5:01:49 PM org.apache.coyote.AbstractProtocol start 
INFO: Starting ProtocolHandler ["http-nio-8080"] 
Sep 28, 2016 5:01:49 PM org.apache.coyote.AbstractProtocol start 
INFO: Starting ProtocolHandler ["ajp-nio-8009"] 
Sep 28, 2016 5:01:49 PM org.apache.catalina.startup.Catalina start 
INFO: Server startup in 2356 ms 

私は、Eclipse Mars1、Tomcatの8とjdk1.8.0_45を使用しています。

+1

_ JSPページのみを使用してJSON WebServiceを作成したいのですがなぜですか?これの背後にある理由は何ですか?それは最も貧弱なプログラミングの練習になります。 –

+0

@Simze何らかの理由でこのjspファイルをサードパーティ製のツールに展開する必要があります。だから私は同じように作成する必要があります。 – user3441151

+0

これは非常に多くのことが間違っているので、どこから始めるべきかを知ることは難しいです。 –

答えて

1

これは奇妙な構造です。それはjspをコンパイルするためにtomcatがどのように設定されているかによって異なります。非常に頻繁に、これは遅れて、すなわち初めて必要なときに行われます。

JAX-RSアノテーションを見つけてバインドするために、クラスパスのスキャンがアプリケーションの開始時に(そして私が知る限り、それだけで)行われます。

だから、なぜそれが働かない(おそらく決してうまくいかない)のが分かります。

関連する問題