我所知道的JavaBeans
学习JSP,不可避免地你会接触到JavaBeans,对于一个没有太多Java基础的学习者来说,要正确理解JavaBeans实在不是一件太容易的事。在本文中,我们将对JavaBeans作一个整体的介绍,作为这样的一个介绍,我们可能不会涉及到某些技术上的细节。我们只是希望,无论是对于对JavaBeans有一定了解的人,还是对于刚接触JavaBeans的人,在阅读过本文后,能够对JSP中的JavaBeans有一个整体的把握。
一、什么是JavaBeans
JavaBeans事实上有三层含义。首先,JavaBeans是一种规范,一种在Java(包括JSP)中使用可重复使用的Java组件的技术规范。其次,JavaBeans是一个Java的类,一般来说,这样的Java类将对应于一个独立的.java文件,在绝大多数情况下,这应该是一个public类型的类。最后,当JavaBeans这样的一个Java类在我们的具体的Java程序中被示例之后,我们有时也会将这样的一个JavaBeans的实例称之为JavaBeans。
二、你可以不使用JavaBeans
从原理上来说,使用JavaBeans不过是使用一种特定的规范在Java程序中引入特定的类。你完全可以不使用JavaBeans而直接在Java程序中对这样的Java类进行说明并进行示例。当然,这无疑会降低你的程序的可读性,而且你将牺牲组件的可重复使用的特性。但是,对于一个简单的应用中的简单程序。你完全可以不必拘泥于使用JavaBeans。即便是对于JSP,你也可以做同样的选择,我们知道,在“”引起的程序段中,我们可以使用任何的纯Java语句,包括对一个新的对象的定义和示例。
三、在绝大多数情况下,使用JavaBeans是一个明智的选择
正如我们前面提到的,使用JavaBeans你可以充分利用组件的可重复使用的特性并增加你的程序的可读性。当你的应用日趋庞大时,你会发现,遵守这样的规范所带来的在开发和维护中的便利,相对于你所受到的约束,你完全值得做这样的交换。
四、JSP中的JavaBeans类是否必须严格遵守某些约定
在很多的JSP参考资料中都提到JavaBeans需要遵守JavaBeans规定,也就是JavaBeans API。但是,事实上在程序设计时,情况并没有这么复杂。你完全可以根据你自己的需要来定制你的JavaBeans。在这里,我们只要求JavaBeans是一个Java类,并不需要遵守其他规范。当然,对于这样的一个JavaBeans,你应该自己有一个清楚的认识。因为它可能并没有我们通常意义上所理解的JavaBeans的一些特性,对于某种极端的情况,你可能只能使用这样的语句来引入JavaBeans,然后来通过yourId这个JavaBeans的实例来处理并调用你的JavaBeans中的属性和方法。
五、JSP中JavaBeans的实质
我们注意到,一个引入JavaBeans的语句,其结构应该是,在这当中,我们必须对三个方面的内容进行定义。首先是一个id,这将对应于一个类的实例,如果这个实例已经存在,将直接引用这个实例;如果这个实例尚未存在,将通过我们在class中的定义从这个class中进行示例。这也就是我们要定义的第二个内容。最后,我们还实该在scope中定义id这个实例存在的范围,事实上这定义了这个实例所绑定的区域及其有效范围。
1、page:这个JavaBeans将存在于该JSP文件以及此文件中的所有静态包含文件中,直到页面执行完毕为止。这将基本等价于JSP中这样的Java语句。
2、request:这个JavaBeans将作为一个对象绑定于该页面的request中。简单地说该JavaBeans在该页面发出的请求中有效,这将基本等价于JSP中这样的Java语句。
3、session:这个JavaBeans将作为一个对象绑定于session中。简单地说该JavaBeans在本地有效,这将基本等价于JSP中这样的Java语句。
4、application:这个JavaBeans将作为一个对象绑定于application中。简单地说该JavaBeans在本应用中有效,这将基本等价于JSP中这样的Java语句。import java.sql.*;
import java.util.*;
import java.text.*;
import java.io.*;
public class jdbc_sql
{
String conn_str="jdbc:mysql://localhost/HeaVeN_news";//---------数据库
String username="root";//---------------数据库用户名
String password="";//-------------数据库密码
private Connection conn=null;
private Statement stmt=null;
ResultSet rs=null;
//----------------------数据库链接----------------
public jdbc_sql()
{
try{
Class.forName("org.gjt.mm.mysql.Driver");
}
catch(java.lang.ClassNotFoundException e)
{
System.err.println("dbclass():"+e.getMessage());
}
try{
conn=DriverManager.getConnection(conn_str,username,password);
}
catch(SQLException ex) {
System.err.println("dbclass():"+ex.getMessage());
}
}
//---------------------数据库查询-----------------
public ResultSet query(String sql)
{
try{
stmt=conn.createStatement();
rs=stmt.executeQuery(sql);}
catch(SQLException ex) {
System.err.println("query():"+ex.getMessage());
}
return rs;
}
//-----------数据库修改---------
public void update(String sql)
{
try{
stmt=conn.createStatement();
stmt.executeUpdate(sql);}
catch(SQLException ex) {
System.err.println("update():"+ex.getMessage());
}
}
//----------关闭数据源-------
public void closestmt()
{
try{stmt.close();
}
catch(SQLException ex) {
System.err.println("closestmt():"+ex.getMessage());
}
}
//----------关闭链接---------
public void closeconn()
{try{conn.close();}
catch(SQLException ex) {System.err.println("closeconn()"+ex.getMessage());}
}
//---------------------转换中文
public String toChinese(String s){
if(s==null)
return null;
try{
String convert=new String(s.getBytes("gb2312"),"ISO8859-1");
return convert;
}catch(Exception e){}
return null;
}
//--------------------分页
public String page1(int num,int line,int page_line,int start,int page,String search,String filename){
int pagetotal=line*page_line;//所要显示的总条数
int pagestart;//
int pagenum;//
int total=(num-start+line-1)/line;//取得总页数
int total_start=(num+pagetotal-1)/pagetotal;//取得总偏移数
String returnstr="";
if(start!=0)
{
int old_start=start-pagetotal;
returnstr+=" <<";
}
pagestart=start/pagetotal*page_line;//取得当前页数
for(int i=0;i
pagenum=pagestart+i+1;
returnstr+=" "+pagenum+"";
}
if(total_start!=(start/pagetotal+1)&&num!=0)
{
int new_start=start+pagetotal;
returnstr+=" >>";
}
return returnstr;
}
//-------------------------------取得时间
public String GetPath(){
String dateString="123";
try{
java.text.SimpleDateFormat formatter=new java.text.SimpleDateFormat("yyyy-MM");
java.util.Date currentTime_1=new java.util.Date();
dateString=formatter.format(currentTime_1);
}catch(Exception e){
}
return dateString;
}
//-------------------------------取得时间
public String strNowtime(){
String dateString="123";
try{
java.text.SimpleDateFormat formatter=new java.text.SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
java.util.Date currentTime_1=new java.util.Date();
dateString=formatter.format(currentTime_1);
}catch(Exception e){
}
return dateString;
}
//--------------------------去掉html---------------------------
public String HTMLEncode(String Str){
Str=ebbReplace(Str,"<","<");
Str=ebbReplace(Str,">",">");
Str=ebbReplace(Str," ","
");
return Str;
}
//--------------------------替换变量---------------------------
public String ebbReplace(String Str,String oldStr,String newStr){
String ReturnStr="";
int i,j,t,m,n;
n=0;
j=oldStr.length();
if (Str.indexOf(oldStr)>-1)
{
while(Str.indexOf(oldStr,n)>-1)
{
i=Str.length();
if (Str.indexOf(oldStr)==0)
Str=newStr+Str.substring(j,i);
else
{
t=Str.indexOf(oldStr);
m=(t+j);
Str=Str.substring(0,t)+newStr+Str.substring(m,i);
n=t+newStr.length()-j+1;
}
}
}
ReturnStr=Str;
return ReturnStr;
}
//----------------------------ubb替换--------------------------
public String LCReplace(String Str,String BStr,String EStr,String ReStr){
String ReturnStr="",Str1="",Str2="";
int i,j,n;
n=0;
if ((Str.indexOf(BStr)>-1)&&((Str.indexOf(EStr)>-1)))
{
while(Str.indexOf(BStr,n)>-1)
{
i=Str.indexOf(BStr);
j=Str.indexOf(EStr);
Str1=Str.substring((i+BStr.length()),j);
Str2=ebbReplace(ReStr,"$lichao$",Str1);
Str1=BStr+Str1+EStr;
Str=ebbReplace(Str,Str1,Str2);
n=i+Str2.length()-Str1.length();
}
}
ReturnStr=Str;
return ReturnStr;
}
}
没有评论:
发表评论