Hibernateで覚えるO/RマッピングとBeanの常識Webアプリの常識をJSPとStrutsで身につける(9)(3/3 ページ)

» 2009年06月04日 00時00分 公開
[眞野寿彦株式会社メセナ・ネットコム]
前のページへ 1|2|3       

O/Rマッピングを使ったWebアプリのコーディング

 それでは、ソースコードを作成していきましょう。「PKG\Hello\pages」配下に下記のJSPファイルを作成してください。

LoginOR.jsp
<%@ page contentType="text/html; charset=Shift-JIS" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<html:html>
  <head><title>ログイン画面(O/Rマッピング)</title></head>
  <html:form action="/LoginOR">
    <H2>ログイン画面(O/Rマッピング)</H2>
    <TABLE>
      <TR><TD><html:errors/></TD></TR>
      <TR>
        <TD>ログインID : </TD>
        <TD><html:text property="id" size="20" /></TD>
      </TR>
      <TR><TD>パスワード : </TD>
        <TD>
          <html:password property="password" size="20" 
            redisplay="false" />
        </TD>
      </TR>
    </TABLE>
    <P>
      <html:submit property="submit" value="ログイン" />
    </P>
  </html:form>
</html:html>
Success.jsp
<%@ page contentType="text/html; charset=Shift-JIS" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<html:html>
<head><title>ログイン成功(O/Rマッピング)</title></head>
  <html:form action="/LoginOR">
     <P>
       <h2>ログイン成功(O/Rマッピング)</h2>
     </P>
     <TABLE>
         <TR>
             <TD>ようこそ <bean:write name="LoginORForm" property="name" /> さん</TD>
         </TR>
     </TABLE>
  </html:form>
</html:html>

 次に、前回作成した「login」フォルダ配下に、「LoginORAction.java」を作成してください。

LoginORAction.java
package login;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.*;
 
import org.hibernate.Session;
 
import login.form.LoginORForm;
import mapping.Mapping;
 
public final class LoginORAction extends Action {
    public ActionForward execute(
          ActionMapping mapping,
          ActionForm form,
          HttpServletRequest request,
          HttpServletResponse response)
    throws Exception {
 
          LoginORForm loginORForm = (LoginORForm)form;
          LoginORForm user = (LoginORForm)form;
          
          ActionMessages errors = new ActionMessages();
 
          String id = loginORForm.getId();
          String password = loginORForm.getPassword();
          user = load(id,password);
          // 一致しなければ認証失敗
          if (! id.equals(user.getId()) ||
             ! password.equals(user.getPassword())) {
             errors.add(
                ActionMessages.GLOBAL_MESSAGE,
                new ActionMessage("errors.login"));
          }
          loginORForm.setName(user.getName());
          return mapping.findForward("success");
    }
    
    public LoginORForm load(String id,String password) {
        Session session = Mapping.getSession();
        LoginORForm user = (LoginORForm) session.load(LoginORForm.class, id);
        session.close();
        return user;
    }
}

 次に、Beanである「login」フォルダの「form」フォルダに、「LoginORForm.java」を作成します。

LoginORForm.java
package login.form;
 
import org.apache.struts.action.ActionForm;
 
public class LoginORForm extends ActionForm {
 
    private String id;
    private String name;
    private String password;
    
    /**
     * 
     * @return
     */
    public String getName() {
        return name;
    }
    /**
     * 
     * @param name
     */
    public void setName(String name) {
        this.name = name;
    }
    /**
     * 
     * @return
     */
    public String getPassword() {
        return password;
    }
    /**
     * 
     * @param password
     */
    public void setPassword(String password) {
        this.password = password;
    }
    /**
     * 
     * @return
     */
    public String getId() {
        return id;
    }
    /**
     * 
     * @param id
     */
    public void setId(String id) {
        this.id = id;
    }
}

 次に、マッピングしたデータ取得を目的としたクラスを作成します。「PKG\Hello\WEB-INF\src」配下に「mapping」フォルダを作成して「form」フォルダに、「Mapping.java」を作成します。

Mapping.java
package mapping;
 
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
 
