Java基礎文法Part７

今回は画面遷移について記事にしたいと思います。
 
 リンクによる画面遷移
ウェブサイトにはよくリンクがありますよね。リンクをクリックすると、別のページに移動することができます。このようにして、あるページから別のページに簡単に移動することができます。

例：
```html
<a href="about.html">このリンクをクリックして「About」のページに行く</a>
```
<a>タグ: これはリンクを作るためのタグです。
href="about.html": ここに移動したいページのURLを指定します。この例では、「about.html」というページに移動します。

フォームによる画面遷移
リンクだけでなく、フォームを使って情報を送信し、それに応じて画面を切り替えることもできます。例えば、ログイン画面では、名前やパスワードを入力して送信ボタンを押すと、ログインの結果に応じて別の画面に移動することができます。

例：
```html
<form action="login.html" method="POST">
    <label for="name">名前:</label>
    <input type="text" id="name" name="username">
    <button type="submit">ログイン</button>
</form>
```
<form>タグ: フォームを作るためのタグです。ここで、どのページにデータを送るか（action）を指定します。
method="POST": データをどうやって送るかを指定します。POSTはフォームデータを安全に送信する方法です。
入力フォーム（<input>タグ）を使って、名前やパスワードなどを入力して送信できます。


 パラメータの送り方の違い
ウェブページを移動するときや、情報を送るときには、パラメータというデータを一緒に送ることができます。このパラメータの送り方には2つの方法があります。

GETメソッド：URLにパラメータをくっつけて送信する方法です。ブラウザのアドレスバーにパラメータが見えるので、あまり重要でないデータを送るときに使います。
例：
```html
https://example.com/search?q=apple
```
q=appleの部分が、パラメータです。「apple」という検索ワードがサーバーに送られます。
POSTメソッド：パラメータを見えない形で送信する方法です。ログインフォームなどで使われることが多く、データを安全に送信するために使います。URLにはパラメータが表示されません。



. フォームからデータを送信する（calc_input.jsp）
まず、入力画面（calc_input.jsp）のコードを見てみましょう。

```jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
    <meta charset=UTF-8">
    <title>入力画面</title>
</head>
<body>
    <div>
        <form action="calc_output.jsp">
            <input type="number" name="num_x"> +
            <input type="number" name="num_y"> =
            <button type="submit">計算する</button>
        </form>
    </div>
</body>
</html>
```
このコードのポイント：
<form>タグ: フォームを作成して、ユーザーが入力したデータを別のページに送信します。action="calc_output.jsp"は、送信先のページを指定しています。この場合は、結果を表示するページ（calc_output.jsp）にデータを送ります。
<input type="number" name="num_x">と<input type="number" name="num_y">: ユーザーが入力した数値データを送るためのフォーム部品です。それぞれ、name="num_x"とname="num_y"で、入力された値にラベルを付けています。後でこの名前を使って、データをサーバー側で取り出します。
2. データを受け取るページ（calc_output.jsp）
フォームで送信されたデータは、別のページ（calc_output.jsp）で**request.getParameter()**メソッドを使って取得します。

例：calc_output.jspのコード
```jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
    <meta charset=UTF-8">
    <title>計算結果</title>
</head>
<body>
    <div>
        <% 
            // フォームから送られてきた値を取得する
            String numX = request.getParameter("num_x");
            String numY = request.getParameter("num_y");

            // 文字列を整数に変換して計算
            int x = Integer.parseInt(numX);
            int y = Integer.parseInt(numY);
            int result = x + y;
        %>
        <h1>計算結果: <%= result %></h1>
    </div>
</body>
</html>
```
このコードのポイント：
request.getParameter("name"): このメソッドを使って、フォームから送信されたデータを取得します。getParameter("num_x")でフォームのname="num_x"に入力された値を取得し、同様にgetParameter("num_y")で別の入力値を取得します。

データ型の変換: フォームで送られるデータは基本的に文字列として送られます。そのため、Integer.parseInt()を使って文字列を数値に変換しています。これで、計算ができるようになります。

計算結果の表示: x + yの結果を計算し、<%= result %>でその結果を表示します。

メソッド呼び出しの仕組み
request.getParameter()は、フォームから送信されたデータを取得するためのメソッドです。JSPページ内では、サーバーがクライアント（ブラウザ）から送られたリクエスト情報を管理するための**requestオブジェクトが使われます。このオブジェクトが持っているgetParameter()メソッド**を呼び出すことで、フォームに入力されたデータを引数として受け取ります。

動作の流れ：
入力画面（calc_input.jsp）でデータを入力して「計算する」ボタンを押すと、num_xとnum_yに入力された値がcalc_output.jspに送信されます。

calc_output.jspでrequest.getParameter()メソッドを使ってデータを受け取る。フォームのname属性を使って、データを取り出し、計算します。

計算結果を画面に表示します。

今回は画面遷移について記事にしました。