トップ

全ページ

掲示板

質問

ログインをしてページを更新するだけでお金を稼ぐことが出来ます。
ページの作成

ページの作成

親となるページを選択してください。

ページは必ず何かしらの親ページに紐づきます。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球

子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール

親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
テンプレートを更新

1. テスト

本稿はSpring Frameworkのプロジェクトの作成~基本的な動作を説明します。

主な項目は以下の通り。

・プロジェクトの作成&初期動作確認

・DB接続(MySQLを使用)

・DI

・画面で入出力

・AOP ※AOPに関してはこちらを参照

 

前提

eclipse, tomcatのインストールをしている。(まだの方はこちら

eclipseにSpringのプラグインを導入している。(まだの方はこちら

本稿はWindows OSを前提として進めます。(読み替え可能なら他のOSでも問題なし)

 

プロジェクトの作成

プロジェクトの作成はこちらの記事を参照してください。

※今回のプロジェクトタイプは「Spring MVC Project」、プロジェクト名は「SpringMVC」、パッケージ名は「com.example.springmvc」にして下さい。

 

サーバーの設定とプロジェクトの紐づけ

こちらを参照してください。

 

動作確認

この段階で、とりあえずデフォルトの画面が開くかどうか動作チェックをしましょう。

サーバーを起動させた状態で以下のURLを入力して、画面が表示されるか確認しましょう。

http://localhost:8080/springmvc/

表示されない場合はもう一度、設定内容を確認してください。※特にプロジェクト作成の項目をチェック

 

DBの作成

データベースを使用するので、今回はMySQLを用意します。

Windowsの場合、MySQLを単独でインストールすると色々と設定がめんどくさいので、今回はXAMPPのMySQLを使用します。XAMPPのインストールはこちらを参照。

MySQLにデータベースおよびテーブルを作成しましょう。以下のコマンドを実行します。

CREATE DATABASE spring_db CHARACTER SET utf8 COLLATE utf8_bin;

USE spring_db;

CREATE TABLE users (
    user_name VARCHAR(50) PRIMARY KEY,
    password VARCHAR(50) NOT NULL
);
  
INSERT INTO users(
    user_name
    , password
)VALUES(
    'tarou'
    , 'password'
),(
    'jirou'
    ,'password'
);

 

JDBCを記載

pom.xmlに以下の記述を追加しましょう。



    org.springframework
    spring-jdbc
    5.0.5.RELEASE


    mysql
    mysql-connector-java
    5.1.46



    cglib
    cglib
    3.2.6

※ついでにCGLIBというライブラリも記載しておきましょう。このライブラリはInterfaceの実装でないbeanをInjectionする際に必要となります。

 

DB接続設定

src/maim/resources」に以下の内容の「jdbc.properties」ファイルを作成しましょう。

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/spring_db
jdbc.username=root
jdbc.password=

 

DB設定用のクラスを用意します。

「com.example.springmvc.config」パッケージを作成して、以下の内容の「DBConfig.java」を作成しましょう。

@Configuration
@PropertySource({"classpath:/jdbc.properties"})
public class DBConfig {

    @Autowired
    private
Environment environment;

    @Bean
    public
DataSource datasource() {
        final DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName(environment.getProperty("jdbc.driverClassName"));
        dataSource.setUrl(environment.getProperty("jdbc.url"));
        dataSource.setUsername(environment.getProperty("jdbc.username"));
        dataSource.setPassword(environment.getProperty("jdbc.password"));
        return dataSource;
    }

    @Bean
    public
DataSourceTransactionManager transactionManager() {
      return new DataSourceTransactionManager(datasource());
    }

    @Bean
    public
JdbcTemplate jdbcTemplate() {
      return new JdbcTemplate(datasource());
    }
}

@PropertySourceで先ほど作成したjdbc.properties」を読み込み、datasource()メソッド内で設定内容をリターンしています。

メソッド内を見るとenvironmentから設定を取得していることが分かります。

このように、読み込まれた設定情報は自動的にEnvironmentにインジェクションされます。

後述しますが、あるクラスからDBアクセスをする際にはJdbcTemplateクラスを通してDBへアクセスすることになります。

DataSourceTransactionManagerはトランザクションが発生する際に使用することになります。

DBの設定は以上となります。

 

DBから値を取得

それでは実際にDBから値を取得しましょう。

デフォルトで用意されているHomeControllerを以下のように書き換えましょう。

@Controller
public class HomeController {

    private static final Logger logger = LoggerFactory.getLogger(HomeController.class);

    @Autowired
    JdbcTemplate jdbcTemplate;

    @RequestMapping(value = "/", method = RequestMethod.GET)
    public String home(Locale locale, Model model) {
        logger.info("Welcome home! The client locale is {}.", locale);

        Date date = new Date();
        DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);

        String formattedDate = dateFormat.format(date);

        model.addAttribute("serverTime", formattedDate);

        //ユーザーを取得
        List> users = jdbcTemplate.queryForList(
                "SELECT user_name, password FROM users");;

        model.addAttribute("users", users);

        return "home";
    }

}

インジェクションしたJdbcTemplateを通じてDBにアクセスしています。

これをmodelに格納することで画面側で格納した値を使用することができるようになります。

 

画面への出力

デフォルトで用意されている「home.jsp」にユーザー情報を表示する処理を追加します。

usersはList>型なので、for文で回してMAPのキー名を指定して値を取得します。

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page session="false" %>


    Home



    Hello world!

 The time on the server is ${serverTime}.


    

user_name: ${user.get("user_name")}


    

password: ${user.get("password")}



 

Maven ビルド

実際に画面を確認したいので、プロジェクトをMavenでビルドしましょう。

プロジェクトを右クリック → 実行 → 「Maven ビルド」を選択します。

 

ゴールの項目に「package」と入力して実行ボタンを押しましょう。

BUILD SUCCESS」が表示されれば成功です。

 

ユーザー情報出力の確認

画面を確認してみましょう。

サーバーを起動させてhttp://localhost:8080/springmvc/にアクセスします。

上記のようにユーザー情報が表示されればOKです。(無論、本番でパスワード表示などありえないですが)

 

子ページ
子ページはありません
同階層のページ
同階層のページはありません
コメント一覧

    No.2 | guest | 2019-05-24 15:50:44

    I'm no longer certain the place you are getting your information, but good topic. I needs to spend some time studying much more or understanding more. Thanks for magnificent information I was on the lookout for this info for my mission. http://Www.Vintagehouserestaurant.com/

    No.1 | guest | 2019-05-20 01:01:52

    I am sure this piece of writing has touched all the internet viewers, its really really fastidious piece of writing on building up new blog. I’ve been surfing online more than 2 hours today, yet I never found any interesting article like yours. It is pretty worth enough for me. Personally, if all website owners and bloggers made good content as you did, the web will be a lot more useful than ever before. I am sure this paragraph has touched all the internet users, its really really fastidious paragraph on building up new website. http://Nestle.com/