jsp第四课-jsp与javaBean

1.JavaBean是一个可重复使用的软件组件,是遵循一定标准、用Java语言编写的一个类,该类的一个实例称为一个JavaBean,简称bean .


2.编写bean 
 1.如果类的成员变量的名字是xxx,那么为了获取或更改成员变 量的值,即获取或更改属性,类中必须提供两个方法:
getXxx() 用来获取属性xxx
setXxx()    用来修改属性xxx
即方法的名字用get或set为前缀,后缀是将成员变量名字的首字母大写的字符序列。
 2.对于boolean类型的成员变量,即布尔逻辑类型的属性,允许使用“is”代替上面的“get”和“set”。
 3.类中声明的方法的访问属性都必须是public的。
 4.类中声明的构造方法必须是public、无参数的。  


3. Bean的保存 
在当前Web服务目录下建立如下目录结构:
Web服务目录\WEB-INF\classes
根据类的包名,在目录classes下建立相应的子目录.比如:
Web服务目录\WEB-INF\classes\tom\jiafei 




4. JSP页面中使用bean 
使用JSP动作标记:useBean。useBean标记的格式:
 







5.动作标签getProperty 
使用该标记可以获得bean的属性值 .
格式如下:








6.动作标记setProperty 
(1)使用该标记可以设置bean的属性值 
(2)设置bean的属性为一个表达式的值的格式如下:
value= "<%=expression%>" />
(3)通过HTTP表单的参数的值来设置bean的相应属性的值:
    
(4)通过request的参数的值来设置bean的相应属性的值,要求request参数名字必须与bean属性的名字相同其格式如下:



7. bean的辅助类 
有时在写一个bean的时候,可能还需要自己编写的其他类,那么只要将这些类和创建bean的类写在一个Java源中即可,但必须按将源文件编译后产生的全部字节码文件复制到相应的目录中 .


8.JSP与bean结合的简单例子 
结合一些具体的实际问题,进一步熟悉掌握bean的使用。在本节中,创建bean的类的包名都是red.star,使用的Web服务目录仍然是ch4,因此,需要在ch4下建立如下的目录结构:
  ch4\WEB-INF\classes\red\star
创建bean的字节码文件都需要保存在上述目录中。为了便于调试类文件,可将创建bean的Java源文件保存到D:\2000中,然后将编译得到的字节码文件复制到上述目录中。 




Circle.java
package tom.jiafei
import java.io.*;
public class Circle  
{ int radius;
 public Circle()
    { radius=1;
    }
 public int getRadius()
    { return radius;
    }
 public void setRadius(int newRadius)
    {radius=newRadius;
    }
 public double circleArea()
    {return Math.PI*radius*radius;
    }
 public double circlLength()
    {return 2.0*Math.PI*radius;
    }
}


例子1
useBean.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="tom.jiafei.Circle"%> 

 
 <%--通过上述JSP标记,客户获得了一个作用域是page,名字是circle的bean --%>
  <%   circle.setRadius(888);
  %>

圆的半径是:<%=circle.getRadius()%>

圆的周长是:<%=circle.circlLength()%>

圆的面积是:<%=circle.circleArea()%>

例子2
bean1.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="tom.jiafei.Circle"%> 

 

圆的半径是: <%=girl.getRadius()%>

bean2.jsp

   
bean2.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="tom.jiafei.Circle"%>  


圆的半径是: <%=girl.getRadius()%>
 <%girl.setRadius(400);%>

修改后的圆的半径是:<%=girl.getRadius()%>

bean1.jsp

 


例子3
appbean.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="tom.jiafei.*"%>  



圆的初始半径是:<%=girl.getRadius()%>
 <%girl.setRadius(1000);%>

修改后的圆的半径是:<%=girl.getRadius()%>
     
NewCircle.java
package tom.jiafei;
import java.io.*;
public class NewCircle  
{  double radius=1,circleArea,circleLength;
  public double getRadius()
  { return radius;
  }
  public void setRadius(double newRadius)
  { radius=newRadius;
  }
 public double getCircleArea()
  { circleArea=Math.PI*radius*radius;
    return circleArea;
  }
 public double getCircleLength()
  { circleLength=2.0*Math.PI*radius;
    return circleLength;
  }
}
例子4
beanGetProperty.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="tom.jiafei.NewCircle"%> 

 
   <% apple.setRadius(100);%>
   圆的半径是:

圆的面积是:

圆的周长是:

Student.java
public class Student  
{ String name=null;
 long number;
 double height,weight;
 public String getName()
    { return name;
    }
 public void setName(String newName)
    {name=newName;
    }
 public long getNumber()
    {return number;
    }
 public void setNumber(long newNumber)
    { number=newNumber;
    }
 public double getHeight()
    {return height;
    }
 public void setHeight(double newHeight)
    { height=newHeight;
    }
 public double getWeight()
    {return weight;
    }
 public void setWeight(double newWeight)
    { weight=newWeight;
    }
}
例子5
student.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="tom.jiafei.Student"%> 

   
   
名字是:
   

学号是:
   

身高是:
   

体重是: 公斤

