jsp:useBeanの使い方
いくつかの使い方がありますが、以下に一つ一つ説明します.
1》
< %@page import="MyBean.*"%>
生成されたjavaコードは次のとおりです.
まずsessionの範囲内からuser属性が存在するかどうかを検索し、存在しない場合、user=new MyBean.TestBean()は、userをセッションに追加します.存在するなら、何もしない.
2》
< %@page import="MyBean.*"%>
生成されたjavaコードは次のとおりです.
BaseBeanはTestBeanの親です.
userのタイプがBaseBeanであることを除いて、他の処理ロジックは1と同じである.
3》
< %@page import="MyBean.*"%>
生成されたjavaコードは次のとおりです.
と2』の違いは以下の通りです.
1>newキーを使用する作成ではなくBeansを使用する.instantiateオブジェクトをロードしてインスタンス化する
2>オブジェクトの作成後に強制型変換が行われました(MyBean.BaseBean)
4》
<
%@page import="MyBean.*"%>
生成されたjavaコードは次のとおりです.
まずsession範囲内からuser属性を検索し,存在しない場合は異常を直接投げ出し,存在する場合は直接参照する.
1》
< %@page import="MyBean.*"%>
生成されたjavaコードは次のとおりです.
MyBean.TestBean user = null;
synchronized (session) {
user = (MyBean.TestBean) _jspx_page_context.getAttribute("user", javax.servlet.jsp.PageContext.SESSION_SCOPE);
if (user == null){
user = new MyBean.TestBean();
_jspx_page_context.setAttribute("user", user, javax.servlet.jsp.PageContext.SESSION_SCOPE);
}
}
まずsessionの範囲内からuser属性が存在するかどうかを検索し、存在しない場合、user=new MyBean.TestBean()は、userをセッションに追加します.存在するなら、何もしない.
2》
< %@page import="MyBean.*"%>
生成されたjavaコードは次のとおりです.
BaseBean user = null;
synchronized (session) {
user = (BaseBean) _jspx_page_context.getAttribute("user", javax.servlet.jsp.PageContext.SESSION_SCOPE);
if (user == null){
user = new MyBean.TestBean();
_jspx_page_context.setAttribute("user", user, javax.servlet.jsp.PageContext.SESSION_SCOPE);
}
}
BaseBeanはTestBeanの親です.
userのタイプがBaseBeanであることを除いて、他の処理ロジックは1と同じである.
3》
< %@page import="MyBean.*"%>
生成されたjavaコードは次のとおりです.
MyBean.BaseBean user = null;
synchronized (session) {
user = (MyBean.BaseBean) _jspx_page_context.getAttribute("user", javax.servlet.jsp.PageContext.SESSION_SCOPE);
if (user == null){
try {
user = (MyBean.BaseBean) java.beans.Beans.instantiate(this.getClass().getClassLoader(), "MyBean.TestBean");
} catch (java.lang.ClassNotFoundException exc) {
throw new InstantiationException(exc.getMessage());
} catch (java.lang.Exception exc) {
throw new javax.servlet.ServletException("Cannot create bean of class " + "MyBean.TestBean", exc);
}
_jspx_page_context.setAttribute("user", user, javax.servlet.jsp.PageContext.SESSION_SCOPE);
}
}
と2』の違いは以下の通りです.
1>newキーを使用する作成ではなくBeansを使用する.instantiateオブジェクトをロードしてインスタンス化する
2>オブジェクトの作成後に強制型変換が行われました(MyBean.BaseBean)
4》
<
%@page import="MyBean.*"%>
生成されたjavaコードは次のとおりです.
MyBean.BaseBean user = null;
synchronized (session) {
user = (MyBean.BaseBean) _jspx_page_context.getAttribute("user", javax.servlet.jsp.PageContext.SESSION_SCOPE);
if (user == null){
throw new java.lang.InstantiationException("bean user not found within scope");
}
}
まずsession範囲内からuser属性を検索し,存在しない場合は異常を直接投げ出し,存在する場合は直接参照する.