关于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);
}
}
}