• ベストアンサー

webアプリケーション開発の考え方

卒業課題としてデータベースを利用したwebアプリケーション開発を始めたのですが、考え方というか開発手順がよく分かりません。 IDとパスワードを入力してログインし、従業員一覧から各ページに遷移していくというものです。私はこの一覧の制作を担当していますが、ログイン処理をしてリクエストセッションにデータを保存して…というところまではいいのですがそれ以外に必要な処理が分かりません。 MySQL1.5+eclipse3.1です。 漠然としていますが、ご教授いただけますようお願いします。参考になるサイトでも結構ですのでお願いします。

  • Java
  • 回答数3
  • ありがとう数5

質問者が選んだベストアンサー

  • ベストアンサー
  • guttyjr
  • ベストアンサー率62% (5/8)
回答No.1

担当されている処理の流れをまとめると、 [処理の流れ] 1. ログインページでID、パスワードを入力し、ログインボタンを押下する。 2. 1で入力されたID、パスワードを照合する。  2.a 照合OKの場合は3へ  2.b 照合NGの場合はログインページへ 3. ログイン情報をセッションに保存する。 4. 従業員一覧情報をDBから取得する。 5. 従業員一覧ページに4で取得した情報を表示する。 のような感じでしょうか。 ログイン処理まではできているようなので、4, 5の処理が必要でしょう。 JavaでのDBプログラミングがわからないようであれば、 http://www.hellohiro.com/jdbcmysql.htm が役にたつと思います。 ちなみにMySQL1.5ではなくMySQL5.0ですよね?

shiro-joe
質問者

お礼

返事が遅くなってしまい申し訳ありません。 大変丁寧にご教授いただき誠にありがとうございます。 頑張って勉強をして質問する側から回答する側に変われるようにしたいです! 本当に有難うございます。 (MySQLのバージョンは5.0でした。失礼しました。)

その他の回答 (2)

  • covachan
  • ベストアンサー率38% (46/120)
回答No.3

認証機能は別担当なんですよね? であれば、要点は簡潔です。 ログイン処理で受け取ったデータを評価し、NGであればログイン画面へ、 OKであればそのまま次のページへ引き渡す為にページの中で保持するだけです。 通常、そのために使いまわされる認証情報は秘匿の為に暗号化します。特に難しいところは暗号化された認証情報のデコーディング(復元)と評価ですかね。 ここらあたりのつくりは他の機能画面との打ち合わせが必要ですね。

shiro-joe
質問者

お礼

ご回答、有難うございます。 情報の暗号化は時間的余裕があればやるということになっています。 個人的には一番気になるところなのですが。普通のサーブレットみたいにプログラムを書いていってどうして情報が暗号化されるの??不思議です。おいおい勉強していきたいと思います。 現代において欠かせない技術ですし。 有難うございました。

回答No.2

いわゆる教科書に書かれているようなものとか、正常系の処理については、多くの書籍やWebサイトに構築の仕方を示したものがあるので、 それを参考すると良いと思います。 Webアプリケーション開発を行う上で、注意しなければならないことを考察する必要があります。 概要設計・詳細設計・構造設計・テスト設計・品質管理設計・構成管理設計・配布管理設計などが必要になります。 これらの設計を行う上で、前提用件の確認・確定を行う必要があります。 ソフトウェアの品揃えやハードウェアの品揃えなどについても十分な考察が必要になります。 制約事項がある場合、それに伴うリスクを十分に検討しておかなければなりません。・・・設計段階で、そのリスクをどのように回避するのか、決定しておく必要があります。 利用ユーザのことや、資源関係についても考察しておく必要があります。 ・不特定多数の人達が利用するのか、または特定化された人のみが利用するWebアプリケーションであるのか、 ・Webアプリケーションは、どのようなネットワーク環境で利用されるのか、ローカルLAN内なのか外部LANからも利用できるものなのか、 ・利用できるポートは何が利用できるのか、 ・VPN配下での運用とするのか、ネットワーク資源、ルールの確認が必要。 利用される方が善意の方達だけでなく、悪意を持った人達が利用されると仮定して構築する必要があります。 ・通信データへの不正アクセスをどのような対策を用意するのか、 ・データベースへの不正アクセスをどのような対策を用意するのか、 ・データベースのデータ構造(テーブル構造)としてどのようにするか、 ・データベース認証についてどのようにするのか、ネットワーク上のLANアナライザーで解析されないようにするためにどのような通信暗号化を利用し、保護を図るか システム障害設計をどのように考えるかにより、Webアプリケーションの品質レベルが大きく変わります。 技術的なことは、どのようなシステム環境で、Webアプリケーションが動くのか、動かすのかによっても大きくかわります。 これほど、すくない文字数では、語ることはむずかしいでしょうね。 考え方として参考にしてもらえれば幸いです。

