JSP&サーブレットをEclipseで勉強中です。HTTP通信を学ぶというコーナーで
以下のコードを実行すると、
ブラウザ:http://localhost:8080/04_Scope/URLEncodeSample_117.jspで
「URLエンコードされていますか?
送信されたパラメータ:param:null 」と出ます。
リンクの張られた「URLエンコードされていますか?」をクッリクすると、
ブラウザ:http://localhost:8080/04_Scope/URLEncodeSample_117.jsp?param=%E5%85%A8%2F%E8%A7%92%E6%96%87%3F%E5%AD%97
になるんですが、HTTPステータス 404 - Not Found のエラーになります。
「HTTPステータス 404 - Not Found
Type ステータスレポート
メッセージ /04_Scope/URLEncodeSample.jsp
説明 The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.」
再度初めから
ブラウザ:http://localhost:8080/04_Scope/URLEncodeSample_117.jspで
「URLエンコードされていますか?
送信されたパラメータ:param:null 」と出て、
この状態でブラウザのアドレスの後に?param=%E5%85%A8%2F%E8%A7%92%E6%96%87%3F%E5%AD%97を追加して、
エンターで
「URLエンコードされていますか?
送信されたパラメータ:param:全/角文?字 」と変化し、思惑通りに表示されます。
「URLエンコードされていますか?」をクッリクすると、リンク先は合っているのに
どうしてエラーになるのかわかりません。
このコードを実行した時点で
「URLエンコードされていますか?
送信されたパラメータ:param:全/角文?字 」となるはずなんですが、私の理解が
間違っていますか。エラーログは出てないみたいです。
windows10
Eclipse Version: 2019-06 (4.12.0)
よろしくおねがいいたします。
<%@page import="java.net.URLDecoder"%> <%@page import="java.net.URLEncoder"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <% // パラメータを渡すURL String url = "URLEncodeSample.jsp?param="; // クエリ文字列に入れたい値 String params = "全/角文?字"; // 全角文字やURLに含めてはいけない文字列があるのでURLエンコード // 送信されるパラメータ「全/角文?字」が以下に変換される // %E5%85%A8%2F%E8%A7%92%E6%96%87%3F%E5%AD%97 String encoded = URLEncoder.encode(params, "UTF-8"); // URLを作成 url = url + encoded; %> <a href="<%= url %>">URLエンコードされていますか?</a><br /> <% String receive = request.getParameter("param"); if ( receive != null ) { // 受け取ったパラメータをURLデコードする receive = URLDecoder.decode(receive, "UTF-8"); // 標準のJSPでは全てのリクエストパラメータは文字コードiso-8859-1として扱われるので、本来のUTF-8へ戻す receive = new String( receive.getBytes("iso-8859-1") , "UTF-8"); } %> 送信されたパラメータ:param:<%= receive %> </body> </html>
consoleの表示
1情報: Server version: Apache Tomcat/8.5.42 [土 8 10 16:41:55 JST 2019] 2情報: Server built: Jun 4 2019 20:29:04 UTC [土 8 10 16:41:55 JST 2019] 3情報: Server number: 8.5.42.0 [土 8 10 16:41:55 JST 2019] 4情報: OS Name: Windows 10 [土 8 10 16:41:55 JST 2019] 5情報: OS Version: 10.0 [土 8 10 16:41:55 JST 2019] 6情報: Architecture: amd64 [土 8 10 16:41:55 JST 2019] 7情報: Java Home: C:\pleiades\java\8\jre [土 8 10 16:41:55 JST 2019] 8情報: JVM Version: 1.8.0_202-b08 [土 8 10 16:41:55 JST 2019] 9情報: JVM Vendor: Oracle Corporation [土 8 10 16:41:55 JST 2019] 10情報: CATALINA_BASE: C:\pleiades\workspace.metadata.plugins\org.eclipse.wst.server.core\tmp0 [土 8 10 16:41:55 JST 2019] 11情報: CATALINA_HOME: C:\pleiades\tomcat\8 [土 8 10 16:41:55 JST 2019] 12情報: Command line argument: -Dcatalina.base=C:\pleiades\workspace.metadata.plugins\org.eclipse.wst.server.core\tmp0 [土 8 10 16:41:55 JST 2019] 13情報: Command line argument: -Dcatalina.home=C:\pleiades\tomcat\8 [土 8 10 16:41:55 JST 2019] 14情報: Command line argument: -Dwtp.deploy=C:\pleiades\workspace.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps [土 8 10 16:41:55 JST 2019] 15情報: Command line argument: -Djava.endorsed.dirs=C:\pleiades\tomcat\8\endorsed [土 8 10 16:41:55 JST 2019] 16情報: Command line argument: -Dfile.encoding=UTF-8 [土 8 10 16:41:55 JST 2019] 17情報: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [C:\pleiades\java\8\bin;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:/pleiades/eclipse/jre/bin/server;C:/pleiades/eclipse/jre/bin;%JAVA_HOME%bin;%CATALINA_HOME%bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files (x86)\Brackets\command;%ECLIPSE_HOME%;C:\Program Files\PuTTY\;C:\Program Files\MySQL\MySQL Shell 8.0\bin\;C:\Program Files (x86)\EaseUS\Todo Backup\bin\x64\;C:\pleiades\eclipse;;.] [土 8 10 16:41:55 JST 2019] 18情報: Initializing ProtocolHandler ["http-nio-8080"] [土 8 10 16:41:55 JST 2019] 19情報: Using a shared selector for servlet write/read [土 8 10 16:41:55 JST 2019] 20情報: Initializing ProtocolHandler ["ajp-nio-8009"] [土 8 10 16:41:55 JST 2019] 21情報: Using a shared selector for servlet write/read [土 8 10 16:41:55 JST 2019] 22情報: Initialization processed in 942 ms [土 8 10 16:41:55 JST 2019] 23情報: サービス [Catalina] を起動します [土 8 10 16:41:55 JST 2019] 24情報: Starting Servlet Engine: Apache Tomcat/8.5.42 [土 8 10 16:41:55 JST 2019] 25情報: Starting ProtocolHandler ["http-nio-8080"] [土 8 10 16:41:56 JST 2019] 26情報: Starting ProtocolHandler ["ajp-nio-8009"] [土 8 10 16:41:56 JST 2019] 27情報: Server startup in 460 ms [土 8 10 16:41:56 JST 2019] 28
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。