たなしょのメモ

日々勉強していることをつらつらと

JavaでWebアプリケーションつくるためのメモ

はじめに

たなしょです。

お久しぶりです。 本当に色々ありました。

ようやく復調してきました。 ブログの執筆再開します!

本題

C++の勉強はひとまず置いて今日はJavaでwebアプリケーションを作ろうと思います。

開発はEclipse+pleiadesを使って実装していきます。

ディレクトリ構成はこんな感じ

tree
.
├── WebContent
│   ├── META-INF
│   │   └── MANIFEST.MF
│   └── WEB-INF
│       ├── jsp
│       │   ├── musicChoice.jsp
│       │   └── musicChoiceResult.jsp
│       └── lib
├── build
│   └── classes
│       ├── model
│       │   ├── MusicChoice.class
│       │   └── musicLogic.class
│       └── servlet
│           └── musicChoiceSite.class
└── src
    ├── model
    │   ├── MusicChoice.java
    │   └── musicLogic.java
    └── servlet
        └── musicChoiceSite.java

12 directories, 9 files

musicChoiceSite.java

サーブレットクラスは下記のようになっています。

package servlet;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import model.MusicChoice;
import model.musicLogic;

/**
 * Servlet implementation class musicChoiceSite
 */
@WebServlet("/musicChoiceSite")
public class musicChoiceSite extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
    * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
    */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //フォワード
        RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/musicChoice.jsp");
        dispatcher.forward(request, response);
    }

    /**
    * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
    */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");

        //リクエストパラメータ取得
        String music = request.getParameter("music");
        String musicianName = request.getParameter("musician");
        String price = request.getParameter("price");
        String detail = request.getParameter("detail");

        //入力値をプロパティに設定
        MusicChoice mc = new MusicChoice();
        mc.setPrice(Integer.parseInt(price));
        mc.setMusicNumber(music);
        mc.setMusicianName(musicianName);
        mc.setMusicDetail(detail);

        //消費税10%を付与する
        musicLogic ml = new musicLogic();
        ml.execute(mc);

        //リクエストスコープに保存
        request.setAttribute("musicchoice", mc);

        //フォワード
        RequestDispatcher d = request.getRequestDispatcher("/WEB-INF/jsp/musicChoiceResult.jsp");
        d.forward(request, response);
    }

}

doGet

サーブレットクラスがGETリクエストされると実行されるクラス。

GETは指定したURI(リソース)の情報を取得する。

doPost

サーブレットクラスがPOSTリクエストされると実行されるクラス。

POSTはリソースの追加や作成の役割を持っている。

フォワード

RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/musicChoice.jsp");
dispatcher.forward(request, response);

サーブレットクラスとJSPファイルをフォワードする。

request.getRequestDispatche("フォワード先")で記述する。

GETリクエストが送られたらフォワード先に転送する。

文字コード指定

request.setCharacterEncoding("UTF-8");

記載する文字コードを指定する。今回の場合「UTF-8」が設定される。

この記載がないとリクエストパラメータの値が文字化けする。

リクエストスコープ

request.setAttribute("musicchoice", mc);

musicchoiceはスコープに保存したインスタンスを取得する際に必要になる。

MusicChoice mc = (MusicChoice) request.getAttribute("musicchoice");

上記のようにリクエストスコープからインスタンスを取得する。

最後に

今日はこの辺で終わりです。 11月が始まりましたね。結構激変の1ヶ月になるかもです! わくわく!

最後まで読んでいただいてありがとうございました。 もしよろしければtwitterアカウント(@piklus100yen)もフォローしていただけると幸いです!