shiro-joe
質問者

お礼

ご教授有難うございます。開発で精一杯になってしまってセキュリティは二の次になっているのが現状です。 1つの方向からだけでなく多方面からの見方が重要になってくるのですね。貴重な時間を割いていただき有難うございます。 頑張ってよりよいプログラム開発をします。

関連するQ&A

  • Webアプリケーションによるデータベースログインについて

    お世話になっております。お聞きしたいことですが、 ただいまWebアプリケーションをJavaで作成中でして、TOPページにログイン、パスワード、データベース選択などを付け、それらに適切な文を入力しないと次のページのテーブル一覧を出せない。 と、このようなシステムにしたいと思い投稿しました。 色々調べましたが、まずなにをすればいいのか自分には不明でしたので、適切なサイトやアドバイスなどございましたらどうぞよろしくお願いいたします。 設定環境 MySQL5.0 JDK1.5.0_11 tomcat6.0 eclipse3.2 です。

    • ベストアンサー
    • Java
  • EclipseでのWebアプリケーションデバッグ方法

    EclipseでのWebアプリケーションデバッグ方法についてお聞きします。 あるWebアプリケーションでログイン画面でユーザー名とパスワードを入力してログインボタンを押した直後から処理がどうなってるのかソースを一行ずつ追っていきたいのですが、そういった場合どこにブレークポイントを張ればよろしいでしょうか? ちなみに開発環境は以下の通りです。  ・JDK 1.4.2_13  ・Tomcat 5.0.28  ・Eclipse SDK 3.2.1 宜しくお願いします。

    • ベストアンサー
    • Java
  • データベースを使用したWebアプリの作り方

    php+Mysqlで簡単な照会プログラムを作ろうと思っているのですが、Webを使ったアプリを作ったことが無いので要領が判らず困っています。 phpの文法やMysqlの操作などはマニュアルを見ればなんとかなると思うのですが、幾つかのフォームを介した場合のセッションの考え方(Web自体のセッションとMysqlに対してのコネクション)がよく判りません。 ログイン画面でユーザーの認証をしたとすると、次のフォームに移ったとき、同じセッションであることを保持する情報をCookieなりデータベースなりに吐き出して処理するんであろうと思うのですが、その時にデータベースのコネクション情報は保持する(できる?)のでしょうか? mysql_pconnectとmysql_connectがあるようですが、mysql_pconnectを使った実践的なアプリケーションの例が見つからないので、立ち止まっています。 初歩的な質問で申し訳ないですが、参考になるサイトを教えて頂けるだけでも結構ですので、よろしくお願いします。

    • 締切済み
    • PHP
  • Webアプリケーションの開発(Struts)をしています。

    Webアプリケーションの開発(Struts)をしています。 仮に、詳細画面 → 入力画面 → 確認画面という画面構成の場合に、 詳細画面の内容を入力画面に表示する際に、データの引継ぎをする場合は、セッションで持っていれば セッションで保持している値をそのまま次の画面の入力フォームに引き渡すことができます。 なので、入力フォームクラスのデータをセッションに保存して画面で持ちまわすのが普通だと思っていました。 ただ、ある現場ではセッションでのもち回しを禁止し、オブジェクトをファイルにして持ちまわしていました。 なんでもかんでも入れるのはともかく、上記のような画面構成の場合はセッションに入れる以外の方法が思いつきません。 (詳細画面 → 入力画面に遷移する際にDBを再読み込みするという方法もあるのでしょうが。。。) 経験が浅いので、一般的にはどれが正解なのかよく分かりません。 教えてください。

  • vb2005でアプリケーションを開発しています。

    vb2005でアプリケーションを開発しています。 exeを実行中に、タスクマネージャーのプロセス一覧の「説明」に、 そのexeの処理内容を表示したいのですが、vbのプロジェクトで設定できるの でしょうか? よろしくお願いします。

  • Sessionがnullになりません。

    下記の環境でWebアプリケーションを開発しています。 java 1.5 eclipse 3.3 tomcat 5.5 ある画面Aは検索ボタンを押して結果一覧を表示したり、 結果一覧の詳細を知るためにリンクを押して、ポップアップ画面Bを表示したりします。 web.xmlに <session-timeout>10</session-timeout> と記述し、10分でタイムアウトとしています。 Servlet処理の最初で request.getSession(false) によりセッションを取得し、nullであればタイムアウト画面に遷移させています。 結果一覧を表示した後、10分間何もせずに画面Bを表示しようとすると ポップアップの画面はタイムアウト画面で表示されます。 Servletにブレークポイントをつけて確認したところ このときのrequest.getSession(false)の結果はnullでした。 タイムアウト画面を×ボタンで閉じ、A画面内で検索ボタンを押したところ、 request.getSession(false)の結果はnullではありませんでした。 ただし、session内にsetAttributeしていたBeanが全てnullになっており、 その後の処理で例外が発生してしまいました。 なぜ検索ボタンを押したところで sessionがnullになっていないのでしょうか?

    • ベストアンサー
    • Java
  • Java Webアプリケーション開発。別画面起動

    JavaのWebアプリケーションの開発で質問です 共通JavaBean、画面JavaBeanを用意しセッション毎に保持させています。 共通JavaBeanはセッションが切れるまで保持され、画面JavaBeanは画面が遷移するたびに遷移先の画面JavaBeanへと入れ替えを行っています。 遷移元と遷移先の画面が同じ場合は画面JavaBeanの入れ替えは行っていません(ページングする画面でチェックボックスなどの選択状態を保持したい為) 共通JavaBean = { 画面JavaBean={ }, 項目, 項目, 項目 } 通常遷移の画面A⇒画面Bやページングの画面A⇒画面Aなどの処理はこのままでいけるのですが、画面A⇒画面Cを別画面起動する時にどうしたらいいのか分からなくなってしまいました。 画面Cを別画面で立ち上げた時、遷移先が違うの画面なので画面JavaBeanが入れ替えられてしまいます。しかし、画面Aがページングの画面の時、別画面が起動した場合でもそれまで入力・選択した情報は保持したいのです。 「共通JavaBeanにページング画面のデータ保持用の項目を設ける(入力・選択リスト※ページングの存在する画面は1つではないのであまり実用性はないかな?)」 「別画面起動は画面JavaBeanは共通JavaBeanに別項目として保持する(画面JavaBeanメイン={},画面JavaBeanサブ={})」 「別画面起動かどうかのパラメータを渡して別画面起動の場合、画面Cの処理は行うが処理結果をすべてパラメータ(Responseに設定)で渡す。(JavaBeanを設定しない)」 「ページング画面に別画面起動を作成しない」←逃げ 「ページング画面で別画面起動時に入力・選択状態が解除される旨を伝えるメッセージを表示する」←逃げ 自分でもいくつかパターンは考えているんですが、どうも自分の中ではパッとしないです。 別画面起動した画面でも色々操作できるようにしたいとも思っているからでしょうか?(たぶん別画面起動した画面では表示専用とか制限をかけたら楽なんでしょうね) お力添えをお願いします。 【重要点】 (1)別画面を起動した親画面のJavaBean情報は破棄しない (2)別画面起動した画面でも処理が行える 【開発環境】 言語:Java ソフト:Eclipse 個人開発です。

  • C/S型のアプリケーションを開発したい

    よろしくお願いします。 5台以下のパソコンで使えるクライアント/サーバ型のアプリを VB2005で開発しようと思っています。事務所内にVistaのパソコンが あるので、Vista対応で作ろうと思っているのですが データベースはAccess2003のmdbでも問題ないのでしょうか? というのも、データベースはmdbでしか作成したことがありません… ネットで、mdbはよく壊れる、MSDEはVistaサポート外と目にしたので ここで勉強の意味も含めて SQL Server2005にしてみようかと思っていますが、 小さい事務所で予算もないし無償のExpressEditionかMySQLかな、と思っています。mdbしか触ったことがないのでよくわかりませんが VB2005で開発すると、開発工程やユーザーの使い勝手はどうでしょうか? データベースについてまだまだ勉強不足で変な質問かもしれませんが 5台以下のクライアント/サーバ型で Vista対応のアプリケーションを作ろうと思ったら、データベースは何が良いのでしょう? データ件数はそんなに膨大ではなく、容量が1GBもあれば充分です。 アドバイスお願いします。

  • セッション切れでのリクエスト~ログイン画面表示~ログイン~要求された画面へ遷移する方法

    お世話になります。strutsでの開発です。jdk1.5.0_09とtomcat5.5を使用しています。 下記のような流れを実現したいと思っています。参考になるサイトや文献、ヒントなどありましたらお教え下さい。 現在はリクエストフィルタを使用し、フィルタ内のメソッドdoFilter()でreq.getRequestDispatcher("/login.do").forward(req, res)を行いログイン画面まで遷移できていますが、そこでログインしてもデフォルト画面であるA画面が表示されるようになっています。 やりたい事は、セッションタイムアウト時にB画面のリクエストを受け付けると、ログイン画面へ遷移してログインリクエストで認証OKであればB画面へと遷移させたいと思っています。 不足している情報などありましたら随時追加します。よろしくお願いいたします。 ログイン画面表示   ↓ ログインリクエスト   ↓ A画面表示(通常ログイン時のデフォルト画面)   ↓ [セッションタイムアウト]   ↓ A画面でB画面をリクエスト   ↓ ログイン画面表示   ↓ ログインリクエスト   ↓ B画面表示(セッション切れの状態でリクエストされた画面)

    • ベストアンサー
    • Java
  • WebサーバとWebアプリケーション。セッションID、ユーザーID、パスワードを管理するのはどっち?

    セッションIDを習ったとき、 私の記憶ではセッションIDを管理するのはWebサーバと習いました。 普通、このOKWaveのようにログインを要するようなWebページは ログイン時に渡されたユーザーIDとパスワードを セッションIDに紐付ける形でサーバ側で管理することによって、 このセッションIDを通して、同一ユーザーと見なすということだったと思います。 しかし、ここでひとつ疑問が出ました。 ログイン時に、「自分は誰か、正しいユーザーか」ということを通信先に教えるために ユーザーIDとパスワードを入れますよね? でもここでユーザーIDとパスワードがほしいのはWebサーバではなく、 ユーザー情報を持っているWebアプリケーションではないのか?と考えました。 しかし、私はセッションIDはWebサーバが管理すると習ったように記憶しています。 ということは、 ・セッションIDはWebサーバが管理する ・ユーザーIDとパスワードはWebアプリケーションが管理する ということでいいのでしょうか? つまり、セッションIDとユーザーIDの対応表はWebアプリケーション側で実装し、 クライアントのリクエストから呼び出されるWebアプリケーションのプログラムは 「この呼び出した相手のセッションIDを教えてください」と Webサーバに聞くようなプログラムにしなければならないという認識で合っているのでしょうか? よく分かってないので、聞きたいことが非常に伝わりにくいかと思いますが、 よろしくお願いします。 長い上、お粗末な文章を最後まで読んでいただきありがとうございました

専門家に質問してみよう