ドミノのデータを Bean化して、MVC パターンを使用して サーブレットでアクセス/データを
Bean に格納/ JSP で表示 というかたちでドミノのアプリケーションを作成することもできます。
以前、JDBC でのデータベースアクセスに対して似たようなものを作成してみたことがありますが、今回もちょっとクラスの構成が異なっていますが結構流用して同じように作ってみています。
Java でドミノのアプリケーションを作る際のひとつのやりかたでしょうから、ちょっとかんたんにご紹介していきます。
ドミノのデータを格納する Bean です。 (DomCustBean.java)
public class DomCustBean {
private String _custID;
private String _custName;
private String _custAddr;
private int _sales;
public String getCustID() {
return _custID;
}
public String getCustName() {
return _custName;
}
public String getCustAddr() {
return _custAddr;
}
public int getSales() {
return _sales;
}
public void setCustID(String newCustID) {
_custID = newCustID;
}
public void setCustName(String newCustName) {
_custName = newCustName;
}
public void setCustAddr(String newCustAddr) {
_custAddr = newCustAddr;
}
public void setSales(int newSales) {
_sales = newSales;
}
}
検索対象のキーを受け取って、ドミノのデータを Bean に格納し、それを Request オブジェクトの Attribute にセットして JSP にフォワードするサーブレットです。 (DomCustServlet.java)
import javax.servlet.http.*;
import javax.servlet.*;
import java.io.*;
import lotus.domino.*;
public class DomCustServlet extends HttpServlet {
public DomCustServlet() { }
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
doService(req, res); }
public void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
doService(req, res); }
public void init()
throws ServletException {
super.init();
// System.out.println("init");
}
public void doService(HttpServletRequest req, HttpServletResponse res)
{
try {
System.out.println("Going to create session");
String server = req.getServerName();
String user = req.getParameter("user");
String password = req.getParameter("password");
Session session = NotesFactory.createSession(server, user, password);
Database db = session.getDatabase("", "UDBTest.nsf");
View view = db.getView("All");
String key = req.getParameter("CustID");
Document doc = view.getDocumentByKey(key);
System.out.println("key is " + key);
DomCustBean dcb = new DomCustBean();
if (doc != null) {
dcb.setCustID(doc.getItemValueString("CustID"));
dcb.setCustName(doc.getItemValueString("CustName"));
String text3 = doc.getItemValueString("CustAddr");
int index = text3.indexOf(" ");
String text4 = text3.substring(0, index);
String text5 = text3.substring((index + 1), (text3.length() - index));
dcb.setCustAddr(text5);
int number = doc.getItemValueInteger("Sales");
dcb.setSales(number);
System.out.println("All set");
req.setAttribute("DominoItem", dcb);
}
RequestDispatcher rd = getServletContext().getRequestDispatcher("/showDominoItem.jsp");
rd.forward(req, res);
session.recycle();
}
catch (NotesException e) {
System.out.println("Exception when create session");
System.out.println(e.id + " " + e.text + "occured");
e.printStackTrace();
}
catch (Throwable te) {
System.out.println("Exception (Non-Domino)");
te.printStackTrace();
}
}
}
サーブレットからフォワードされ、Bean を表示する JSP ファイルです。(showDominoItem.jsp)
<HTML>
<HEAD>
<TITLE>得意先情報</TITLE>
</HEAD>
<%@ page contentType="text/html;charset=Shift_JIS" %>
<%@ page language="java" %>
<jsp:useBean id="DominoItem" scope="request" class="DomCustBean" />
<BODY>
<H1>得意先情報内容</H1>
<TABLE border="1" cellspacing="0">
<TR>
<TH>得意先番号</TH>
<TH>得意先名</TH>
<TH>住所</TH>
<TH>売上</TH>
</TR>
<TR>
<TD><jsp:getProperty name="DominoItem" property="custID" /></TD>
<TD><jsp:getProperty name="DominoItem" property="custName" /></TD>
<TD><jsp:getProperty name="DominoItem" property="custAddr" /></TD>
<TD><jsp:getProperty name="DominoItem" property="sales" /></TD>
</TR>
</TABLE>
</BODY>
</HTML>
それぞれを適切なところにデプロイします。
いつものことですが、例としては今回も面倒なのでデフォルトのアプリケーションに置いています。要はただコピーしているだけです。以下の例を参照してください。(iSeries
の IFS をネットワークドライブに割り当てて、WAS のデプロイ済みの default_app.war
ファイルの中にコピーしているだけです。いちいち AAT を使うのはやはり面倒ですよね
...)
サーブレットと Bean は war ファイルの /WEB-INF/classes にコピーします。

JSP ファイルは war ファイルの直下にコピーします。

ほんとはアクセス用のフォームでも作るといいのですが、とりあえず結果が正しいかどうか確かめられればいいのでサーブレットのパラメータにキーも含めて渡して実行結果を確かめています。
アクセス用のフォームはドミノで簡単に作れますね。こちらをちょっと参考にしてみてください。
これがその結果です。
