关于JSP里JavaBean的用法分析:我们可以使用Scriptlet的方式: <%! %> / <% %>
还可以用<jsp:useBean>的方式//bean.HelloBean.java:
package bean;
public class HelloBean {
private String str;
public void setStr(String s)
{
str = s;
}
public String getStr()
{
return str;
}
}
//index.jsp
<%@page import="bean.HelloBean"%>
<html>
<body>
<%!bean.HelloBean memBean = new bean.HelloBean();%>
<%memBean.setStr("memBean!!"); %>
<%=memBean.getStr()%>
<%bean.HelloBean partBean = new bean.HelloBean();%>
<%partBean.setStr("partBean!!"); %>
<%=partBean.getStr()%>
<jsp:useBean id="pageBean" scope="page" class="bean.HelloBean">
</jsp:useBean>
<%pageBean.setStr("pageBean!!"); %>
<%=pageBean.getStr()%>
<jsp:useBean id="requestBean" scope="request" class="bean.HelloBean">
</jsp:useBean>
<%requestBean.setStr("pageBean!!"); %>
<%=pageBean.getStr()%>
<jsp:useBean id="sessionBean" scope="session" class="bean.HelloBean">
</jsp:useBean>
<%sessionBean.setStr("pageBean!!"); %>
<%=sessionBean.getStr()%>
<jsp:useBean id="appBean" scope="application" class="bean.HelloBean">
</jsp:useBean>
<%sessionBean.setStr("appBean!!"); %>
<%=sessionBean.getStr()%>
</body>
</html>
jsp:useBean各项参数含义:id:对象实例名称scope:Bean作用的范围,
默认为page,对整个jsp页面有效
Scope各项参数的意义:page:仅涵盖使用JavaBean的页面(PageBean.jsp/CounterBean.java)
request:有效范围仅限于使用JavaBean的请求(RequestBean.jsp/RequestBean2.jsp/CounterBean.java)
session:有效范围在用户整个连接过程中(整个会话阶段均有效)(SessionBean.jsp/Session2.jsp/CounterBean.java)
application:有效范围涵盖整个应用程序。也就是对整个web应用均有效(Application.jsp/Application2.jsp/CounterBean.java)
//然后我们去到Tomcat的work目录下查看jsp被编译生成的java文件:
/* * Generated by the Jasper component of Apache Tomcat * Version: Apache Tomcat/7.0.22 * Generated at: 2011-11-02 01:36:52 UTC * Note: The last modified time of this file was set to * the last modified time of the source file after * generation to assist with modification tracking. */ package org.apache.jsp; import javax.servlet.*; import javax.servlet.http.*; import javax.servlet.jsp.*; import bean.HelloBean; public final class index_jsp extends org.apache.jasper.runtime.HttpJspBase implements org.apache.jasper.runtime.JspSourceDependent { bean.HelloBean memBean = new bean.HelloBean(); //<%!bean.HelloBean memBean = new bean.HelloBean();%> <%! %> 使这个bean变量这个类的成员变量 private static final javax.servlet.jsp.JspFactory _jspxFactory = javax.servlet.jsp.JspFactory.getDefaultFactory(); private static java.util.Map<java.lang.String,java.lang.Long> _jspx_dependants; private javax.el.ExpressionFactory _el_expressionfactory; private org.apache.tomcat.InstanceManager _jsp_instancemanager; public java.util.Map<java.lang.String,java.lang.Long> getDependants() { return _jspx_dependants; } public void _jspInit() { _el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory(); _jsp_instancemanager = org.apache.jasper.runtime.InstanceManagerFactory.getInstanceManager(getServletConfig()); } public void _jspDestroy() { } public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response) throws java.io.IOException, javax.servlet.ServletException { final javax.servlet.jsp.PageContext pageContext; javax.servlet.http.HttpSession session = null; final javax.servlet.ServletContext application; final javax.servlet.ServletConfig config; javax.servlet.jsp.JspWriter out = null; final java.lang.Object page = this; javax.servlet.jsp.JspWriter _jspx_out = null; javax.servlet.jsp.PageContext _jspx_page_context = null; try { response.setContentType("text/html"); pageContext = _jspxFactory.getPageContext(this, request, response, null, true, 8192, true); _jspx_page_context = pageContext; application = pageContext.getServletContext(); config = pageContext.getServletConfig(); session = pageContext.getSession(); out = pageContext.getOut(); _jspx_out = out; out.write("\r\n"); out.write("<html>\r\n"); out.write(" <body>\r\n"); out.write("\r\n"); out.write(" "); out.write("\r\n"); out.write(" "); memBean.setStr("memBean!!"); out.write("\r\n"); out.write(" "); out.print(memBean.getStr()); out.write("\r\n"); out.write(" \r\n"); out.write(" "); bean.HelloBean partBean = new bean.HelloBean(); //<%bean.HelloBean partBean = new bean.HelloBean();%> <% %>使bean成为了类的成员函数的局部变量 out.write("\r\n"); out.write(" "); partBean.setStr("partBean!!"); out.write("\r\n"); out.write(" "); out.print(partBean.getStr()); out.write("\r\n"); out.write(" \r\n"); out.write(" "); bean.HelloBean pageBean = null; //<jsp:useBean id="pageBean" scope="page" class="bean.HelloBean"> pageBean = (bean.HelloBean) _jspx_page_context.getAttribute("pageBean", javax.servlet.jsp.PageContext.PAGE_SCOPE); if (pageBean == null){ pageBean = new bean.HelloBean(); _jspx_page_context.setAttribute("pageBean", pageBean, javax.servlet.jsp.PageContext.PAGE_SCOPE); out.write("\r\n"); out.write(" "); } out.write("\r\n"); out.write(" \r\n"); out.write(" "); pageBean.setStr("pageBean!!"); out.write("\r\n"); out.write(" "); out.print(pageBean.getStr()); out.write("\r\n"); out.write(" \r\n"); out.write(" \t"); bean.HelloBean requestBean = null; //<jsp:useBean id="requestBean" scope="request" class="bean.HelloBean"> requestBean = (bean.HelloBean) _jspx_page_context.getAttribute("requestBean", javax.servlet.jsp.PageContext.REQUEST_SCOPE); if (requestBean == null){ requestBean = new bean.HelloBean(); _jspx_page_context.setAttribute("requestBean", requestBean, javax.servlet.jsp.PageContext.REQUEST_SCOPE); out.write("\r\n"); out.write(" "); } out.write("\r\n"); out.write(" \r\n"); out.write(" "); requestBean.setStr("pageBean!!"); out.write("\r\n"); out.write(" "); out.print(pageBean.getStr()); out.write("\r\n"); out.write(" \r\n"); out.write(" "); bean.HelloBean sessionBean = null;// <jsp:useBean id="sessionBean" scope="session" class="bean.HelloBean"> synchronized (session) { sessionBean = (bean.HelloBean) _jspx_page_context.getAttribute("sessionBean", javax.servlet.jsp.PageContext.SESSION_SCOPE); if (sessionBean == null){ sessionBean = new bean.HelloBean(); _jspx_page_context.setAttribute("sessionBean", sessionBean, javax.servlet.jsp.PageContext.SESSION_SCOPE); out.write("\r\n"); out.write(" "); } } out.write("\r\n"); out.write(" \r\n"); out.write(" "); sessionBean.setStr("pageBean!!"); out.write("\r\n"); out.write(" "); out.print(sessionBean.getStr()); out.write("\r\n"); out.write(" \r\n"); out.write(" "); bean.HelloBean appBean = null; // <jsp:useBean id="appBean" scope="application" class="bean.HelloBean"> synchronized (application) { appBean = (bean.HelloBean) _jspx_page_context.getAttribute("appBean", javax.servlet.jsp.PageContext.APPLICATION_SCOPE); if (appBean == null){ appBean = new bean.HelloBean(); _jspx_page_context.setAttribute("appBean", appBean, javax.servlet.jsp.PageContext.APPLICATION_SCOPE); out.write("\r\n"); out.write(" "); } } out.write("\r\n"); out.write(" \r\n"); out.write(" "); sessionBean.setStr("appBean!!"); out.write("\r\n"); out.write(" "); out.print(sessionBean.getStr()); out.write("\r\n"); out.write(" \r\n"); out.write(" </body>\r\n"); out.write("</html>\r\n"); } catch (java.lang.Throwable t) { if (!(t instanceof javax.servlet.jsp.SkipPageException)){ out = _jspx_out; if (out != null && out.getBufferSize() != 0) try { out.clearBuffer(); } catch (java.io.IOException e) {} if (_jspx_page_context != null) _jspx_page_context.handlePageException(t); } } finally { _jspxFactory.releasePageContext(_jspx_page_context); } } }