一、 什么是JavaBean
a) 必须有有一个public的无参数构造函数(默认构造函数)。
b) 属性可以通过get、set、is(可以替代get,用在布尔型属性上)方法或遵循特定命名规范的其他方法访问。
c) 可序列化。
d) JavaBean的优点:一种可重用的组件技术。
二、 标准动作用于
a) 将 JavaBean 嵌入 JSP 页面
b) 设置和获取 JavaBean 的属性值
c) 将用户请求转发(forward)给其他页面
d) 将其他页面的内容嵌入(include)当前页面
e) JSP标准动作标签使用jsp:xxxx作为前缀
三、 标准动作
. jsp:userBean创建Bean实例
<jsp:userBean id=”对象变量名BeanID” class=”JavaBean类名” scope=”将对象存储在作用域中(page,request,session,application)”>
i. jsp:userBean动作将创建一个实例以BeanID存储在作用域中,如果作用域中已经存在这个BeanID的实例,那么jsp:userBean动作将不会重复创建Bean实例。
说明如下a.jsp和b.jsp两个页面:
A. a.jsp:
<jsp:useBean id=”mybean” class=”com.xyz.MyBean” scope=”request”/>
当从a.jsp转发到b.jsp。
B. b.jsp:
<jsp:useBean id=”mybean” class=”com.xyz.MyBean” scope=”request”/>
这时在b.jsp中不会在创建mybean对象,因为在request中已经存在了一个ID为mybean的Bean实例。
示例:
<jsp:useBean id=”employee” class=”com.employee.Employee” scope=”request”/>
2. jsp:setProperty为Bean属性赋值
<jsp:setProperty property=“ename” name=“employee” param=“ename”/>
可以使用param属性从请求参数中获得参数值,并将请求参数值设置到Bean对象的ename属性。
3. jsp:getProperty获得Bean属性值
<jsp:getProperty property=“empno” name=“employee”/>
获得Bean对象employee的empno属性值。
注意:能够通过jsp:getProperty和jsp:setProperty访问的JavaBean的属性必须要有getter和setter方法,JavaBean如果没有getter和setter方法,那么无法访问这个属性。实际上jsp:getProperty和jsp:setProperty动作是通过调用JavaBean的getter和setter方法用访问属性的。
注意:<jsp:userBean >创建的对象可以在<% %>脚本代码中使用。如下:
<jsp:useBean id=”empDao” class=”com.employee.EmployeeDao” scope=”request”/>
<%
//使用useBean动作创建的对象”empDao”
List list = empDao.query(….);
%>
<jsp:useBean scope=””>动作可用的作用域scope属性可用值有:
四、 jsp:forward
jsp:forward标准动作:用来实现请求的转发操作,与通过编码request.getRequestDispatcher(“URL”).forward(request, response); 效果一样。
五、 jsp:include
jsp:include动态包含标准动作:用来实现将另一个页面视图包含到当前页,被包含的页面会被单独的转换和编译,动态包含可以理解为一包含的类去调用被包含的类。与通过编码request.getRequestDispatcher(“URL”).include(request, response); 效果一样。
a) 可以使用<jsp:param …/>标签为jsp:include标签加入请求参数。
六、 jsp:param
jsp:param标准动作:为其它动作传递参数,如:jsp:include、<jsp:forward >动作。
示例1:
<jsp:forward page="include-demo.jsp">
<jsp:param value="james" name="username"/>
<jsp:param value="1111" name="password"/>
<jsp:param value="112233" name="validcode"/>
</jsp:forward>
示例2:
<jsp:include …..>
<jsp:param …..>
</jsp:include>
七、
uerBean.jsp:
<jsp:userBean id="emp" class="vo.Employee" scope="request"/>
<jsp:setProperty name="emp" property="empno" value="1122"/>
<jsp:setProperty name="emp" property="ename" value="${'jack'}"/>
<jsp:setProperty name="emp" property="job" value="${param.job}"/>
<jsp:setProperty name="emp" property="sal" param="sal">
<%
// 这样可以直接拿到uerBean创建的实例
request.getAttribute("emp")
// userBean创建的实例可以直接在java.scriptless小脚本中使用
emp.setEname("jack");
%>
<body>
<h3>
<pre>
${requestScope.emp.empno}
${emp.ename}
<jsp:getProperty name="emp" property="job" />
<%=emp.getSal()%>
</pre>
</h3>
</body>
</html>
<%--
<jsp:forward > 标准动作:用来实现请求的转发操作,
与通过编码request.getRequestDispatcher(“URL”).forward(request, response); 效果一样。
--%>
<jsp:forward page="target.jsp">
<jsp:param name="deptno" value="20"/>
</jsp:forward>
include.jsp:
指令<%@ include file="url" %>特点:
1.被包含页面不会单独转译或者编译成java和class文件
2.包含与被包含不能有相同变量名存在,否则会冲突报错
标签动作:jsp:include特点:
1.被包含页面会单独转译或者编译成java和class文件
2.包含与被包含可以存在相同变量名,不会冲突
例如:
```
<jsp:include page="useBean.jsp">
<jsp:param name="deptno" value="30"/>
</jsp:include>
```