全部博文(2065)
分类: Java
2010-01-25 21:33:01
JAVABEAN专题整理
[整理人: 整理时间:
一、JAVABEAN在JSP页面中使用
beanName="fully-qualified-beanName"
/>
一般放在JSP页面的头部。引入JAVABEAN类
说明:
id --对象的名字,就是JAVABEAN的名称
scope--一个可选择的属性,当你的javabean 对象将被破坏时,默认的是page。
page:指定了所创建的JavaBean实例只能够在当前的JSP文件中使用,包括在通过include指令静态包含的页面中有效。
request:指定了所创建的JavaBean实例可以在请求范围内进行存取。在请求被转发至的目标页面中可通过request对象的 getAttribute("id属性值")方法获取创建的JavaBean实例。一个请求的生命周期是从客户端向服务器发出一个请求到服务器响应这个请 求给用户后结束,所以请求结束后,存储在其中的JavaBean的实例也就失效了。
session:指定了所创建JavaBean的实例的有效范围为session。session是当用户访问Web应用时,服务器为用户创建的一个对象,服务器通过session的ID值来区分其他的用户。针对某一个用户而言,在该范围中的对象可被多个页面共享。
可以使用session对象的getAttribute("id属性值")方法获取创建的JavaBean实例。
application:该值指定了所创建的JavaBean的实例的有效范围从服务器启动开始到服务器关闭结束。application对象是在服务器 启动时创建的,它被多个用户共享。所以访问该application对象的所有用户共享存储于该对象中的JavaBean实例。
可以使用application对象的getAttribute("id属性值")方法获取创建的JavaBean实例。
type---对象的类型,可以是相同的类或父类或者是该类要执行的接口,他的参数是可选.
class --一个完全有资格的类。就是你创建的JAVABEAN完整类名称包括包名。
它必须具有公共的、没有参数的构造方法。
beanName--也是一个完全有资格。
beanName属性与type属性可以指定同一个类,在
如果想在多个页面中共享这个JavaBean实例,可以将scope属性设置为“session”。
在页面中使用
二、bean提取与设置其属性值
属性为:
name--你设置的
property --你想设置 的property的名字
param--你本property中要请求的param的名字。即HTML元素标签的VALUE元素名称
value ---在本property中你想设置的的新值
属性:
name--
property--你想找回的property的名字
三、实例
测试一个用户类代码如下:
package cn.ty;
public class Users {
private String userName;
private String passWord;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassWord() {
return passWord;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
}
}
JAVABEAN的代码如上!
用户注册页面的代码:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path =
request.getContextPath();
String basePath =
request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
DOCTYPE HTML PUBLIC "-//W
<html>
<head>
<base href="<%=basePath%>">
head>
<body>
用户注册页面<br>
<form action="regsave.jsp"
method="post">
name:<input type="text" name="userName">
<p>
pass:<input type="text" name="passWord">
<input type="submit" name="ok"
value="submit">
form>
body>
html>
其中的regsave.jsp
代码如下:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<jsp:useBean id="users" scope="request"
class="cn.ty.Users" beanName="cn.ty.Users"/>
引入JAVABEAN 定义其NAME与范围 -à
<jsp:setProperty name="users"
property="*"/>
将HTML标签与JAVABENA的属性相对应就可以自动全部赋完值 -à
<%
String path =
request.getContextPath();
String basePath =
request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
DOCTYPE HTML PUBLIC "-//W
<html>
<head>
<base href="<%=basePath%>">
head>
<body>
你提交的用户名:<jsp:getProperty name="users"
property="userName"/>
提取JAVABEAN中的属性值 -à
你提交的密码:<jsp:getProperty name="users"
property="passWord"/>
body>
html>
说明:在上面我们通过
<jsp:setProperty name="users"
property="*"/>
实现HTML元素标签与JAVABEAN属性名称的赋值。现在就可以直接提取JAVABEAN中的属性值出来方法如下:
你提交的用户名:<%=users.getUserName()%>
你提交的用户名:<jsp:getProperty name="users"
property="userName"/>
两种办法都可以!
情况二、如果HTML标签元素的名称与JAVABEAN的属性名称不一致的话
假如我们的注册页面是
name:
其中的HTML标签名称与JAVABEAN的名称不一致。解决的办法就得
其中的param就是我们的HTML中的表单名称了!
情况三、修改JAVABEAN的范围
将保存的页面的代码修正如下
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<jsp:useBean id="users" scope="page"
class="cn.ty.Users" beanName="cn.ty.Users"/>
<jsp:setProperty name="users"
property="*"/>
<jsp:setProperty name="users"
property="userName" param="userNames"/>
<%
String path =
request.getContextPath();
String basePath =
request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
DOCTYPE HTML PUBLIC "-//W
<html>
<head>
<base href="<%=basePath%>">
head>
<body>
<% if ( "root".equalsIgnoreCase(users.getUserName()))
{ %>
<jsp:forward page="succ.jsp">jsp:forward>
<% }else { %>
<jsp:forward page="fail.jsp">jsp:forward>
<% } %>
body>
html>
情况一、JAVABEAN的属性范围为page表示只限于此页面才生效
succ.jsp 代码如下
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<jsp:useBean id="users" scope="page"
class="cn.ty.Users" beanName="cn.ty.Users"/>
<%
String path =
request.getContextPath();
String basePath =
request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
DOCTYPE HTML PUBLIC "-//W
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'succ.jsp' starting pagetitle>
<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">
head>
<body>
成功你的名称为:<%= users.getUserName() %>
body>
html>
到这里这个BEAN其实是失效了。所以取出来的值就是NULL。
情况二、JAVABEAN的属性范围为request表示只限于一次C/S请求
到其他的页面还生效
情况三、将值设置到一个SESSION中
与情况二一样
其中后三者的生存时间
application 生命周期在整个应用程序中 生命周期为:应用程序启动到停止.
session 会话你可以设置他的时间 默认的是30分钟 当你关闭浏览器 结束本次会话 用户开始进行操作就产生一个唯一的session 每个session都分配了一个唯一的Id
request是获取信息--通过用户提交的表单,查询字符串,cookie等获得信息
session是服务端用来保存一些数据(通常是标记状态的,当然也可以保存别的)
session是服务端的记录变量,可以跟踪记录访问者动作,比如登录,退出等.
request用在数据提交,表单数据等
cookie 的话 它有一个有效期 你也可以设置时间 如一个月 一年等