ハローワールドをこんな感じでやるのはわかります。
javaのアプリケーションでは必ずmain処理から始まるのはわかります
public class ClassSample {
public static void main(String args[]){
System.out.println("Hello! World!");
}
}
引用:https://eng-entrance.com/java-basic-main
でも、画面のボタンを押したときにはなぜ
main()の関数が動かないで直接メソッドを実行できるのですか?
No.4ベストアンサー
- 回答日時:
>main処理が動かない理由についてはわかりませんでした。
>(明示的に書いてないです。)
ひょっとしてJavaの話ではない?
まあ、それは置いといて、ボタンの押下→サーバ側アプリケーションの起動
という図式は必ずしも成り立たない。Javaでそれをやったら遅くて使いものに
なりません。
サーブレットの場合、一つのインスタンスがメモリにいて、複数のブラウザの
要求を裁いている。つまり、webアプリはもっと前に起動していて、
ボタン押下(サブミット)時、イベント(電文受信)を処理しているに
過ぎないということです。
お礼遅れ申し訳ありません、
Javaの話です。
webアプリケーションのJava(サーブレット)はJavaアプリケーションとは別物と考えてとらえます。
Javaアプリケーションは実行すると必ずmain処理から始まりますが
webアプリケーションのJavaはxmlファイルにマッピングしたJavaの処理が呼び出されるようです。
その理由はローカルで動作するアプリケーションではなく、
常時起動しているサーバー側がリクエストを受け取って応答する動作だからとざっくり理解いたしました。
ひとくくりに周りの方々はジャバジャバと挙句の果てにはhtml上で動作しているJavaScriptも混同してジャバジャバ
おっしゃるので混乱しておりました。
課題としてはアプリケーションとの違いを理解するという意味で以下深堀してみます
・ボタン押下(サブミット時)にいかにしてサーバー上でJavaプログラムがフレームワークを介して動作しているかの深堀
・ローカル側でのサブミット時のイベントとサーバー側とのリクエストとレスポンスの構造の深堀
No.3
- 回答日時:
それもそうなんですが>#2, それ以前に
Java と JavaScript は全くの別物
という指摘をしておきましょう.
No.2
- 回答日時:
大昔のようにCGIとして(独立のプロセスとして)
webアプリを起動するならmainが呼ばれるでしょうが、
今のwebアプリは、サーバソフトウェアや
webフレームワークの一部として
うごくのでmainは呼ばれません。
一度、サーブレット/JSPの教科書を読んで見た方が良いですよ。
webで使われているJavaは私がみていたJavaとは別の何かなんですね。
調べてみましたが
WEB-INF/web.xmlに設定情報が書かれている
<servlet>要素に記述したJavaファイルとClassを登録して
<servlet-mapping>要素に画面のボタンを押したときに指定するURIを書くとそれが呼び出されるようです。
その理由については書いてないようです。
main処理が動かない理由についてはわかりませんでした。(明示的に書いてないです。)
Javaは必ずpublic static void main(String args[] ~ から動くと聞いたのですが、
・アプリケーションのJavaとは違うから
・webのフレームワークの一部として動くから実は裏で動いているけど見えない?
といったあたりなんでしょうか
No.1
- 回答日時:
「画面のボタン」ってなに?
この画面の場合、
たくさんありますが、例えば[Q 質問・相談する]ボタンのmainBtn headerBtnです。
こんな感じで書いてあります。
javascriptの何かに飛んでmain処理が動いていると思われるのですが、
そこから先が隠れてて見えないです。
<p class="mainBtn headerBtn">
<a data-osccid="header_question" href="javascript:void 0;" data-login-modal-window-params="{"urls":{"logged_in":"\/question\/?selected_category=2836&from=https%3A%2F%2Foshiete.goo.ne.jp%2Fqa%2F10750787.html"}}">
<span class="fa-stack"><i class="fa fa-circle fa-stack-2x w-circle"></i><i class="fa-stack-1x fa-inverse q">Q</i></span><span class="q-text" id="header_question_area">質問・相談する</span>
</a>
</p>
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java Java プログラム public class Main { public static void 3 2023/08/10 23:46
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- Java 直し方について教えて頂きたいです。 4 2022/08/13 02:11
- Java java 飾子を付けること(public static・・・) ・コンソールへの出力処理はmainメ 2 2022/06/16 19:34
- Java java final 1 2022/06/10 22:49
- Java eclipse実行ができない 2 2022/07/27 04:47
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- C言語・C++・C# 大量のデータを読み込んで表示する速度を改善したい 8 2023/05/07 13:29
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- Java javaの質問です 次の機能を有するメソッド4つを自クラスに作成し、実装したいです 【機能】 足し算 1 2022/06/15 17:49
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
c# 文字列の最後から1文字削除...
-
DataGridViewのチェックボック...
-
JSPでボタンを押したら、文字が...
-
Page_Load時にボタンクリックイ...
-
JSPでメッセージボックスを表示...
-
VBAで一時中断したプログラムの...
-
Ctrlキーを押しながらのダブル...
-
メール添付されたPDFファイルが...
-
Excel VBA ダイアログシートの...
-
asp.net メッセージボックス表...
-
プルダウンメニューのジャンプ...
-
JSFで最初のリクエストで動く処...
-
Spread.NETの行削除について
-
最小化ボタン
-
SPREADでカーソルの位置を1行目...
-
ASP.NETのGridViewでNULLの場合...
-
【C#】 : WindowsProgramming ...
-
javaのメイン関数 public stati...
-
EXCEL2010でセルが編集中かを判...
-
最新ページを表示する際のF5...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
c# 文字列の最後から1文字削除...
-
DataGridViewのチェックボック...
-
VBAで一時中断したプログラムの...
-
Eclipseでクリーンが出来ない
-
ブラウザの×ボタン(閉じるボタ...
-
メール添付されたPDFファイルが...
-
グリッドビューでのチェックボ...
-
SPREADでカーソルの位置を1行目...
-
EXCEL2010でセルが編集中かを判...
-
CheckBoxをボタン形式にして押...
-
最大化ボタンと最小化ボタンを...
-
Ctrlキーを押しながらのダブル...
-
IEの閉じるボタンを消す方法
-
今更、VBAでRPA、キーボード操...
-
C# Enterキーの動作について
-
Page_Load時にボタンクリックイ...
-
Webブラウザの閉じるボタン無効...
-
【C#】 : WindowsProgramming ...
-
Fancyboxのiframe内に閉じるボタン
-
VBのこのコードの意味を教えて...
おすすめ情報