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のオブジェクト(object)の書き方やメソッドを追加する方法

  <目次> (1) JavaScriptのオブジェクト(object)の書き方やメソッドを追加する方法  (1-1) 構文①:オブジェクト作成  (1-2) 構文②:オブジェクトにアクセス …

JSP/Servletでウェルカムページが認証されない事象について

<目次> (1) JSP/Servletでウェルカムページが認証されない事象について  (1-1) 発生状況・エラーメッセージ  (1-2) 原因  (1-3) 対処 (1) JSP/Servletで …

Failed to execute goal org.apache.mavenエラーの原因と対処(Spring BootのMavenプロジェクトで発生)

  <目次> (1) Failed to execute goal org.apache.mavenエラーの原因と対処(Spring BootのMavenプロジェクトで発生)  (1-1) …

Javaの選択ソートとは?アルゴリズムの流れ+サンプルプログラムをご紹介

<目次> (1) バイナリ―サーチとは?Javaのサンプルプログラムを用いて解説  (1-1) バイナリ―サーチのアルゴリズム  (1-2) バイナリ―サーチの性能(処理回数)  (1-3) バイナリ …

JavaScriptで現在時刻をhhmmss形式で取得する方法

<目次> (1) JavaScriptで現在時刻をhhmmss形式で取得する方法  (1-1) 構文・要点  (1-2) サンプルプログラム (1) JavaScriptで現在時刻をhhmmss形式で …

  • English (United States)
  • 日本語
Top