2014年08月18日
Webアプリケーションを作ってみた
まだまだ初歩ではありますが、成果物を挙げられるようになってきました。
つい、2〜3か月前までは、
jspとは?サーブレットとは?といった状態で、なんとなく出来そうな気がしていました。
しかし、実際にはそう甘くなく、覚える事が盛りだくさんでした。
実際に作ったものは、[ ブログ ] です。
そう、ここで公開しているようなブログの仕組みを一から。
これが結構大変だった。
本のサンプルを用いて写経した事はありましたが、
いざ、自分で組んで見ると、セキュリティホールだらけだし、
ブログとして形をなしていない事がよく分かりました。
Webアプリケーションの仕組みを作るなら、ある程度の時間で作れますが、
SQLインジェクションによる不正なスクリプトを埋め込まれたり、
セッションハイジャックといったセッション情報を利用した悪用、
などなど、簡単に不正使用されてしまうのです。
実際のロジック
実際のロジックとしては、そんなに高度な内容ではなく、
< jsp > ページ
・投稿ページ(ブログの投稿画面)
・閲覧ページ(ブログのトップページ)
・投稿画面に入る為のログインページ
・404エラー、403エラー用の専用ページ
< Servlet > クラス
・文字化け対策用のフィルタ
・投稿された内容の不正文字列チェック
・本文・コメント投稿の振り分け
・データベースへの登録
・データベースから投稿内容用のリストを作成
・投稿内容のリストからを閲覧ページに呼び出し
< 裏方 >
・データベースへのアクセス定義(context.xml)
・ページへのアクセス制御(web.xml)
jspはユーザーがHTMLだと認識する部分で、
何も意識しないで投稿やコメントをしている部分ですね。
サーブレットは、jspから値を受け取ったり、jspに値を渡したりする裏方で、
ユーザーが直接触ることのない部分で、ユーザーに表示される部分は、
全部jspに処理を渡しています。
何気ないボタンにも仕組みが満載
次のページ、前のページといった当たり前についているボタンも、
前に10件投稿がなければ、閲覧ページに「前の10件」ボタンを表示しない。
次に10件投稿がなければ、投稿ページに「次の10件」ボタンを表示しない。
といったロジックが必要となり、jspにモリモリ書くのではなく、
Servlet側に判定させて、前に10件あるかないか(boolean)だけをjspに渡して、
jspは、前に10件ボタンを表示するかしないか判定すればよいのです。
JSTLって凄いね
JSTLというjspの記法があり、最初覚えたjspの記述と大分違うので、戸惑いを覚えましたが、
逆にこれしか使っちゃだめ。スクリプトレット禁止!というわけであれば、大したことは無かった。
何がすごいかと言うと、スクリプトレットを使わない事で、処理が分かりやすい。
逆を言うと、コーダーやフロントエンジニアでも、javaScriptのような感覚で記述ができるので、
プログラマさん、サーブレットへのプログラミングはよろしくね。
jspにページデザインして、JSTLもこっちで書いておいて、値を受け取るだけにしておくから。
JSTLも難しい記法ではないので、処理に関してはプログラマに書かせて、
その結果の値だけは、JSTLで受け取るだけの1行を書いてしまえばいいので、
jspの製作は完全に、デザイナー側に委ねてしまうように分業する事が出来るんですね。
しばらく、ばりばりプログラムを勉強して、他の言語にも挑戦できるようになってきたら、
もうちょっと、フロントエンジニア側にポジションを移して作業を進められたら楽しいかもしれないな。
とやっと実感レベルで思い始めました。
改善点
もう少し、サーブレット側の処理をオブジェクト指向的に記述ができて、
MVCモデルといった仕組みで構築できるとよいかもしれない。
最初設計してから、このブログを作ってみたのですが、
実際作り始めると、無理が生じてきたため、設計を無視して突貫工事を始めてしまい、
結構、汚らしい感じになってしまいました。
設計力の足りなさと、上塗り上塗りのコーディング…素人の建築そのものでした。
世の中に当たり前にあるサービスを自分でロジックを考えて作ってみると、
なかなか勉強になります。もっとコーディング力を上げれるよう勉強していかなきゃですな。
つい、2〜3か月前までは、
jspとは?サーブレットとは?といった状態で、なんとなく出来そうな気がしていました。
しかし、実際にはそう甘くなく、覚える事が盛りだくさんでした。
実際に作ったものは、[ ブログ ] です。
そう、ここで公開しているようなブログの仕組みを一から。
これが結構大変だった。
本のサンプルを用いて写経した事はありましたが、
いざ、自分で組んで見ると、セキュリティホールだらけだし、
ブログとして形をなしていない事がよく分かりました。
Webアプリケーションの仕組みを作るなら、ある程度の時間で作れますが、
SQLインジェクションによる不正なスクリプトを埋め込まれたり、
セッションハイジャックといったセッション情報を利用した悪用、
などなど、簡単に不正使用されてしまうのです。
実際のロジック
実際のロジックとしては、そんなに高度な内容ではなく、
< jsp > ページ
・投稿ページ(ブログの投稿画面)
・閲覧ページ(ブログのトップページ)
・投稿画面に入る為のログインページ
・404エラー、403エラー用の専用ページ
< Servlet > クラス
・文字化け対策用のフィルタ
・投稿された内容の不正文字列チェック
・本文・コメント投稿の振り分け
・データベースへの登録
・データベースから投稿内容用のリストを作成
・投稿内容のリストからを閲覧ページに呼び出し
< 裏方 >
・データベースへのアクセス定義(context.xml)
・ページへのアクセス制御(web.xml)
jspはユーザーがHTMLだと認識する部分で、
何も意識しないで投稿やコメントをしている部分ですね。
サーブレットは、jspから値を受け取ったり、jspに値を渡したりする裏方で、
ユーザーが直接触ることのない部分で、ユーザーに表示される部分は、
全部jspに処理を渡しています。
何気ないボタンにも仕組みが満載
次のページ、前のページといった当たり前についているボタンも、
前に10件投稿がなければ、閲覧ページに「前の10件」ボタンを表示しない。
次に10件投稿がなければ、投稿ページに「次の10件」ボタンを表示しない。
といったロジックが必要となり、jspにモリモリ書くのではなく、
Servlet側に判定させて、前に10件あるかないか(boolean)だけをjspに渡して、
jspは、前に10件ボタンを表示するかしないか判定すればよいのです。
JSTLって凄いね
JSTLというjspの記法があり、最初覚えたjspの記述と大分違うので、戸惑いを覚えましたが、
逆にこれしか使っちゃだめ。スクリプトレット禁止!というわけであれば、大したことは無かった。
何がすごいかと言うと、スクリプトレットを使わない事で、処理が分かりやすい。
逆を言うと、コーダーやフロントエンジニアでも、javaScriptのような感覚で記述ができるので、
プログラマさん、サーブレットへのプログラミングはよろしくね。
jspにページデザインして、JSTLもこっちで書いておいて、値を受け取るだけにしておくから。
JSTLも難しい記法ではないので、処理に関してはプログラマに書かせて、
その結果の値だけは、JSTLで受け取るだけの1行を書いてしまえばいいので、
jspの製作は完全に、デザイナー側に委ねてしまうように分業する事が出来るんですね。
しばらく、ばりばりプログラムを勉強して、他の言語にも挑戦できるようになってきたら、
もうちょっと、フロントエンジニア側にポジションを移して作業を進められたら楽しいかもしれないな。
とやっと実感レベルで思い始めました。
改善点
もう少し、サーブレット側の処理をオブジェクト指向的に記述ができて、
MVCモデルといった仕組みで構築できるとよいかもしれない。
最初設計してから、このブログを作ってみたのですが、
実際作り始めると、無理が生じてきたため、設計を無視して突貫工事を始めてしまい、
結構、汚らしい感じになってしまいました。
設計力の足りなさと、上塗り上塗りのコーディング…素人の建築そのものでした。
世の中に当たり前にあるサービスを自分でロジックを考えて作ってみると、
なかなか勉強になります。もっとコーディング力を上げれるよう勉強していかなきゃですな。
【Javaの最新記事】
この記事へのコメント