|
JSPのuseBeanで、JavaBeans以外のクラスを扱う
テンアートニ 中越智哉
2001/6/27
|
|
JSPのuseBeanタグを使うと、ページ内で使用するBeanを定義することができます。このuseBeanタグでは、実はBeansだけでなく通常のJavaのオブジェクトの使用も定義できます。つまり、StringやVector、ExceptionなどもuseBeanタグによって取り出して使用することができます。
取り出したオブジェクトは、ScriptletやExpressionのタグ内で、id属性で宣言した名前を使い通常の変数と同様に利用することも可能です。
ですが、これらに対して<jsp:getProperty>や<jsp:setProperty>を使用する場合は、当然ながらそのプロパティに対応したアクセサメソッド(getXXX、setXXXメソッド)が定義されている必要があります。
以下に、String、Vector、Exceptionをリクエストに格納するサーブレット、およびリクエストに格納されたオブジェクトを取り出すJSPを紹介しますので、参考にしてください。
リスト1 String、Vector、Exceptionをリクエストに格納するサーブレット |
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class SampleServlet extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException,IOException
{
String str = "文字列のサンプル";
Vector vec = new Vector();
vec.addElement("要素1つ目");
vec.addElement("要素2つ目");
vec.addElement("要素3つ目");
Exception ex = new Exception("例外サンプルです");
request.setAttribute("obj1",str);
request.setAttribute("obj2",vec);
request.setAttribute("obj3",ex);
ServletContext context = getServletContext();
RequestDispatcher rd =
context.getRequestDispatcher("/sample.jsp");
rd.forward(request,response);
}
} |
リスト2 リクエストに格納されたオブジェクトを取り出すJSP |
<html>
<head>
<%@ page contentType="text/html;charset=Shift_JIS" %>
<jsp:useBean id="obj1" class="java.lang.String"
scope="request"/>
<jsp:useBean id="obj2" class="java.util.Vector"
scope="request"/>
<jsp:useBean id="obj3" class="java.lang.Exception"
scope="request"/>
<title>JSP Tips</title>
</head>
<body>
<h1>JSP Tips Sample</h1>
<p>obj1の値は、「<%= obj1 %>」</p>
<p>obj2の内容は、
<ul>
<li>「<%= obj2.elementAt(0) %>」
<li>「<%= obj2.elementAt(1) %>」
<li>「<%= obj2.elementAt(2) %>」
</ul>
</p>
<p>obj3のメッセージは、「<%= obj3.getMessage() %>」</p>
</body>
</html>
|