Goods.java
package tom.jiafei;
public class Goods  
{ String name,goodsNumber;
 double price;
 public String getName()
 {  return name;
 }
 public void setName(String newName)
 {  name=newName;
 }
 public String getGoodsNumber()
 {  return goodsNumber;
 }
 public void setGoodsNumber(String s)
 {  goodsNumber=s;
 }
 public double getPrice()
 {  return price;
 }
 public void setPrice(double newPrice)
 {  price=newPrice;
 }
}



例子6
goods.jsp
<%@ page contentType="text/html;Charset=GB2312" %>
<%@ page import="tom.jiafei.*"%> 



    输入商品的名称:
   
输入商品的代号:
   
输入商品的价格:
   

提交表单才能设置商品的信息
   

商品的名称:

商品的代号:

商品的价格:

ListFile.java
package tom.jiafei;
import java.io.*;
class FileName implements FilenameFilter 
{  String str=null;
  FileName (String s)
  { str="."+s;
  }
  public  boolean accept(File dir,String name)
  { return name.endsWith(str);
  }              
}
public class ListFile
{  String extendsName=null;
  StringBuffer allFileName; 
  public void setExtendsName(String s)
  { extendsName=s;
  }
  public String getExtendsName()
  { return extendsName;
  }
 public StringBuffer getFileName()
 {  File dir=new File("d:/2000");
    FileName help=new FileName(extendsName);
    String file_name[]=dir.list(help);
    for(int i=0;i     {  allFileName.append(file_name[i]+" ");
    }
    return allFileName;
 }  
}
例子7
file.jsp
<%@ page contentType="text/html;Charset=GB2312" %>
<%@ page import="tom.jiafei.*"%> 



 输入文件的扩展名:
 

 
 

扩展名是 的文件有:
 


三角形bean
Triangle.java
package red.star;
public class Triangle
{ double sideA=-1,sideB=-1,sideC=-1, area=-1;
 boolean triangle;
 public void setSideA(double a)
  {  sideA=a;
  }
 public double getSideA()
  {  return sideA;
  }
 public void setSideB(double b)
  {  sideB=b;
  }
 public double getSideB()
  {  return sideB;
  }
 public void setSideC(double c)
  {  sideC=c;
  }
 public double getSideC()
  {  return sideC;
  }
 public double getArea()
  {  double p=(sideA+sideB+sideC)/2.0;
     if(triangle)
       area=Math.sqrt(p*(p-sideA)*(p-sideB)*(p-sideC));
     return area;
  }
 public boolean isTriangle()
  {  if(sideA         triangle=true;
     else   triangle=false;
     return triangle;
  }
}
triangle.jsp
<%@ page contentType="text/html;Charset=GB2312" %>
<%@ page import="red.star.Triangle"%> 



  输入三角形三边:
  边A:
  边B:
  边C:
 


    三角形的三边是:
    边A:,
    边B:,
    边C:.

这三个边能构成一个三角形吗?

面积是:

四则运算bean
ComputerBean.java
package red.star;
public class ComputerBean 
{  double numberOne,numberTwo,result;
   String operator="+";
  public void setNumberOne(double n)
  {  numberOne=n;
  }
  public double getNumberOne()
  {  return numberOne; 
  }
  public void setNumberTwo(double n)
  {  numberTwo=n;
  }
  public double getNumberTwo()
  {  return numberTwo; 
  }
  public void setOperator(String s)
  {  operator=s.trim();;
  }
  public String getOperator()
  {  return operator;
  }
  public double getResult()
  {  if(operator.equals("+"))
      {  result=numberOne+numberTwo;
      } 
     else if(operator.equals("-"))
      {  result=numberOne-numberTwo;
      }
     else if(operator.equals("*"))
      {  result=numberOne*numberTwo;
      }
     else if(operator.equals("/"))
      {  result=numberOne/numberTwo;
      }
     return result; 
  }
}












computer.jsp
<%@ page contentType="text/html;Charset=GB2312" %>
<%@ page import="red.star.*" %> 



 

              value= size=6>
          
              value= size=6>
    = 
   

  

计数器bean
CounterCount.java
package red.star;
import java.io.*;
public class ComputerCount
{   int number=0; 
   boolean isCome=false;
   File file=new File("count.dat") ; 
   private void countPeople()
   {  if(!file.exists())
      {  number++;
         try {  file.createNewFile();
                FileOutputStream out=new FileOutputStream(file);
                DataOutputStream dataOut=new DataOutputStream(out);
                dataOut.writeInt(number);
                out.close();
                dataOut.close();
              }
         catch(IOException ee){}
       }
      else
       { try{ FileInputStream in=new FileInputStream(file);
              DataInputStream dataIn=new DataInputStream(in);
              number=dataIn.readInt();
              number++;
              in.close();
              dataIn.close();
              FileOutputStream out=new FileOutputStream(file);
              DataOutputStream dataOut=new DataOutputStream(out);
              dataOut.writeInt(number);
              out.close();
              dataOut.close();
            }
         catch(IOException ee){}
       }
     isCome=true;
   }
 public int getNumber()
   {  if(isCome==false)
        countPeople();
      return number;
   }
}
comeOne.jsp
<%@ page contentType="text/html;Charset=GB2312" %>
<%@ page import="red.star.*" %> 


Welcome欢迎您访问本站,这是本网站的comeOne.jsp页面
 
您是第 
                  
