Rainbow Engine

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

Java JavaScript JSP/Servlet

JavaScriptでformをPOSTリクエストでsubmitするプログラムの例

投稿日:2021年6月17日 更新日:

 

<目次>

(1) JavaScriptでformをPOSTリクエストでsubmitするプログラムの例
 (1-1) 概要
 (1-2) 構文
 (1-3) サンプルプログラム
 (1-4) 補足:「HTMLのformをsubmit」VS「JavaScriptのsubmit()」(両者の違い)

(1) JavaScriptでformをPOSTリクエストでsubmitするプログラムの例

(1-1) 概要

通常HTMLからformをsubmit処理して、Servlet等にリクエスト(POST/GET)を送って処理を行うパターンが最もベーシックかと思いますが、今回は別の手段としてJavaScriptを使って<form>を動的に生成し、そこからPOSTやGETのリクエストを送る方法をご紹介します。

 

(図111)通常のリクエスト/レスポンス
 
(図112)JavaScriptを経由したリクエスト/レスポンス
 
※(図112)は「JS ⇒ Servlet ⇒ JSP」のような経路となっていますが、JavaScriptを使うと小回りが利くので、実際は「JS ⇒ JSP」や「JS ⇒ Servlet ⇒ JS(response使いDOM操作)⇒ JSP」など色々な使い方が可能です。
 

(1-2) 構文

以下は、リクエストを送るための最低限のJavaScriptです。

var form = document.createElement("form");
form.method = "POST";
form.action = "IT0xxx_JsCreateElementForm_AFTER.jsp";
document.body.append(form);
form.submit();
まず、最初のcreateElementメソッドはHTMLの要素を生成するためのメソッドで、引数に要素名(例:form、divなど)を指定して作成します。今回はformを指定しているので、<form>要素を生成している事になります。
 
以降は作成したform要素を使って、HTMLでformを使う時と同じように、鍵となるプロパティ(属性)をセットしていきます。
 
(表)form要素のプロパティの例

プロパティ 説明
action form要素のaction属性と対応しており、formの送り先のURLを指定します。
(例)
form.action = “IT0xxx_JsCreateElementForm_AFTER.jsp”;
method form要素のmethod属性と対応しており、formを送る際のリクエストの方式(GET、POSTなど)を指定します。
(例)
form.method = “POST”;
name form要素のname属性と対応しており、form要素の名前を指定します。

(1-3) サンプルプログラム

●JavaScript

function CreateElementTest(){

    //# JsCreateElementの挙動確認
    var form = document.createElement("form");
    form.method = "POST";
    form.action = "IT0xxx_JsCreateElementForm_AFTER.jsp";
    document.body.append(form);
    form.submit();

}

●JSP(遷移前)

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script src="js/IT0xxx_JsCreateElement.js" type="text/javascript" charset="UTF-8"></script>
<title>Js Create Element Test</title>
</head>
<body>
<h2>■createElementの挙動確認</h2>
<input type="button" value="createElementテスト" onclick="CreateElementTest()">
</body>
</html>

●JSP(遷移後)

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Js Create Element Test</title>
</head>
<body>
<h2>【遷移後画面(AFTER)】createElementの挙動確認</h2>
<a href="IT0xxx_JsCreateElementForm.jsp" >→ Back to IT0xxx_JsCreateElementForm.jsp</a>
</body>
</html>

 

(操作動画)
上記のサンプルプログラムを実際に動かした動画です。

目次にもどる

(1-4) 補足:「HTMLのformをsubmit」VS「JavaScriptのsubmit()」(両者の違い)

●「HTMLのformをsubmit」の利点(メリット)

・formの入力値(ユーザの画面入力値)をリクエストに乗せて送れる(&簡単に取り出せる)
 
・安定している(JavaScriptはOFFにされたら動作しなくなるため、原則はサーバサイドの処理でsubmitするのが定石

 

●「JavaScriptのsubmit()」の利点(メリット)

・工夫すれば、ボタン以外のトリガーでリクエストを送れる
(例)jQueryの「$(function(){…});」を使ってロード時にリクエスト
 
(例)各種イベント(マウスクリックなど)をトリガーにリクエスト
 
(例)リンクのクリックをトリガーにリクエスト
 

Adsense審査用広告コード


Adsense審査用広告コード


-Java, JavaScript, JSP/Servlet

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

JavaScriptのAddEventListenerの用途や使用例について

<目次> (1) JavaScriptのAddEventListenerの用途や使用例について  (1-1) 概要  (1-2) 構文  (1-3) サンプルプログラム (1) JavaScriptの …

Spring Bootでpom.xmlに「Unknown error」が出た時の対処方法について

  <目次> (1) Spring Bootでpom.xmlに「Unknown error」が出た時の対処方法について  (1-1) 発生状況  (1-2) 原因  (1-3) 対処法①(非 …

Tomcatの起動時のエラー「アドレスは既に使用中です」や「必要な幾つかのポートがすでに使用中です」の対処方法

<目次> (1) Tomcatの起動時のエラー「アドレスは既に使用中です」や「必要な幾つかのポートがすでに使用中です」の対処方法  (1-1) 発生状況  (1-2) 原因  (1-3) 対処方法 ( …

JavaでJSON配列から値を抽出する方法+郵便番号検索APIのサンプルプログラムも紹介

(0)目次&概説 (1) 記事の目的  (1-1) 目的  (1-2) 前提条件 (2) JSON配列から値抽出する方法  (2-1) JSON配列のデータの構造例  (2-2) JSON配列のデータ …

Linuxでアプリケーションサーバを構築する手順の例

<目次> (1) Linuxでアプリケーションサーバを構築する手順の例  (1-1) APサーバの全体像  (1-2) APサーバの構築手順  (1-3) 各手順のURL (1) Linuxでアプリケ …

  • English (United States)
  • 日本語
Top