Application对象
application由服务器负责创建,
每个Web服务目录下的application对象被访问该服务目录的所有的用户共享,
但不同Web服务目录下的application互不相同.
(1) public void setAttribute(String key ,Object obj)
application对象可以调用该方法将参数Object 指定的对象 obj添加到application对象中,并为添加的对象指定了一个索引关键字。
(2) public Object Attribute(String key)
获取application对象含有的关键字是key的对象。
Vector线程安全的list
application数据类型:ServletContext application;
中文乱码问题:
<%! public String handleStr(String s) { try { byte [] bb= s.getBytes("iso-8859-1"); s = new String(bb,"gb2312"); } catch(Exception exp){} return s; } %> |
Synchronized线程同步,防止互相打扰
Option与text中的value值一样处理
JavaBean
1. 如果类的成员变量的名字是xxx,类中提供两个方法:
getXxx(),用来获取属性xxx。
setXxx(),用来修改属性xxx.。
后缀是将成员变量名字的首字母大写的字符序列。
- 对于boolean类型的成员变量,即布尔逻辑类型的属性,允许使用“is”代替上面的“get”和“set”。
- 类中声明的方法的访问属性都必须是public的。
- 类中需提供public、无参数的构造方法。
Src下建立包
使用bean
使用JSP动作标记:useBean,来加载使用bean。useBean标记的语法格式:
<jsp:useBean id="bean的名字" class="创建beans的字节码" scope="bean有效范围"/>
或
<jsp:useBean id= "bean的名字" class="创建beans的类" scope= "bean有效范围">
</jsp:useBean>
例如:
<jsp:useBean id="circle" class="tom.jiafei.Circle" scope="page" />
根据JSP动作标记给出的bean的id,以及scope,查找JSP引擎内置pageContext对象中是否含有这样的bean
bean的有效范围(生命周期): scope取值page、request、session、application
bean.getXXX()等价于 jsp:get/setProperty name=”” value=
获取和修改beans的属性
getProperty、setProperty标记获取或修改属性xxx时,必须保证bean有相应的getXxx和setXxx方法
<jsp:getProperty name="id" property="bean属性" />
<%= bean.getXxx() %>
<jsp:setProperty name=“id" property="bean的属性" value= "<%=expression%>"/>
通过HTTP表单的参数的值来设置bean的相应属性的值
用HTTP表单的所有参数的值设置bean相对应的属性的值:
<jsp:setProperty name= "id" property="*" />
用HTTP表单的某个参数的值设置bean的某个属性的值
<jsp:setProperty name= “bean的名字” property=“bean属性名” param= “表单中的参数名” />
4.3 beans的辅助类
除了需要用import语句引入JDK平台提供的类,可能还需要其它自己编写的一些类。
将源文件编译后产生的全部字节码文件复制到相应的目录
实验
实验4_1 有效范围为request的bean
编写一个JSP页面inputAndShow.jsp和一个名字为car的Javabean,其中car由Car.class类负责创建。
- inputAndShow.jsp的具体要求
inputAndShow.jsp页面提供一个表单,其中表单允许用户输入汽车的牌号、名称和生产日期,该表单将用户输入的信息提交给当前页面,当前页面调用名字为car的bean,并使用表单提交的数据设置car的有关属性的值,然后显示car的各个属性的值。
- Car.java的具体要求
编写的Car.java应当有刻画汽车号码、名称和生产日期的属性,并提供相应的getXxx和setXxx方法来获取和修改这些属性的值。Car.java中使用package语句,包名是tom.jiafei。将Car.java编译后的字节码文件Car.class保存到Web服务目录的下列子目录中:
\WEB-INF\classes\tom\jiafei
Debug:
Get Set快捷键:alt + shift + s
存储Bean属性值,需要设置属性名,bean名<jsp:setProperty property="*" name="car"/>
输出:getProperty
<!-- inputAndShhow.jsp -->
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%-- <%@page import="tom.jiafei.Car" %> --%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'inputAndShow.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
This is my JSP page. <br>
<jsp:useBean id="car" class="tom.jiafei.Car" scope="request"></jsp:useBean>
<form action="" method="get">
车牌号<input type="text" name="number">
<br>
名称<input type="text" name="name">
<br>
生产日期<input type="text" name="madeDate">
<br>
<input type="submit" value="提交">
</form>
<jsp:setProperty property="*" name="car"/>
<div>
车牌号<jsp:getProperty property="number" name="car"/>
<br>
名称<jsp:getProperty property="name" name="car"/>
<br>
生产日期<jsp:getProperty property="madeDate" name="car"/>
</div>
</body>
</html>
/*car.java*/
package tom.jiafei;
public class Car {
String number;
String name;
String madeDate;
public String getMadeDate() {
return madeDate;
}
public void setMadeDate(String madeDate) {
this.madeDate = madeDate;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
实验4_2 有效范围为session的bean
1.相关知识点
JSP页面使用useBean标记调用一个有效范围是session的bean:
<jsp:useBean id= "名字" class="创建bean的类" scope= "session"/>
本实验要求和实验4_1类似,但是与实验4_1不同的是,要求编写两个JSP页面input.jsp和show.jsp。
input.jsp的具体要求
input.jsp页面提供一个表单,其中表单允许用户输入汽车的牌号、名称和生产日期,该表单将用户输入的信息提交给当前页面,当前页面调用名字为car的bean,并使用表单提交的数据设置car的有关属性的值。要求在input.jsp提供一个超链接,以便用户单击这个超链接访问show.jsp页面。
show.jsp的具体要求
show.jsp调用名字为car的bean,并显示该bean的各个属性的值。
代码:
改变inputAndShow.jsp中scope
<jsp:useBean id="car" class="tom.jiafei.Car" scope="session"></jsp:useBean>