目录
- 2.JavaBean的jsp动作标签
- 2.1 声明JavaBean对象
- 2.2设置JavaBean属性值
- 2.3 获取JavaBean属性值并显示
- 应用:3. 网页计数器JavaBean的设计与使用
- 4.基于JavaBean+jsp求任意两个数的和
2.JavaBean的jsp动作标签
基本有:<jsp:useBean> 声明并创建JavaBean对象实例
<jsp:setProperty> 对JavaBean对象的指定属性设置值 <jsp:getProperty> 获取JavaBean对象指定属性的值,并显示在网页上
2.1 声明JavaBean对象
声明格式<jsp:useBean id="对象名" class="类名" scope="有效范围"/>
class属性:用来指定类名,必须使用完全限定类名(包名.类名)
id属性 :指定所有创建的对象名称。
scope属性:指定对象的作用范围(page request session application)
不写默认为page
<jsp:useBean id="c" class="beans.Add" scope="session"/>
2.2设置JavaBean属性值
使用<jsp:setProperty>
动作标签
(1) 简单属性设置<jsp:setProperty name="beanname" property="propertyname "balue="beanvalue"/>
beanname代表对象名,对应useBean中的id。beanvalue是要设置的值,propertyname代表属性名字。
<jsp:setProperty name="c" property="shuju1" value="0"/>
在jsp脚本代码中可以这样设置属性值
<jsp:useBean id="c" class="beans.Add" scope="session"/>
<%
c.setShuju1(10);
c.setShuju2(20);
%>
(2)将单个属性与输入参数直接关联
直接给JavaBean实例中同名属性赋值
<jsp:setProperty name="beanname" property="propertyname"/>
功能:将参数名称为propertyname的值交给同JavaBean属性名称同名的属性,自动实行数据类型转换。
(3)…将单个属性与输入参数间接关联…
若属性与请求参数的名称不同,则可以通过JavaBean属性与请求参数之间的间接关联实现赋值。
<jsp:setProperty name="beanname" property="propertyname" param="paramname"/>
功能:将请求参数名称为paramname的值给propertyname属性值
(4).将所有属性与请求参数关联
将所有的属性与请求参数关联实现自动赋值并自动转换数据类型
<jsp:setProperty name="beanname" property="*"/>
功能:将提交页面表单输入域所有提供的输入值提交到JavaBean对象同名属性的值中。
2.3 获取JavaBean属性值并显示
<jsp:getProperty name="c" property="sum"/>
应用:3. 网页计数器JavaBean的设计与使用
类:
package beans;
public class Counter
{
private int count;
public Counter() {}
public int getCount()
{
count++;
return count;
}
public void setCount(int count)
{
this.count = count;
};
}
两个jsp显示页面
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<html>
<head><title>第一个页面</title></head>
<body>
<jsp:useBean id="counter" scope="application" class="beans.Counter"/>
<h1>这次访问的是counter11111111!!!</h1><br>
<h2>两页面共被访问的次数: <jsp:getProperty name="counter" property="count"/></h2>
</body>
</html>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<html>
<head><title>第一个页面</title></head>
<body>
<jsp:useBean id="counter" scope="application" class="beans.Counter"/>
<h1>这次访问的是counter222222222222!!!</h1><br>
<h2>两页面共被访问的次数: <jsp:getProperty name="counter" property="count"/></h2>
</body>
</html>
为什么用application不同session
application是直到服务器关闭才结束,session是直到浏览器关闭,
如果用session 的话 网页访问数目不会改变刷新完就又到0了。
4.基于JavaBean+jsp求任意两个数的和
input.jsp:
<%@ page language="java" pageEncoding="UTF-8" import="java.util.*" %>
<html>
<head> <title>输入页面</title> </head>
<boby>
<form action="Show.jsp" method="post">
加数 <input name="shuju1"><br>
被加数 <input name="shuju2"><br>
<input type=submit value="提 交">
</form>
</boby>
</html>
show.jsp
<%@ page language="java" pageEncoding="UTF-8" import="java.util.*" %>
<html>
<head> <title>JavaBean+JSP求和 显示页面</title> </head>
<boby>
<jsp:useBean id="c" class="beans.Add" scope="request"/>
<jsp:setProperty name="c" property="*"/>
调用jsp:getPropetry 作标签显示结果值:<br>
<jsp:getProperty name="c" property="shuju1"/>+
<jsp:getProperty name="c" property="shuju2"/>=
<jsp:getProperty name="c" property="sum"/>
</boby>
</html>
Add.java
package beans;
public class Add
{
private int shuju1;
private int shuju2;
private int sum;
public Add() {}
public int getShuju1() {
return shuju1;
}
public void setShuju1(int shuju1) {
this.shuju1 = shuju1;
}
public int getShuju2() {
return shuju2;
}
public void setShuju2(int shuju2) {
this.shuju2 = shuju2;
}
public int getSum() {
return shuju1+shuju2;
}
public void setSum(int sum) {
this.sum = sum;
}
}