public class Mapping {
    public static Session getSession() {
       Configuration config = new Configuration().configure();
       SessionFactory sessionFactory = config.buildSessionFactory();
       Session session = sessionFactory.openSession();
       return session;
    }
}

 最後に、「C:\PKG\Hello\WEB-INF」配下の「struts-config.xml」を以下のように編集します。

struts-config.xml
<?xml version="1.0" encoding="Shift_JIS" ?>
<!DOCTYPE struts-config PUBLIC
  "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
  "http://struts.apache.org/dtds/struts-config_1_3.dtd">
<struts-config>
  <!-- =================================== Form Bean Definitions -->
  <form-beans>
    <form-bean name="HelloForm" type="hello.form.HelloForm" />
    <form-bean name="LoginForm" type="login.form.LoginForm" />
<!-- ここから追加 -->
    <form-bean name=" LoginORForm" type="login.form.LoginORForm" />
<!-- ここまで追加 -->
  </form-beans>
  <!-- ============================ Global Exception Definitions -->
  <global-exceptions></global-exceptions>
  <!-- ============================== Global Forward Definitions -->
  <global-forwards></global-forwards>
  <!-- ============================== Action Mapping Definitions -->
  <action-mappings>
    <action attribute="HelloForm" input="/pages/Who.jsp" 
      name="HelloForm" path="/hello" type="hello.HelloAction"
      scope="session" validate="true">
      <forward name="success" path="/pages/Hello.jsp" />
    </action>
    <action
      attribute="LoginForm"
      input="/pages/Login01.jsp"
      name="LoginForm"
      path="/Login"
      type="login.LoginAction"
      scope="session"
      validate="true">
      <forward name="success" path="/pages/Login02.jsp" />
    </action>
<!-- ここから追加 -->
    <action
      attribute="LoginORForm"
      input="/pages/LoginOR.jsp"
      name=" LoginORForm"
      path="/LoginOR"
      type="login.LoginORAction"
      scope="session"
      validate="true">
      <forward name="success" path="/pages/Success.jsp" />
    </action>
<!-- ここまで追加 -->
  </action-mappings>
  <!-- ========================== Message Resources Definitions -->
  <!-- ================================= Plug Ins Configuration -->
  <!-- =========================================== Tiles plugin -->
  <!-- ======================================= Validator plugin -->
</struts-config>

 これで、サンプルのソースコードソースおよび設定ファイルの編集は完了です。

設定ファイルが多いと思うのは1度だけ

 完成したサンプルを実行してみましょう。連載第2回の「Strutsの常識を知り、EclipseとTomcatの環境構築」のときと同様に、Eclipseを起動します。次に、[プロジェクト・エクスプローラー]の「Hello」を選択して右クリックをして、[リフレッシュ]を選択します。Eclipseで[プロジェクト]の[クリーン]を選択して、Helloプロジェクトのコンパイルが完了したら、Eclipse上から「Tomcat起動」アイコン(猫マーク)を押して、Tomcatを起動してください。

 正常に起動したことを確認したら、Webブラウザで「http://localhost:8080/hello/pages/LoginOR.jsp」にアクセスしてください。すると、下記のような画面が表示されます。

図3 サンプル起動画面 図3 サンプル起動画面

 前回の記事で登録した、IDとパスワードを入力してログインボタンを押してください。

図4 サンプルの実行 図4 サンプルの実行

 すると、前回と同様にDBに登録した情報(name)を取得して画面に表示しているのが、分かると思います。

 今回は、新規の組み込み作業からだったので、前回より設定ファイルが多いと感じるかもしれませんが、次からActionクラスを作成するだけでuserテーブルから情報を取得できるようになり、効率化が図れます。

 今回作成したサンプルは、こちらからダウンロードできます。

プロフィール

眞野 寿彦(まの としひこ)
株式会社メセナ・ネットコム所属

SEとして充実した日々を送っている。現在はStrutsを使ったWebアプリケーション開発を担当中。「信頼されるプロジェクトマネジャー」を目指し、自分に必要なことを常に考え、行動し、「真の技術者」として日々成長している。

趣味はボウリング、ビリヤード、ダーツ
尊敬する人はティム・バーナーズ=リー



前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。