     个访问本网站的客户。
  欢迎去comeTwo.jsp参观

comeTwo.jsp
<%@ page contentType="text/html;Charset=GB2312" %>
<%@ page import="red.star.*" %> 


Welcome欢迎您访问本站,这是本网站的comeTwo.jsp页面
 
您是第 
                  
     个访问本网站的客户。
  欢迎去comeOne.jsp参观

 
浏览图像 bean
Play.java
package red.star;
import java.io.*;
class FileName implements FilenameFilter 
{  public  boolean accept(File dir,String name)
   {  boolean boo=false;
      if(name.endsWith(".jpg")||name.endsWith(".JPG"))
         boo=true;
      return boo;
   }              
}
public class Play
{ int imageNumber=0,max;
  String pictureName[],playImage;
  public Play()
   {  File dir=new File("D:/apache-tomcat-5.5.20/webapps/ch4/image");
      pictureName=dir.list(new FileName());
      max=pictureName.length;
   }
  public void setImageNumber(int n)
  {  if(n<0)
       n=max-1;
     if(n==max)
       n=0; 
     imageNumber=n;
  }
  public int getImageNumber()
  {  return imageNumber;
  }
  public String getPlayImage()
 {  playImage=new String(" height=200>");
      return playImage; 
  } 
}
play.jsp
<%@ page contentType="text/html;Charset=GB2312" %>
<%@ page import="red.star.*" %> 



单击"上一张"或"下一张"按钮浏览图像


 

 

     
 
   

   

       
   

   
 

   

成绩单 bean
ScoreList.java
package red.star;
public class ScoreList
{ String studentName,courseName="",score="";
 StringBuffer scoreWatch=new StringBuffer();
 public void setScore(String n)
 {  score=n;
 }
 public void setStudentName(String s)
 {  studentName=s;
 }
 public void setCourseName(String s)
 {  courseName=s;
 }
 public String getCourseName()
 {  return courseName;
 }
 public StringBuffer getScoreWatch()
 {  if(studentName!=null&&studentName.length()>0&&score.length()>0)
    { scoreWatch.append("");
      scoreWatch.append("");
      scoreWatch.append(studentName); 
      scoreWatch.append("");
      scoreWatch.append("");
      scoreWatch.append(""+score); 
      scoreWatch.append("");
      scoreWatch.append("");
      studentName="";
      score="";
    }
   return scoreWatch;
 }
}
studentScore.jsp
<%@ page contentType="text/html;Charset=GB2312" %>
<%@ page import="red.star.*" %> 



    


 课程名称:            value= >
 
学生姓名:
 
学生成绩:         
 
 
 

 
 
   
 



日历bean
CalendarBean.java
package red.star;
import java.util.*;
public class CalendarBean 
 { String  calendar=null;
   int year=-1,month=-1;
   public void setYear(int year)
   {  this.year=year;
   }
   public int getYear()
   {  return year; 
   }
   public void setMonth(int month)
   { this.month=month;
   }
   public int getMonth()
   {  return month; 
   }
   public String getCalendar()
   {  StringBuffer buffer=new StringBuffer(); 
      Calendar rili=Calendar.getInstance();
      rili.set(year,month-1,1);   //将日历翻到year年month月1日,注意0表示一月,
                                  //依次类推,11表示12月。
      //获取1日是星期几(get方法返回的值是1表示星期日,返回的值是7表示星期六):
      int 星期几=rili.get(Calendar.DAY_OF_WEEK)-1;
      int day=0;
      if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
      {  day=31;
      } 
      if(month==4||month==6||month==9||month==11)
      {  day=30;
      }
     if(month==2)
      {  if(((year%4==0)&&(year%100!=0))||(year%400==0))
           {  day=29;
           }
         else
           {  day=28;
           }
      }
      String a[]=new String[42];    
      for(int i=0;i<星期几;i++)
             { a[i]="**";
             }
      for(int i=星期几,n=1;i<星期几+day;i++)
             {  a[i]=String.valueOf(n) ;
                n++;
             }  
      for(int i=星期几+day,n=1;i<42;i++)
             {  a[i]="**" ;
             }  
     //用表格显示数组:
     buffer.append("");
     buffer.append("")  ;
     String weekday[]={"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
     for(int k=0;k<7;k++)
      {  buffer.append("");
      }
     buffer.append("") ;
     for(int k=0;k<42;k=k+7)
      {  buffer.append("")  ;     
         for(int j=k;j           {  buffer.append("");
          }
        buffer.append("") ;  
      } 
     buffer.append("      calendar=new String(buffer);
     return calendar;
   } 
}
showCalendar.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="red.star.CalendarBean" %> 

 
 
 

   输入日历的年份:
   选择日历的月份:
        
       

    
   
   月的日历: 
    

你可能感兴趣的:(jsp教学)

"+weekday[k]+"
"+a[j]+"