質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.92%

「URLエンコードされていますか?」をクッリクすると、エラーになる

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 493
退会済みユーザー

退会済みユーザー

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を追加して、

ブラウザ:http://localhost:8080/04_Scope/URLEncodeSample_117.jsp?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>
情報: Server version:        Apache Tomcat/8.5.42 [土 8 10 16:41:55 JST 2019]
情報: Server built:          Jun 4 2019 20:29:04 UTC [土 8 10 16:41:55 JST 2019]
情報: Server number:         8.5.42.0 [土 8 10 16:41:55 JST 2019]
情報: OS Name:               Windows 10 [土 8 10 16:41:55 JST 2019]
情報: OS Version:            10.0 [土 8 10 16:41:55 JST 2019]
情報: Architecture:          amd64 [土 8 10 16:41:55 JST 2019]
情報: Java Home:             C:\pleiades\java\8\jre [土 8 10 16:41:55 JST 2019]
情報: JVM Version:           1.8.0_202-b08 [土 8 10 16:41:55 JST 2019]
情報: JVM Vendor:            Oracle Corporation [土 8 10 16:41:55 JST 2019]
情報: CATALINA_BASE:         C:\pleiades\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0 [土 8 10 16:41:55 JST 2019]
情報: CATALINA_HOME:         C:\pleiades\tomcat\8 [土 8 10 16:41:55 JST 2019]
情報: Command line argument: -Dcatalina.base=C:\pleiades\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0 [土 8 10 16:41:55 JST 2019]
情報: Command line argument: -Dcatalina.home=C:\pleiades\tomcat\8 [土 8 10 16:41:55 JST 2019]
情報: Command line argument: -Dwtp.deploy=C:\pleiades\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps [土 8 10 16:41:55 JST 2019]
情報: Command line argument: -Djava.endorsed.dirs=C:\pleiades\tomcat\8\endorsed [土 8 10 16:41:55 JST 2019]
情報: Command line argument: -Dfile.encoding=UTF-8 [土 8 10 16:41:55 JST 2019]
情報: 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]
情報: Initializing ProtocolHandler ["http-nio-8080"] [土 8 10 16:41:55 JST 2019]
情報: Using a shared selector for servlet write/read [土 8 10 16:41:55 JST 2019]
情報: Initializing ProtocolHandler ["ajp-nio-8009"] [土 8 10 16:41:55 JST 2019]
情報: Using a shared selector for servlet write/read [土 8 10 16:41:55 JST 2019]
情報: Initialization processed in 942 ms [土 8 10 16:41:55 JST 2019]
情報: サービス [Catalina] を起動します [土 8 10 16:41:55 JST 2019]
情報: Starting Servlet Engine: Apache Tomcat/8.5.42 [土 8 10 16:41:55 JST 2019]
情報: Starting ProtocolHandler ["http-nio-8080"] [土 8 10 16:41:56 JST 2019]
情報: Starting ProtocolHandler ["ajp-nio-8009"] [土 8 10 16:41:56 JST 2019]
情報: Server startup in 460 ms [土 8 10 16:41:56 JST 2019]
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

check解決した方法

0

サーバーがないので、
ブラウザ: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を追加して、

ブラウザ:http://localhost:8080/04_Scope/URLEncodeSample_117.jsp?param=%E5%85%A8%2F%E8%A7%92%E6%96%87%3F%E5%AD%97

エンターで
「URLエンコードされていますか?
送信されたパラメータ:param:全/角文?字  」として、実行するしかないみたいです。 

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.92%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る