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

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

関連記事

Tomcatのコネクションプールの設定手順

<目次> (1) Tomcatのコネクションプールの設定手順  (1-1) コネクションプールとは?  (1-2) コネクションプールの設定手順   (1-2-1) context.xmlの記述    …

セッションIDとは?JSPでsessionを保存&取得するサンプルプログラムと代表的なメソッド紹介

(0)目次&概説 (1) セッションとは  (1-1) 概要  (1-2) サンプルプログラム   (1-2-1) 概要&画面遷移   (1-2-2) HelloSession.jsp   (1-2- …

Javaで複数の配列を結合する方法について

<目次> (1) Javaで複数の配列を結合する方法について  (1-1) 構文  (1-2) サンプルプログラム (1) Javaで複数の配列を結合する方法について Javaで複数の配列を結合する方 …

エラー「Project ‘XXXX’ is missing required library: ‘XXXX.jar’」の原因と対処法

<目次> (1) エラー「Project ‘XXXX’ is missing required library: ‘XXXX.jar’」の原因と対処法 …

「サーブレットコンテナ」や「サーブレットのライフサイクル」とは?(サンプルプログラム付)

※本記事は「サーブレットとは?その役割やHelloWorldサンプルコードのご紹介」の続編です。 (0)目次&概説 (2) サーブレットコンテナの基本  (2-1) サーブレットコンテナとは?  (2 …

  • English (United States)
  • 日本語
Top