代码改变世界

jsp基础教程清华版源代码

2011-07-02 11:26  Rollen Holt  阅读(5748)  评论(0编辑  收藏  举报
第1章  JSP概述

例子1

example1_1.jsp

<%@ page contentType="text/html;charset=GB2312"%>
<HTML>
<BODY BGCOLOR=yellow>
<FONT Size=3>
<P>这是一个简单的JSP页面
    <%  
int i, sum=0;
        for(i=1;i<=100;i++)
        {  
sum=sum+i;
        }
    %>
<P>  1到100的连续和是:<%=sum %>
</FONT>
</BODY>
</HTML>
第2章  JSP页面与JSP标记
例子1
example2_1.jsp
<%@ page contentType="text/html;charset=GB2312" %>  <!-- jsp指令标记 -->
<%@ page import="java.util.Date"  %>                   <!-- jsp指令标记 -->
<%!   
Date date;                                   // 数据声明
      int sum;
      public int getFactorSum(int n)           // 方法声明 
      { 
 for(int i=1;i<n;i++)  
         { 
if(n%i==0)
              sum=sum+i;
         }
        return sum; 
      }
  %>
<HTML>
<BODY bgcolor=cyan>                         <!—html标记 --> 
<FONT size=4><P>程序片创建Date对象:
   <% 
date=new Date();                     //java程序片 
       out.println("<BR>"+date+"<BR>");
       int m=100;
   %>
   <%= m %>                                    <!-- Java表达式 --> 
   的因子之和是(不包括<%=m%>):
   <%= getFactorSum(m)  %>                   <!-- Java表达式 --> 
</FONT>
</BODY>
</HTML>
例子2
example2_2.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<HTML>
<BODY BGCOLOR=cyan>
<FONT size=4>
  <%! 
int i=0;
  %>
  <% 
 i++;
  %>
<P>您是第  <%=i%>  个访问本站的客户。
</FONT>
</BODY>
</HTML>
例子3
example2_3.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY bgcolor=cyan ><FONT size=2>
    <%! final double PI=Math.PI;
        double r;
        double getArea(double a)
        {  return PI*a*a;  
        }
        double getLength(double a) 
        {  return 2*PI*a;
        }
    %>
    <%  r=100;
        out.println("调用getArea方法计算半径是"+r+"的园的面积:");
        double area=getArea(r);
        out.println(area);
        r=50;
        out.println("<BR>调用getLength方法计算半径是"+r+"的园的周长:");
        double length=getLength(r);
        out.println(length); 
    %>
</FONT></BODY></HTML>
例子4
example2_4.jsp

<%@ page contentType="text/html;Charset=GB2312" %>
<HTML><BODY>
    <%! int count=0;                //被客户共享的count
        synchronized void setCount()  //synchronized修饰的方法
        {   count++;
        }
    %>
    <%  setCount();
        out.println("您是第"+count+"个访问本站的客户");   
    %>
</BODY></HTML>
例子5
example2_5.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY bgcolor=cyan><FONT size=3>
 <P> 请输入E-mail:<BR>
  <FORM action="" method=get name=form>
    <INPUT type="text"  name="client"  value="1"> 
    <INPUT TYPE="submit" value="送出" name=submit>
  </FORM> 
  <%  String str=request.getParameter("client");
      if(str!=null)
       { int index=str.indexOf("@");
         if(index==-1)
         {
  %>
           <BR>您的E-mail地址中没有@。
  <%
         }
        else 
         { int space=str.indexOf(" ");
           if(space!=-1)
           {
  %>       <BR>您的E-mail地址含有非法的空格。
  <%       }  
           else
           { int start=str.indexOf("@");
             int end=str.lastIndexOf("@");
             if(start!=end)
             {
  %>           <BR>您的E-mail地址有两个以上的符号:@。
  <%         }
             else
             {  out.print("<BR>"+str);
  %>           <BR>您的E-mail地址书写正确。
  <%         }
            }
         }
       }
  %>
</FONT></BODY></HTML>
例子6
example2_6.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY  bgcolor=cyan><FONT size=3>
<% double x=0.9,y=3;
%>
<P> Sin(<%=x%>)除以<%=y%>等于 
  <%=Math.sin(x)/y%>
 <p><%=y%>的平方是:
  <%=Math.pow(y,2)%>
<%  x=19;
    y=32;
%>
<P><%=x%>乘<%=y%>等于
  <%=x*y%>
<P> <%=y%>的平方根等于
  <%=Math.sqrt(y)%>
 <P><%=y%>大于<%=x%>吗?回答:
  <%=y>x%>
</FONT></BODY></HTML>
例子7
Example2_7.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY>
 <P> 请输入三角形的三个边a,b,c的长度:
<!-- 以下是HTML表单,向服务器发送三角形的三个边的长度 -->
  <FORM action=" " method=post name=form>
       <P>请输入三角形边a的长度:<INPUT type="text" name="a">
       <P>请输入三角形边b的长度:<INPUT type="text" name="b">
       <P>请输入三角形边c的长度:<INPUT type="text" name="c">
       <INPUT TYPE="submit" value="送出" name=submit>
  </FORM>  
 <%--获取客户提交的数据--%>
  <% String string_a=request.getParameter("a"),
     string_b=request.getParameter("b"),
     string_c=request.getParameter("c");
     double a=0,b=0,c=0;
  %>
  <%--判断字符串是否是空对象,如果是空对象就初始化--%>
      <%if(string_a==null)
           { string_a="0";
             string_b="0";
             string_c="0";
           } 
      %>
   <%--求出边长,并计算面积--%>
       <%try{ a=Double.valueOf(string_a).doubleValue();
               b=Double.valueOf(string_b).doubleValue(); 
               c=Double.valueOf(string_c).doubleValue();
               if(a+b>c&&a+c>b&&b+c>a)
                 {double p=(a+b+c)/2.0;
                  double mianji=Math.sqrt(p*(p-a)*(p-b)*(p-c));
                  out.print("<BR>"+"三角形面积:"+mianji); 
                 }    
                else
                 { out.print("<BR>"+"您输入的三边不能构成一个三角形");
                 }
              }
            catch(NumberFormatException e)
                  { out.print("<BR>"+"请输入数字字符");
                  }
     %> 
</BODY></HTML> 
例子8
first.jsp

<%@ page contentType="text/html;Charset=GB2312" %> 
<HTML><BODY BGCOLOR=cyan>                     
<FONT Size=3>                                   
<P>使用html处理所接受到的信息.
   <input type=text size=10>                                    
</FONT></BODY></HTML>
second.jsp
<%@ page contentType="application/msword" %> 
<HTML><BODY BGCOLOR=cyan>                     
<FONT Size=8>                                   
<P>启动MS-Word应用程序处理所接受到的信息.
 <input type=text size=10>                                        
</FONT></BODY></HTML>
例子9
example2_9.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY bgcolor=cyan>
<H3>  <%@ include file="Hello.txt" %>
</H3>
</BODY></HTML>
example2_10.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY Bgcolor=cyan><FONT size=3>
<P>请输入一个正数,单击按钮求这个数的平方根。
<%@ include file="computer.jsp"%>
</FONT></BODY></HTML>
例子11
Hello.txt

你好,祝学习进步!
<BR>学习JSP要有Java语言的基础。
<BR>要认真学习JSP的基本语法。
image.html

<image src="a.jpg" width=60 height=60>animal</iamge>

example2_11.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY BGCOLOR=Cyan><FONT Size=2>
 <table border=1>
 <tr><td>加载的文件</td>
     <td>加载的图像</td>
 </tr>
 <tr><td><jsp:include page="Myfile/Hello.txt" /></td>
     <td><jsp:include page="image.html" /></td>
 </tr>
 </table>
</FONT></BODY></HTML>
例子12


tom.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY>
    <%   String str=request.getParameter("computer"); //获取值
         int n=Integer.parseInt(str);
         int sum=0;
         for(int i=1;i<=n;i++)
            { sum=sum+i;
            }
    %>
<P> 从1到<%=n%>的连续和是: <%=sum%>
</BODY></HTML>

example2_12.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY>
 <P>加载文件效果:
   <jsp:include page="tom.jsp">
     <jsp:param name="computer" value="300" />
   </jsp:include>
</BODY></HTML>
例子13
example2_13.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY>
 <% double i=Math.random();
    if(i>0.5)
    {
 %>
     <jsp:forward page="example2_1.jsp" />
 <% }
   else
    {
 %>  <jsp:forward page="example2_2.jsp" />
 <% }
 %><P>  
例子14
come.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY bgcolor=cyan><FONT Size=5>
<%   String str=request.getParameter("number");
     double n=Double.parseDouble(str);
%>
   <P>您传过来的数值是:<BR>
    <%=n%>
</FONT></BODY></HTML>

example2_14.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY>
 <%  double i=Math.random();
 %>
   <jsp:forward page="come.jsp" >
      <jsp:param name="number" value="<%=i%>" />
   </jsp:forward> 
</BODY></HTML>
例子15
example2_15.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY>
  <jsp:plugin type="applet"code="B.class" jreversion="1.2" width="200" height ="260" >
     <jsp:fallback>
        Plugin tag OBJECT or EMBED not supported by browser. 
     </jsp:fallback>
</jsp:plugin>
</BODY></HTML>
第3章  Tag文件与Tag标记
example3_1.jsp

<%@ page contentType="text/html;Charset=GB2312" %>
<%@ taglib tagdir="/WEB-INF/tags" prefix="beijing"%>
<%@ taglib tagdir="/WEB-INF/tags/geng" prefix="dalian"%>
<html><body bgcolor=cyan>
  <h3>以下是调用Tag文件的效果:</h3>
      <beijing:OddSum />
  <h3>以下是调用Tag文件的效果:</h3>
      <dalian:EventSum />
</body></html>
OddSum.tag
<P>这是一个Tab文件,负责计算1~100内的奇数之和:
  <%  int sum=0,i=1;
      for(i=1;i<=100;i++)
      {   if(i%2==1)
           sum=sum+i;
      }
     out.println(sum);
  %>    
EvenSum.tag
<P>这是一个Tab文件,负责计算1~100内的偶数之和:
  <%  int sum=0,i=1;
      for(i=1;i<=100;i++)
      {   if(i%2==0)
           sum=sum+i;
      }
     out.println(sum);
  %>    
例子2


example3_2.jsp

<%@ page contentType="text/html;Charset=GB2312" %>
<%@ taglib prefix="look" tagdir="/WEB-INF/tags" %>
<HTML>
    <look:Show>
     北京奥运圆满成功!
    </look:Show>
    <look:Show>
      I Love this Game!
    </look:Show>
    <look:Show>
     欢迎您!
    </look:Show>
</HTML>
Show.tag

<body bgcolor=yellow><P>
<% int size=1;
   for(int i=1;i<=3;i++)
   {  size=size+1;
%>    <font size=<%=size%>>
         <jsp:doBody />
      </font>
<% }
%>
</P></body>
example3_3.jsp

<%@ page contentType="text/html;Charset=GB2312" %>
<%@ taglib tagdir="/WEB-INF/tags" prefix="computer"%>
<HTML><BODY>
   <H3>以下是调用Tag文件的效果:</H3>
   <computer:Trangle sideA="5" sideB="6" sideC="7"/>
</BODY></HTML>
Trangle.tag

<h4>这是一个Tag文件,负责计算三角形的面积。
<%@ attribute name="sideA" required="true" %>
<%@ attribute name="sideB" required="true" %>
<%@ attribute name="sideC" required="true" %>
  <%!   public String getArea(double a,double b,double c) 
        {  if(a+b>c&&a+c>b&&c+b>a) 
           {  double p=(a+b+c)/2.0;
              double area=Math.sqrt(p*(p-a)*(p-b)*(p-c)) ;
               return "<BR>三角形的面积:"+area;
           }
          else
          {  return("<BR>"+a+","+b+","+c+"不能构成一个三角形,无法计算面积");
          }
       }
  %>
  <%  out.println("<BR>JSP页面传递过来的三条边:"+sideA+","+sideB+","+sideC);
      double a=Double.parseDouble(sideA);
      double b=Double.parseDouble(sideB);
      double c=Double.parseDouble(sideC);
      out.println(getArea(a,b,c));
  %>
例子4


example3_4.jsp

<%@ page contentType="text/html;Charset=GB2312" %>
<%@ page import="java.util.*" %>
<%@ taglib tagdir="/WEB-INF/tags" prefix="show"%>
<HTML><BODY bgcolor=cyan>
   <% LinkedList listName=new LinkedList();
      LinkedList listScore=new LinkedList();
      listName.add("张三");
      listScore.add(new Double(87));  
      listName.add("李四");
      listScore.add(new Double(65)); 
      listName.add("刘小记");
      listScore.add(new Double(57));  
      listName.add("王大林");
      listScore.add(new Double(99)); 
      listName.add("孙进步");
      listScore.add(new Double(88));   
   %>    
  <p>成绩单:
  <show:ShowResult title="姓名" item="高等数学" 
listName="<%=listName%>" listScore="<%=listScore%>"/>
</BODY></HTML>
ShowResul.tag

<%@ attribute name="listName" required="true"  type="java.util.LinkedList" %>
<%@ attribute name="listScore" required="true" type="java.util.LinkedList" %>
<%@ attribute name="title" required="true" %>
<%@ attribute name="item" required="true" %>
<%   for(int i=0;i<listName.size();i++)
     { for(int j=i+1;j<listName.size();j++)
        { double a=((Double)listScore.get(i)).doubleValue(); 
          double b=((Double)listScore.get(j)).doubleValue();
          if(b<a)
          {  String temp=(String)listName.get(i);
             Double r=(Double)listScore.get(i);
             listName.set(i,(String)listName.get(j));
             listName.set(j,temp);
             listScore.set(i,(Double)listScore.get(j));
             listScore.set(j,r);
          } 
        }
     }
   out.print("<table border=1>");
   out.print("<tr>");
      out.print("<th>"+title+"</th>"); 
      out.print("<th>"+item+"</th>"); 
   out.print("<tr>");
   for(int k=0;k<listName.size();k++)
     { out.print("<tr>");
       double score=(Double)listScore.get(k);
       String name=(String)listName.get(k);
       if(score<60)
        { out.print("<td bgcolor=yellow>"+name+"</td>"); 
          out.print("<td bgcolor=yellow>"+score+"</td>");
        } 
       else
        { out.print("<td>"+name+"</td>"); 
          out.print("<td>"+score+"</td>"); 
        }
       out.print("<tr>");
     }
  out.print("</table>");
%>
例子5


useOne.jsp

<%@ page contentType="text/html;Charset=GB2312" %>
<%@ page import ="java.text.*" %>
<%@ taglib tagdir="/WEB-INF/tags" prefix="computer"%>
<HTML><BODY bgcolor=cyan>
  <computer:GetRoots coefficientA="3" coefficientB="6" coefficientC="-2"/>
  <h4> 方程的根保留3位小数点,并计算两个根的和:
  <%   NumberFormat f=NumberFormat.getInstance();
       f.setMaximumFractionDigits(3);
       double r1=rootOne.doubleValue();  //rootOne是GetRoot.tag文件返回的Double型对象
       double r2=rootTwo.doubleValue();  //rootTwo是GetRoot.tag文件返回的Double型对象
       String s1=f.format(r1);
       String s2=f.format(r2);
       out.println("<br>根1:"+s1);
       out.println("<br>根2:"+s2);
       double sum=r1+r2;
       out.println("<br>根1与根2之和:"+sum);
       SimpleDateFormat matter1=new SimpleDateFormat("yyyy/MM/dd,HH 时 mm分 ss秒");
       String timePattern=matter1.format(time);//time是GetRoot.tag文件返回的Date型对象
       out.println("<h3>当前时间:"+timePattern);
 %>  
</BODY></HTML>
useTwo.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import ="java.text.*" %>
<%@ taglib tagdir="/WEB-INF/tags" prefix="computer"%>
<HTML><BODY bgcolor=cyan>
  <computer:GetRoots coefficientA="3" coefficientB="6" coefficientC="-2"/>
  <h4> 方程的根保留5位小数点,并计算两个根的积:
  <%   NumberFormat f=NumberFormat.getInstance();
       f.setMaximumFractionDigits(5);
       double r1=rootOne.doubleValue();   
       double r2=rootTwo.doubleValue();  
       String s1=f.format(r1);
       String s2=f.format(r2);
       out.println("<br>根1:"+s1);
       out.println("<br>根2:"+s2);
       double ji=r1*r2;
       out.println("<br>根1与根2之积:"+ji);
       SimpleDateFormat matter1=new SimpleDateFormat("yyyy-MM-dd,HH:mm:ss(E)");
       String timePattern=matter1.format(time);
       out.println("<h3>当前时间:"+timePattern);
 %>  
</BODY></HTML>

GetRoot.tag

<%@ tag import="java.util.*" %>
<%@ attribute name="coefficientA" required="true" %>  
<%@ attribute name="coefficientB" required="true" %>
<%@ attribute name="coefficientC" required="true" %>
<%@ variable name-given="time" variable-class="java.util.Date" scope="AT_END" %>
<%@ variable name-given="rootOne" variable-class="java.lang.Double" scope="AT_END" %>
<%@ variable name-given="rootTwo" variable-class="java.lang.Double" scope="AT_END" %>
<%@ variable name-given="message" scope="AT_END" %>
  <%  double disk,r1,r2;
      double a=Double.parseDouble(coefficientA);
      double b=Double.parseDouble(coefficientB);
      double c=Double.parseDouble(coefficientC);
      disk=b*b-4*a*c;
      if(disk>=0&&a!=0)
      {   r1=(-b+Math.sqrt(disk))/(2*a);
          r2=(-b-Math.sqrt(disk))/(2*a);
         jspContext.setAttribute("rootOne",new Double(r1));  
         jspContext.setAttribute("rootTwo",new Double(r2));
         jspContext.setAttribute("message","一元二次方程有实根。");
      }
     if(disk<0&&a!=0)
      {  jspContext.setAttribute("message","一元二次方程没有实根。");
      }
     if(a==0)
      {  jspContext.setAttribute("message","这不是一元二次方程。");
      }
     jspContext.setAttribute("time",new Date());
  %>
例子6


example3_6.jsp

<%@ page contentType="text/html;Charset=GB2312" %>
<%@ page import="java.util.*" %>
<%@ taglib tagdir="/WEB-INF/tags" prefix="first"%>
<HTML><BODY bgcolor=cyan>
  <first:FirstTag number="6"/>
  <first:FirstTag number="8" />
</BODY></HTML>
FirstTag.tag

<%@ tag import="java.util.*" %>
<%@ taglib tagdir="/WEB-INF/tags" prefix="getNumber"%>
<%@ attribute name="number" required="true" %>
 <getNumber:SecondTag number="<%=number%>"/>
<% out.println("得到"+number+"个随机数:");
   for(int i=0;i<listNumber.size();i++)
   {  if(i<listNumber.size()-1)
       out.print((Integer)listNumber.get(i)+",");
      else
       out.print((Integer)listNumber.get(i)+"。");  
   }
   out.println("<br>按从小到大排列:");
   for(int i=0;i<listNumber.size();i++)
   {  for(int j=i+1;j<listNumber.size();j++)
      { int a=((Integer)listNumber.get(i)).intValue();
        int b=((Integer)listNumber.get(j)).intValue(); 
        if(b<a)
        {  Integer temp=(Integer)listNumber.get(i);
           listNumber.set(i,(Integer)listNumber.get(j));
           listNumber.set(j,temp);
        } 
      }  
    }
   for(int i=0;i<listNumber.size();i++)
   {  if(i<listNumber.size()-1)
       out.print((Integer)listNumber.get(i)+",");
      else
       out.print((Integer)listNumber.get(i)+"。");  
   }
   int sum=0;
   for(int i=0;i<listNumber.size();i++)
   { sum=sum+((Integer)listNumber.get(i)).intValue();
   }
   out.println("<br>得到的"+number+"个随机数之和:"+sum+"<br>");
%>

SecondTag.tag

<%@ tag import="java.util.*" %> 
<%@ attribute name="number" required="true"   %>
<%@ variable name-given="listNumber"  
variable-class="java.util.LinkedList" scope="AT_END" %>
<%   int count=Integer.parseInt(number);
     LinkedList listBox=new LinkedList(),
                listNeeded=new LinkedList();
    for(int k=1;k<=4;k++)
     {  for(int i=1;i<=13;i++)
        { listBox.add(new Integer(i));
        }
     } 
    while(count>0)
    {  int m=(int)(Math.random()*listBox.size());
       Integer integer=(Integer)listBox.get(m);
       listNeeded.add(integer);
       listBox.remove(m);
       count--;
    }
   jspContext.setAttribute("listNumber",listNeeded);  //返回listNumber
%>
例子7
example3_7.jsp

<%@ page contentType="text/html;Charset=GB2312" %>
<%@ taglib tagdir="/WEB-INF/tags" prefix="ok"%>
<html><body>
<p>
<Font size=2>Tag标记嵌套显示学生名单:</Font>
<table border=1>
   <ok:Biaoge color="#a9f002" name="姓名" sex="性别">
       <ok:Biaoge  color="cyan" name="张三" sex="男"/>
       <ok:Biaoge  color="#afc0ff" name="李小花" sex="女"/>
       <ok:Biaoge  color="pink" name="孙六" sex="男"/>
       <ok:Biaoge  color="#ffaaef" name="赵扬" sex="女"/>
   </ok:Biaoge>
</table>
</body></html>
Biaoge.tag

<%@ attribute name="color" %>
<%@ attribute name="name" %>
<%@ attribute name="sex" %>
 <tr bgcolor="<%=color%>"> 
<td width=60><%=name%></td> 
<td width=60><%=sex%></td> 
 </tr>
 <jsp:doBody/>

                      
第4章	JSP内置对象
例子1
example4_1.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY bgcolor=cyan><FONT size=3>
   <FORM action="tree.jsp" method=post name=form>
       <INPUT type="text" name="boy"> 
       <INPUT TYPE="submit" value="Enter" name="submit">
   </FORM> 
</FONT></BODY></HTML>
tree.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY bgcolor=cyan><FONT size=4>   
   获取文本框提交的信息:
   <%  String textContent=request.getParameter("boy");
   %>
   <%=textContent%> 
<BR>获取按钮的名字:
   <%  String buttonName=request.getParameter("submit");
   %>
   <%=buttonName%> 
</FONT></BODY></HTML>  
例子2
example4_2.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY bgcolor=cyan><FONT size=3>
   <FORM  action="" method=post name=form>
         <INPUT type="text" name="girl"> 
         <INPUT TYPE="submit" value="Enter" name="submit">
   </FORM>  
   <%   String textContent=request.getParameter("girl");
        double number=0,r=0;
        if(textContent==null)
        {  textContent="";
        }
       try{ number=Double.parseDouble(textContent);
            if(number>=0)
              { r=Math.sqrt(number) ;
                out.print("<BR>"+String.valueOf(number)+"的平方根:");
                out.print("<BR>"+String.valueOf(r));
              }
           else
             {  out.print("<BR>"+"请输入一个正数");
             }
        }
     catch(NumberFormatException e)
        {  out.print("<BR>"+"请输入数字字符");
        }
    %>
</FONT></BODY></HTML>
例子3
example4_3.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY bgcolor=green><FONT size=1>
   <FORM action="tree.jsp" method=post name=form>
       <INPUT type="text" name="boy"> 
       <INPUT TYPE="submit" value="提交" name="submit">
   </FORM> 
</FONT></BODY></HTML>

tree.jsp:

<%@ page contentType="text/html;charset=GB2312" %>
<MHML><BODY>   
获取文本框提交的信息:
   <%  String textContent=request.getParameter("boy");
       byte  b[]=textContent.getBytes("ISO-8859-1");
       textContent=new String(b);
   %>
  <%=textContent%> 
<BR> 获取按钮的名字:
   <% String buttonName=request.getParameter("submit");
       byte  c[]=buttonName.getBytes("ISO-8859-1");
       buttonName=new String(c);
   %>
   <%=buttonName%> 
</BODY></HTML>
例子4
example4_4.jsp:

<HTML><BODY bgcolor=cyan><FONT size=1>
<%@ page contentType="text/html;charset=GB2312" %>
   <FORM action="tree2.jsp" method=post name=form>
       <INPUT type="text" name="boy"> 
       <INPUT TYPE="submit" value="enter" name="submit">
   </FORM> 
</FONT></BODY></HTML>

tree2.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="java.util.*" %>
<MHML><BODY bgcolor=cyan><Font size=1 >   
<BR>用户使用的协议是:
   <% String protocol=request.getProtocol();
       out.println(protocol);
   %>
<BR>获取接受用户提交信息的页面:
   <%  String path=request.getServletPath();
       out.println(path);
   %>
<BR>接受用户提交信息的长度:
   <% int length=request.getContentLength();
       out.println(length);
   %>
<BR>用户提交信息的方式:
   <% String method=request.getMethod();
      out.println(method);
   %>
<BR>获取HTTP头文件中User-Agent的值:
   <% String header1=request.getHeader("User-Agent");
       out.println(header1);
   %>
<BR>获取HTTP头文件中accept的值:
   <% String header2=request.getHeader("accept");
       out.println(header2);
   %>
<BR>获取HTTP头文件中Host的值:
   <% String header3=request.getHeader("Host");
       out.println(header3);
   %>
<BR>获取HTTP头文件中accept-encoding的值:
   <% String header4=request.getHeader("accept-encoding");
       out.println(header4);
   %>
<BR>获取用户的IP地址:
   <% String  IP=request.getRemoteAddr();
       out.println(IP);
   %>
<BR>获取用户机的名称:
   <% String clientName=request.getRemoteHost();
       out.println(clientName);
   %> 
<BR>获取服务器的名称:
   <%  String serverName=request.getServerName();
        out.println(serverName);
   %> 
<BR>获取服务器的端口号:
   <% int serverPort=request.getServerPort();
       out.println(serverPort);
   %> 
<BR>获取用户端提交的所有参数的名字:
   <%  Enumeration en=request.getParameterNames();
       while(en.hasMoreElements())
        {  String s=(String)en.nextElement();
           out.println(s);
        }      
      %> 
<BR>获取头名字的一个枚举:
   <% Enumeration enum_headed=request.getHeaderNames();
      while(enum_headed.hasMoreElements())
       {  String s=(String)enum_headed.nextElement();
          out.println(s);
       }      
      
   %>
<BR>获取头文件中指定头名字的全部值的一个枚举:
   <% Enumeration enum_headedValues=request.getHeaders("cookie");
      while(enum_headedValues.hasMoreElements())
      {  String s=(String)enum_headedValues.nextElement();
         out.println(s);
      }      
   %>
<BR>
   <P> 文本框text提交的信息:
   <%  String str=request.getParameter("boy");
        byte  b[]=str.getBytes("ISO-8859-1");
        str=new String(b);
   %>
 <BR>  <%=str%> 
<BR> 按钮的名字:
   <% String buttonName=request.getParameter("submit");
       byte  c[]=buttonName.getBytes("ISO-8859-1");
       buttonName=new String(c);
   %>
<BR> <%=buttonName%> 
</FONT></BODY></HTML>
例子5
example4_5.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY ><Font size=2>
<FORM action="get.jsp" Method="post" >
  <P>输入三角形三边:
  <BR> 边A:<Input type=text name="sideA" value=0 size=5>
       边B:<Input type=text name="sideB" value=0 size=5>
       边C:<Input type=text name="sideC" value=0 size=5>
  <Input type=submit value="提交">
</FORM>
</FONT></BODY></HTML>

get.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<%@ taglib prefix="computer" tagdir="/WEB-INF/tags" %>
<%  String a=request.getParameter("sideA");
    String b=request.getParameter("sideB");
    String c=request.getParameter("sideC");
%> 
<computer:Triangle a="<%=a%>" b="<%=b%>" c="<%=c%>"/>
<HTML><BODY> 
<table border=1>
  <tr><td width=30>边A</td>
      <td width=30>边B</td>
      <td width=30>边C</td>
      <td>面积</td>
  </tr>
   <tr><td><%=a%></td>
       <td><%=b%></td>
       <td><%=c%></td>
       <td><%=result%></td>
  </tr>
</table>
</BODY></HTML>
Triangle.tag

<%@ tag pageEncoding="GB2312" %>
<%@ attribute name="a" required="true" %>
<%@ attribute name="b" required="true" %>
<%@ attribute name="c" required="true" %>
<%@ variable name-given="result" scope="AT_END" %>
  <%!   public String getArea(double a,double b,double c) 
        {  if(a+b>c&&a+c>b&&c+b>a) 
           {  double p=(a+b+c)/2.0;
              double area=Math.sqrt(p*(p-a)*(p-b)*(p-c)) ;
               return ""+area;
           }
          else
          {  return("不能构成一个三角形,无法计算面积");
          }
       }
  %>
  <% String mess="";
     try {  mess=
getArea(Double.parseDouble(a),Double.parseDouble(b),Double.parseDouble(c));
         }
     catch(Exception e)
         { mess ="无法计算面积"+e;
         }
     jspContext.setAttribute("result",mess);  //将result返回给JSP页面:get.jsp 
  %>
例子6
example4_6.jsp

<HTML><%@ page contentType="text/html;charset=GB2312" %>
<BODY bgcolor=cyan><FONT size=2>
 <FORM action="answer.jsp" method=post name=form>
       球王"贝利"是哪个国家的人:<BR>
       <INPUT type="radio" name="R" value="巴西">巴西 
       <INPUT type="radio" name="R" value="德国">德国 
       <INPUT type="radio" name="R" value="美国">美国 
       <INPUT type="radio" name="R" value="法国" checked="ok">法国 
       <BR>下列足球队中,哪些队曾获得过世界杯冠军:<BR>
       <INPUT type="checkbox" name="item" value="法国国家队" >法国国家队
       <INPUT type="checkbox" name="item" value="中国国家队" >中国国家队
       <INPUT type="checkbox" name="item" value="巴西国家队" >巴西国家队
       <INPUT type="checkbox" name="item" value="美国国家队" >美国国家队
       <INPUT TYPE="hidden" value="喜欢世界杯!" name="secret">
       <BR><INPUT TYPE="submit" value="提交" name="submit">
       <INPUT TYPE="reset" value="重置">
   </FORM> 
</FONT></BODY></HTML>

answer.jsp

<%@ page contentType="text/html;Charset=GB2312" %>
<HTML><BODY bgcolor=cyan><Font size=2>
   <%  int score=0;
       String countryName=request.getParameter("R"); 
       String itemNames[]=request.getParameterValues("item");
       String secretMess=request.getParameter("secret");
       if(countryName.equals("巴西"))
       {  score++;
       }
       if(itemNames==null)
       {  out.print("没有选择球队<br>");
       } 
       else
       {  if(itemNames[0].equals("法国国家队")&&
             itemNames[1].equals("巴西国家队"))
          {  score++;
          }
          
       }
      out.print("您的得分:"+score);
      out.print("<br>您提交的答案一:"+countryName);
      out.print("<br>您提交的答案二:");
      if(itemNames!=null)
       for(int k=0;k<itemNames.length;k++)
       { out.println(" "+itemNames[k]);
       }
      out.println("<br> 您提交的隐藏信息:"+secretMess);  
 %>
</FONT></BODY></HTML>  
例子7 
example4_7.jsp

<HTML><%@ page contentType="text/html;charset=GB2312" %>
<BODY bgcolor=cyan><FONT size=2 >
   <FORM action="sum.jsp" method=post name=form>
       选择计算和的方式:<br>
       <Select name="sum" size=3>
          <Option Selected value="1">计算1到n的连续和
          <Option value="2">计算1到n的平方和
          <Option value="3">计算1到n的立方和
       </Select> 
       <br>选择n的值:<br>
       <Select name="n" >
          <Option value="10">n=10
          <Option value="20">n=20
          <Option value="30">n=30
          <Option value="40">n=40
          <Option value="50">n=50
          <Option value="100">n=100
       </Select> 
       <br><INPUT TYPE="submit" value="提交你的选择" name="submit">
   </FORM> 
</FONT></BODY></HTML>
sum.jsp
<HTML><%@ page contentType="text/html;charset=GB2312" %>
<BODY bgcolor=cyan><FONT size=2>
 <% long sum=0;
    String s1=request.getParameter("sum");
    String s2=request.getParameter("n");
    if(s2.equals(""))
    {  s2="0";
    }
    if(s1.equals("1"))
    {  int n=Integer.parseInt(s2);
       for(int i=1;i<=n;i++)
       { sum=sum+i;
       } 
    }
    else if(s1.equals("2"))
    {  int n=Integer.parseInt(s2);
       for(int i=1;i<=n;i++)
       { sum=sum+i*i;
       } 
    }
    else if(s1.equals("3"))
    {  int n=Integer.parseInt(s2);
       for(int i=1;i<=n;i++)
       { sum=sum+i*i*i;
       } 
    }
 %>
<P>您的求和结果是:<%=sum%>。
</FONT></BODY></HTML>
例子8
example4_8.jsp:

<HTML><%@ page contentType="text/html;charset=GB2312" %>
<BODY bgcolor=cyan><FONT size=1>
<FORM action="answer.jsp" method=post name=form>
  <table border=1>
    <tr>
       <th> "贝利"是哪个国人</th>
       <th> 曾获得过世界杯冠军的球队</th>
    </tr>
    <tr>
       <td>
           <INPUT type="radio" name="R" value="巴西">巴西 
           <INPUT type="radio" name="R" value="德国">德国 
           <INPUT type="radio" name="R" value="美国">美国 
           <INPUT type="radio" name="R" value="法国" checked="ok">法国
       </td>
       <td>
           <INPUT type="checkbox" name="item" value="法国国家队" >法国国家队
           <INPUT type="checkbox" name="item" value="中国国家队" >中国国家队
           <INPUT type="checkbox" name="item" value="巴西国家队" >巴西国家队
           <INPUT type="checkbox" name="item" value="美国国家队" >美国国家队
           <INPUT TYPE="hidden" value="喜欢世界杯!" name="secret">
       </td> 
    </tr>
    <tr>
       <td><INPUT TYPE="submit" value="提交" name="submit"></td>
       <td><INPUT TYPE="reset" value="重置"></td>
    </tr>
  </table>
</FORM> 
</FONT></BODY></HTML>
例子9
example4_9.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY bgcolor=cyan><Font size=3>
  <FORM action="show.jsp" method=post name=form>
   <br>选择一副图像:    <Select name="image" >
          <Option value="sun.jpg">太阳
          <Option value="scenery.jpg">风景
       </Select> 
   <br>选择视频或音乐:
       <Select name="video" >
          <Option value="happy.wav">好汉歌
          <Option value="moon.wmv">故乡
          <Option value="clock.avi">表
       </Select> 
   <br> <INPUT TYPE="submit" value="提交你的选择" name="submit">
   </FORM> 
</FONT></BODY></HTML>
show.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY bgcolor=cyan><Font size=3>
 <% String s1=request.getParameter("image");
    String s2=request.getParameter("video");
 %>
 <image src="picture/<%=s1 %>" width=200 height=160 >图像</image>
 <embed src="avi/<%=s2 %>" width=300 height=180 >视频</embed>
</FONT></BODY></HTML>
例子10
example4_10.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<HTML>
<BODY bgcolor=cyan><FONT size=1 >
 <P>我正在学习response对象的
 <BR>setContentType方法
 <P>将当前页面保存为word文档吗?
  <FORM action="" method="get" name=form>
     <INPUT TYPE="submit" value="yes" name="submit">
   </FORM>
 <%   String str=request.getParameter("submit");
      if(str==null) 
       { str="";
       }
      if(str.equals("yes"))
       { response.setContentType("application/msword;charset=GB2312");
       }
%> 
</FONT></BODY></HTML>
例子11
example4_11.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="java.awt.*" %>
<%@ page import="java.io.*" %>
<%@ page import="java.awt.image.*" %>
<%@ page import="java.awt.geom.*" %>
<%@ page import="com.sun.image.codec.jpeg.*" %>
<HTML><BODY>  <BR> 观看旋转的椭圆
  <FORM action="" method="post" name=form>
     <INPUT TYPE="submit" value="观看" name="submit">
  </FORM>
<%String str=request.getParameter("submit");
   if(str!=null)
   { response.setContentType("image/jpeg");            //改变MIME类型
     int width=260, height=260;
     BufferedImage image = new BufferedImage(width,height,
                                                     BufferedImage.TYPE_INT_RGB);
     Graphics g = image.getGraphics();
     g.setColor(Color.white);
     g.fillRect(0, 0, width, height);
     Graphics2D g_2d=(Graphics2D)g; 
     Ellipse2D ellipse=new Ellipse2D. Double (20,50,120,50);
     g_2d.setColor(Color.blue);
     AffineTransform trans=new  AffineTransform(); 
      for(int i=1;i<=24;i++)
        {  trans.rotate(15.0*Math.PI/180,75,75);
           g_2d.setTransform(trans);
           g_2d.draw(ellipse);
        }
     g.dispose();
     OutputStream outClient= response.getOutputStream();//获取指向用户端的输出流
     JPEGImageEncoder encoder=JPEGCodec.createJPEGEncoder(outClient);
     encoder.encode(image);
   }
%> 
</BODY></HTML>
例子12
example4_12.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="java.util.*" %>
<HTML><BODY bgcolor=cyan><FONT size=4>
<P>现在的时间是:<BR>
<%   out.println(""+new Date());
     response.setHeader("Refresh","5");
 %>
</FONT></BODY></HTML>
例子13
example4_13.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY> 
<P>填写姓名:<BR>
   <FORM action="tree.jsp" method="get" name=form>
     <INPUT TYPE="text"   name="boy">
     <INPUT TYPE="submit" value="Enter">
   </FORM>
</BODY></HTML>

tree.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY> 
  <% String str=null;
      str=request.getParameter("boy");
      if(str==null)
       { str="";
       }
      byte b[]=str.getBytes("ISO-8859-1");
      str=new String(b);
      if(str.equals(""))
       { response.sendRedirect("example4_13.jsp"); 
       }
      else 
      {  out.print("欢迎您来到本网页!");
         out.print(str);
      }
%>
</BODY></HTML>
例子14
orther.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY bgcolor=yellow><FONT size=2> 
<P>我是ch2服务目录中的页面
<P>单击下面的超链接:<BR>
   <A HREF="http://127.0.0.1:8080/ch4/sameWebTwo.jsp">访问sameWebTwo.jsp
</FONT></BODY></HTML>
</HTML>

sameWebOne.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY bgcolor=cyan><FONT size=2> 
<P>我是ch4服务目录中的页面
<br>单击下面的超链接:<BR>
   <A HREF="http://127.0.0.1:8080/ch4/sameWebTwo.jsp">访问sameWebTwo.jsp
</FONT></BODY></HTML>

sameWebTwo.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY bgcolor=cyan><FONT size=2> 
<%  String mess=request.getHeader("referer");
    if(mess==null)
    {  mess="";
       response.setStatus(404);
    }
    if(!(mess.startsWith("http://127.0.0.1:8080/ch4")))
    {  response.setStatus(404);
    }
%>
<P> 欢迎访问本页面!<BR>
    您来自:<%=mess%>
</FONT></BODY></HTML>
例子15
first.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY  bgcolor=cyan>
   我是first.jsp页面,输入你的姓名连接到second.jsp
   <% String id=session.getId();
      out.println("<br>您的session对象的ID是:<br>"+id);
   %>
  <FORM action="two/second.jsp" method=post name=form>
       <INPUT type="text" name="boy"> 
       <INPUT TYPE="submit" value="送出" name=submit>
  </FORM>  
</BODY></HTML>

second.jsp

<%@ page contentType="text/html;Charset=GB2312" %>
<HTML><BODY  bgcolor=cyan>
   我是second.jsp页面
   <%  String id=session.getId();
       out.println("您的session对象的ID是:<br>"+id);
   %>
<BR> 单击超链接,连接到third.jsp的页面。
<BR><A HREF="/ch4/three/third.jsp"> 欢迎去third.jsp页面!</A>   
</BODY></HTML>

third.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY bgcolor=cyan>
   我是third.jsp页面
   <%  String id=session.getId();
       out.println("您的session对象的ID是:<br>"+id);
   %>
<BR> 单击超链接,连接到first.jsp的页面。
<BR><A HREF="/ch4/first.jsp">  欢迎去first.jsp!</A>   
</BODY></HTML>
例子16
first.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY  bgcolor=cyan>
<%   String str=response.encodeURL("two/second.jsp");
%>
   我是first.jsp页面,输入你的姓名连接到second.jsp
   <% String id=session.getId();
      out.println("<br>您的session对象的ID是:<br>"+id);
   %>
  <FORM action="<%=str%>" method=post name=form>
       <INPUT type="text" name="boy"> 
       <INPUT TYPE="submit" value="送出" name=submit>
  </FORM>  
</BODY></HTML>
second.jsp
<%@ page contentType="text/html;Charset=GB2312" %>
<%   String str=response.encodeURL("/ch4/three/third.jsp");
%>
<HTML><BODY  bgcolor=cyan>
   我是second.jsp页面
   <%  String id=session.getId();
       out.println("您的session对象的ID是:<br>"+id);
   %>
<BR> 单击超链接,连接到third.jsp的页面。
<BR><A HREF="<%=str%>"> 欢迎去third.jsp页面!</A>   
</BODY></HTML>
third.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<%   String str=response.encodeURL("/ch4/first.jsp");
%>
<HTML><BODY bgcolor=cyan>
   我是third.jsp页面
   <%  String id=session.getId();
       out.println("您的session对象的ID是:<br>"+id);
   %>
<BR> 单击超链接,连接到first.jsp的页面。
<BR><A HREF="<%=str%>">  欢迎去first.jsp!</A>   
</BODY></HTML>
例子17
example4_17.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY bgcolor=cyan><FONT Size=2>
  <% session.setAttribute("customer","顾客");
  %>
 <P>输入您的姓名连接到第一百货:first.jsp
   <FORM action="first.jsp" method=post name=form>
       <INPUT type="text" name="boy"> 
       <INPUT TYPE="submit" value="送出" name=submit>
  </FORM>  
</FONT></BODY></HTML>

first.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY bgcolor=cyan><FONT Size=2>
   <% String s=request.getParameter("boy");
      session.setAttribute("name",s);
   %>
  这里是第一百货。<br>输入您想购买的商品连接到结账:account.jsp。
  <FORM action="account.jsp" method=post name=form>
    <INPUT type="text" name="buy"> 
    <INPUT TYPE="submit" value="送出" name=submit>
  </FORM>  
</FONT></BODY></HTML>
</HTML>

account.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<%! //处理字符串的方法
   public String getString(String s)
   { if(s==null)
      {  s="";
      }
     try{ byte b[]=s.getBytes("ISO-8859-1");
          s=new String(b);
        }
     catch(Exception e){}
     return s;
   }
%>
<HTML><BODY bgcolor=cyan><FONT Size=2>
   <% String s=request.getParameter("buy");
      session.setAttribute("goods",s);
   %>
<BR> 
<% String 顾客=(String)session.getAttribute("customer");
   String 姓名=(String)session.getAttribute("name");
   String 商品=(String)session.getAttribute("goods");
   姓名=getString(姓名);
   商品=getString(商品);
%>
    这里是结账处,<%=顾客%>的姓名是:<%=姓名%>
<br>您选择购买的商品是:<%=商品%>
</FONT></BODY></HTML>
例子18
example4_18.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY bgcolor=cyan><FONT Size=2>
  随机分给了你一个1到100之间的数,请猜!
  <% int num=(int)(Math.random()*100)+1;
     session.setAttribute("count",new Integer(0));
     session.setAttribute("save",new Integer(num));
  %>
 <BR><A HREF="guess.jsp">去猜测这个数</A> 
</FONT></BODY></HTML>

guess.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<%@ taglib tagdir="/WEB-INF/tags" prefix="guessNumber"%>
<HTML><BODY bgcolor=cyan><FONT Size=2>
<%   String str=request.getParameter("guessNumber");
     if(str==null) 
      { str="*";
      }
     if(str.length()==0)
      { str="*";
      }
%>
 <guessNumber:GuessTag number="<%=str%>" />
 当前猜测结果:<%=message%>
<% if(message.startsWith("您猜对了"))
   {
%>   <br><A HREF="example4_18.jsp">重新获得随机数</A> 
<% }
   else
   {
 %> <BR>输入您的猜测:
    <FORM action="" method="post" name=form>
       <INPUT type="text" name="guessNumber" > 
       <INPUT TYPE="submit" value="送出" name="submit">
    </FORM>
<% }
%>
</FONT></BODY></HTML>

GuessTag.tag

<%@ tag pageEncoding="GB2312" %>
<%@ attribute name="number" required="true" %>  
<%@ variable name-given="message" scope="AT_END" %>
  <%  String mess="";
      Integer integer=(Integer)session.getAttribute("save");
      int realnumber=integer.intValue();
      int guessNumber=0;
      boolean boo=true;
      try{  guessNumber=Integer.parseInt(number);
         }
      catch(Exception exp)
         {  boo=false;
         }
      if(boo)
      { if(guessNumber==realnumber)
        { int n=((Integer)session.getAttribute("count")).intValue();
          n=n+1;
          session.setAttribute("count",new Integer(n));
          mess="您猜对了,这是第"+n+"次猜测";
        } 
        else if(guessNumber>realnumber)
        { int n=((Integer)session.getAttribute("count")).intValue();
          n=n+1;
          session.setAttribute("count",new Integer(n));
          mess="您猜大了,这是第"+n+"次猜测";
        }
        else if(guessNumber<realnumber)
        { int n=((Integer)session.getAttribute("count")).intValue();
          n=n+1;
          session.setAttribute("count",new Integer(n));
          mess="您猜小了,这是第"+n+"次猜测";
        }
        else if(number.equals("你还没开始猜测")) 
        {  mess="你还没开始猜测";
        }
       jspContext.setAttribute("message",mess); //将对象message返回给JSP页面
      }
     else
      {  jspContext.setAttribute("message","请输入您的猜测");
      }
  %>
例子19
example4_19.jsp

<%@ page contentType="text/html;Charset=GB2312" %>
<%@ page import="java.util.*" %>
<HTML><BODY bgcolor=yellow><FONT Size=3>
 <%  session.setMaxInactiveInterval(10);
     boolean boo=session.isNew();
     out.println("<br>如果你第一次访问当前web服务目录,您的会话是新的");
     out.println("<br>如果你不是首次访问当前web服务目录,您的会话不是新的");
     out.println("<br>会话是新的吗?:"+boo);
     out.println("<br>欢迎来到本页面,您的session允许的最长发呆时间为"+
                        session.getMaxInactiveInterval()+"秒");
     out.println("<br>您的session的创建时间是"+
new Date(session.getCreationTime()));
     out.println("<br>您的session的Id是"+session.getId()); 
     Long lastTime=(Long)session.getAttribute("lastTime");
     if(lastTime==null)
       { long n=session.getLastAccessedTime();
         session.setAttribute("lastTime",new Long(n));
       } 
    else
       { long m=session.getLastAccessedTime();
         long n=((Long)session.getAttribute("lastTime")).longValue();
         out.println("<br>您的发呆时间大约是"+(m-n)+"毫秒,大约"+(m-n)/1000+"秒");
         session.setAttribute("lastTime",new Long(m)); 
       } 
 %>
<FONT></BODY></HTML>
例子20
one.jsp

<%@ page contentType="text/html;Charset=GB2312" %>
<%@ taglib prefix="person" tagdir="/WEB-INF/tags" %>
<HTML><BODY size=3>
<P>欢迎访问本站
   <person:Count/>
   <A href="two.jsp">欢迎去two.jsp参观</A>
</BODY></HTML>
two.jsp

<%@ page contentType="text/html;Charset=GB2312" %>
<%@ taglib prefix="person" tagdir="/WEB-INF/tags" %>
<HTML><BODY size=3>
<P>欢迎访问本站
   <person:Count/>
   <A href="one.jsp">欢迎去one.jsp参观</A>
</BODY></HTML>
Count.tag

<%@ tag import="java.io.*" %>
<FONT Size=4>
<%!   int number=0; 
       File file=new File("count.txt") ;   
       synchronized void countPeople()//计算访问次数的同步方法
        { if(!file.exists())
           {  number++;
              try {file.createNewFile();
                    FileOutputStream out=new FileOutputStream("count.txt");
                    DataOutputStream dataOut=new DataOutputStream(out);
                    dataOut.writeInt(number);
                    out.close();
                    dataOut.close();
                  }
              catch(IOException ee){}
           }
          else
           {   try{FileInputStream in=new FileInputStream("count.txt");
                    DataInputStream dataIn=new DataInputStream(in);
                    number=dataIn.readInt();
                    number++;
                    in.close();
                    dataIn.close();
                    FileOutputStream out=new FileOutputStream("count.txt");
                    DataOutputStream dataOut=new DataOutputStream(out);
                    dataOut.writeInt(number);
                    out.close();
                    dataOut.close();
                 }
               catch(IOException ee){}
           }
      }
%>
<%   String str=(String)session.getAttribute("count");
      if(str==null)
       { countPeople();
         String personCount=String.valueOf(number);
         session.setAttribute("count",personCount);
       }
%>
<P><P>您是第<%=(String)session.getAttribute("count")%>
       个访问本网站的用户。
</Font>
例子21
example4_21.jsp:

<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="java.util.*" %>
<HTML><BODY bgcolor=yellow>
  <% int a=100;long b=300;boolean c=true;
     out.println("<H1>这是标题1字体的大小</HT1>");
     out.println("<H2>这是标题2字体的大小</HT2>");
     out.print("<BR>");
     out.println(a);  out.println(b);  out.println(c);
  %>
  <Center>
  <p><Font size=2 >以下是一个表格</Font> 
  <%  out.print("<Font face=隶书 size=2 >");
      out.println("<Table Border >");
      out.println("<TR >");
            out.println("<TH width=80>"+"姓名"+"</TH>");
            out.println("<TH width=60>"+"性别"+"</TH>");
            out.println("<TH width=200>"+"出生日期"+"</TH>");
      out.println("</TR>");
      out.println("<TR >");
            out.println("<TD >"+"刘甲一"+"</TD>");
            out.println("<TD >"+"男"+"</TD>");
            out.println("<TD >"+"1978年5月"+"</TD>");
      out.println("</TR>");
      out.println("<TR>");
            out.println("<TD >"+"林 霞"+"</TD>");
            out.println("<TD >"+"女"+"</TD>");
            out.println("<TD >"+"1979年8月"+"</TD>");
             out.println("<TD width=100>"+"这是表格"+"</TD>");
     out.println("</TR>");
     out.println("</Table>");
     out.print("</Font>")  ;
  %>
  </Center>
</BODY></HTML>
例子22
submit.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY>
 <FORM action="messagePane.jsp" method="post" name="form">
    <P>输入您的名字:
    <INPUT  type="text" name="peopleName">
     <BR>
     <P>输入您的留言标题:
    <INPUT  type="text"  name="Title">
     <BR>
     <P>输入您的留言:
    <BR>
    <TEXTAREA name="messages" ROWs="10" COLS=36 WRAP="physical" >
    </TEXTAREA>
    <BR>
    <INPUT type="submit" value="提交信息" name="submit">
 </FORM>
 <FORM action="showMessage.jsp" method="post" name="form1">
    <INPUT type="submit" value="查看留言板" name="look">
 </FORM>
</BODY></HTML>

messagePane.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="java.util.*" %>
<%@ page import="java.text.SimpleDateFormat" %>
<HTML><BODY>
     <%! Vector v=new Vector();
         int i=0; 
         ServletContext  application;
         synchronized void sendMessage(String s)
          { application=getServletContext();;
            v.add(s);
            application.setAttribute("Mess",v); 
          }
     %> 
     <% String name=request.getParameter("peopleName");
        String title=request.getParameter("Title");
        String messages=request.getParameter("messages");
           if(name==null)
             { name="guest"+(int)(Math.random()*10000);
             }
           if(title==null)
             { title="无标题";
             }
           if(messages==null)
             { messages="无信息";
             }
          SimpleDateFormat matter=
          new SimpleDateFormat("yyyy-MM-dd  HH:mm:ss");
          String time=matter.format(new Date());
          String s=name+"#"+title+"#"+time+"#"+messages; 
          sendMessage(s);
          out.print("您的信息已经提交!");
     %>
  <A HREF="submit.jsp" >返回留言板</A> 
  <A HREF="showMessage.jsp" >查看留言板</A>
</BODY></HTML>
showMessage.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="java.util.*" %>
<HTML><BODY bgcolor=yellow>
  <%   Vector v=(Vector)application.getAttribute("Mess");
       out.print("<table border=2>");
        out.print("<tr>");
           out.print("<td bagcolor=cyan>"+"留言者姓名"+"</td>");
           out.print("<td bagcolor=cyan>"+"留言标题"+"</td>");
           out.print("<td bagcolor=cyan>"+"留言时间"+"</td>");
           out.print("<td bagcolor=cyan>"+"留言内容"+"</td>");
       for(int i=0;i<v.size();i++)
       {   out.print("<tr>");
           String message=(String)v.elementAt(i);
           byte bb[]=message.getBytes("iso-8859-1");
           message=new String(bb);
           String a[]=message.split("#");
           out.print("<tr>");
           int number=a.length-1;
           for(int k=0;k<=number;k++) 
           {  if(k<number)
               { out.print("<td bgcolor=cyan >"+a[k]+"</td>");
               }
             else
               {out.print("<td><TextArea rows=3 cols=12>"+a[k]+
                           "</TextArea> </td>");
               } 
          }
          out.print("</tr>");
       } 
      out.print("</table>");
    %>
 <A HREF="submit.jsp" >返回留言板</A> 
</BODY></HTML>
第5章  JSP中的文件操作
例子1
example5_1.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="java.io.*"%> 
<HTML><BODY bgcolor=cyan><FONT Size=2>
  <%File f1=new
     File("D:/apache-tomcat-6.0.13/webapps/ch5","example5_1.jsp");
     File f2=new File("jasper.sh");
  %>
 <br> 文件<%=f1.getName()%>是可读的吗?<%=f1.canRead()%>
 <br>文件<%=f1.getName()%>的长度:<%=f1.length()%>字节
 <BR> jasper.sh是目录吗?<%=f2.isDirectory()%>
 <BR><%=f1.getName()%>的父目录是:<%=f1.getParent()%>
 <BR> <%=f2.getName()%>的绝对路径是:<%=f2.getAbsolutePath()%>
</FONT></BODY></HTML>
例子2
example5_2.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="java.io.*"%> 
<HTML><BODY><FONT Size=2>
  <% File dir=new 
     File("D:/apache-tomcat-6.0.13/webapps/ch5","Students");
   %>
 <br> 在ch5下创建一个新的目录:Students,<br>成功创建了吗?
    <%=dir.mkdir()%>
 <br> Students是目录吗?<%=dir.isDirectory()%>
</FONT> </BODY></HTML>
例子3
example5_3.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="java.io.*"%> 
<HTML><BODY bgcolor=cyan><FONT Size=2>
  <%  File dir=new File("D:/apache-tomcat-6.0.13/webapps/ch5");
      File file[]=dir.listFiles();
   %>
 <br>目录有:
     <% for(int i=0;i<file.length;i++)
        {  if(file[i].isDirectory())
            out.print("<br>"+file[i].toString());
        }
     %>
 <br>文件名字:
     <% for(int i=0;i<file.length;i++)
        {  if(file[i].isFile())
            out.print("<br>"+file[i].toString());
        }
     %>
</FONT></BODY></HTML>
例子4
example5_4.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import ="java.io.*" %>
<HTML><BODY bgcolor=cyan><FONT Size=2>
<%! class FileJSP implements FilenameFilter 
     {  String str=null;
        FileJSP(String s)
        {  str="."+s;
        }
        public boolean accept(File dir,String name)
         { return name.endsWith(str);
         }              
     }
%>
<br>ch5目录中的jsp文件:
 <% File dir=new File("D:/apache-tomcat-6.0.13/webapps/ch5");
    FileJSP file_jsp=new FileJSP("jsp");
    String file_name[]=dir.list(file_jsp);
    for(int i=0;i<file_name.length;i++)
    {  out.print("<BR>"+file_name[i]);
    }
 %>
</FONT></BODY></HTML>
例子5
example5_5.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import ="java.io.*" %>
<HTML><BODY>
  <% File f=new File("D:/apache-tomcat-6.0.13/webapps/ch5","example5_1.jsp");
     File dir=new File("D:/apache-tomcat-6.0.13/webapps/ch5","Students");
     boolean b1=f.delete();
     boolean b2=dir.delete();
  %>
<P>文件<%=f.getName()%>成功删除了吗?<%=b1%>
<P>目录<%=dir.getName()%>成功删除了吗?<%=b2%>
</BODY></HTML>
例子6
example5_6.jsp


<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import ="java.io.*" %>
<HTML>
<BODY bgcolor=cyan><FONT size=2>
<%  File dir=new File("C:/","Students");
    dir.mkdir();
    File f=new File(dir,"hello.txt");
    try{
        FileOutputStream  outfile=new FileOutputStream(f);
        BufferedOutputStream bufferout=new BufferedOutputStream(outfile);
        byte b[]="你们好,很高兴认识你们呀!<BR>nice to meet you".getBytes();
        bufferout.write(b);
        bufferout.flush();
        bufferout.close();
        outfile.close();
        FileInputStream  in=new FileInputStream(f);
        BufferedInputStream bufferin=new BufferedInputStream(in);
        byte c[]=new byte[90];
        int n=0;
        while((n=bufferin.read(c))!=-1)
        {  String temp=new String(c,0,n);
           out.print(temp); 
        }
        bufferin.close();
        in.close();
       }
     catch(IOException e){}
%>
</FONT></BODY></HTML>
例子7
example5_7.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<%@ taglib tagdir="/WEB-INF/tags" prefix="file"%>
<HTML><BODY bgcolor=yellow><Font size=3>
<FORM action="" Method="post" >
   输入文件的内容:
   <br>
    <TextArea name="ok"  Rows="10" Cols="16" ></TextArea>
    <Input type=submit value="提交">
</FORM>
  <%  String str=request.getParameter("ok");
      if(str==null)
      { str="";
      }  
     byte bb[]=str.getBytes("iso-8859-1");
     str=new String(bb);
  %>
  <file:WriteTag content="<%=str%>" />
</FONT></BODY></HTML>
WriteTag.tag

<%@ tag pageEncoding="GB2312" %>
<%@ tag import="java.io.*" %>
<%@ attribute name="content" required="true" %>
<HTML><BODY bgcolor=cyan><FONT size=2>
<%!
   public void writeContent(String str,File f) 
   { try{ FileWriter outfile=new FileWriter(f);
          BufferedWriter bufferout=new BufferedWriter(outfile);
          bufferout.write(str);
          bufferout.close();
          outfile.close();
         }
       catch(IOException e){}
   }
   public String readContent(File f)
   { StringBuffer str=new StringBuffer();
     try{ FileReader in=new FileReader(f);
          BufferedReader bufferin=new BufferedReader(in);
          String temp;  
          while((temp=bufferin.readLine())!=null)
          {  str.append(temp); 
          }
          bufferin.close();
          in.close();
         }
     catch(IOException e){}
     return new String(str);
    }
%>
<%  File dir=new  File("C:/","Students");
    dir.mkdir();
    File f=new File(dir,"hello.txt");
    if(content.length()>0)
    {  writeContent(content,f);
       String str=readContent(f);
       out.print(f.getName()+"的内容:<br>"); 
       out.print(str); 
    } 
%>
</FONT></BODY></HTML>
例子8
example5_8.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import ="java.io.*" %>
<HTML><BODY>
 <P> 在下面的表格输入成绩:
 <FORM action="" method=post name=form>
  <Table align="CENTER" Border>
     <TR>
            <TH  width=50> 姓名</TH>
            <TH  width=50> 数学</TH>
            <TH  width=50>英语</TH>
     </TR>
    <% int i=0;
       while(i<=6)
         {  out.print("<TR>");
              out.print("<TD>");
                 out.print("<INPUT type=text name=name value=姓名>");
              out.print("</TD>");
              out.print("<TD>");
                 out.print("<INPUT type=text name=math value=0>");
              out.print("</TD>");
              out.print("<TD>");
                 out.print("<INPUT type=text name=english value=0>");
              out.print("</TD>");
           out.print("</TR>");
          i++;
        }
     %>
     <TR>
        <TD>
         <INPUT type=submit name="g" value="写入成绩" >
        </TD>
        <TD> Math</TD>
        <TD> English</TD>
     </TR>  
   </Table>
  </FORM>
  <% String name[]=request.getParameterValues("name");
     String math[]=request.getParameterValues("math");
     String english[]=request.getParameterValues("english");
    try{ 
         File f=new File("f:/2000","student.txt");
         FileOutputStream o=new FileOutputStream(f);
         DataOutputStream DataOut=new DataOutputStream(o);
         for(int k=0;k<name.length;k++)
          { DataOut.writeUTF(name[k]);
            DataOut.writeUTF(math[k]);
            DataOut.writeUTF(english[k]);
          }
        DataOut.close();
        o.close();
      } 
    catch(IOException e)
      {}
    catch(NullPointerException ee)
      {}
  %>
 <P><BR>查看成绩单:
  <A href=showresult.jsp><BR> 链接到成绩单页面>
</BODY></HTML>

showresult.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import ="java.io.*" %>
<HTML><BODY>
 <P>成绩单:
 <%try{ File f=new File("f:/2000","student.txt");
         FileInputStream in=new FileInputStream(f);
         DataInputStream DataIn=new DataInputStream(in);
         String name="ok";
         String math="0",english="0";
         out.print("<Table Border>");
           out.print("<TR>");
               out.print("<TH  width=50> 姓名</TH>");
               out.print("<TH  width=50> 数学</TH>");
               out.print("<TH  width=50>英语</TH>");
           out.print("</TR>");
           while((name=DataIn.readUTF())!=null)
             { byte bb[]=name.getBytes("ISO-8859-1");
               name=new String(bb);
               math=DataIn.readUTF();
               english=DataIn.readUTF();
               out.print("<TR>");
                  out.print("<TD width=200>");
                  out.print(name);
                  out.print("</TD>"); 
                  out.print("<TD width=100>");
                  out.print(math);
                  out.print("</TD>"); 
                  out.print("<TD width=100>");
                  out.print(english);
                  out.print("</TD>");
               out.print("</TR>");  
             }
        out.print("</Table>");
        DataIn.close();  in.close();
     }
    catch(IOException ee)
     { }
  %>
</BODY></HTML>
例子9
example5_9.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import ="java.io.*" %>
<%@ page import ="java.util.*" %>
<HTML><BODY>
 <P> 输入货物有关信息:
  <FORM action="input.jsp" method=post >
    <P>货号:
      <INPUT type=text name="N">
    <P>数量:
      <INPUT type=text name="M">
    <BR>
      <INPUT type=submit value="提交">  
  </FORM>
 <Table Border=2>
  <tr>
   <td> 
       <FORM action="showgoods.jsp" method=post>
         <INPUT type=submit value="查看界面">  
       </FORM>
   </td>
   <td> 
       <FORM action="del.jsp" method=post >
         <INPUT type=submit value="修改界面">  
       </FORM>
   </td>
</BODY></HTML>

input.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import ="java.io.*" %>
<%@ page import ="java.util.*" %>
<HTML><BODY> 
  <%! Hashtable hashtable=new Hashtable();
      synchronized void putGoodsToHashtable(String key,String list)
        { hashtable.put(key,list);
        }
  %>
 <%  String name=request.getParameter("N");
     String mount=request.getParameter("M");
     if(name==null||mount==null)
       { name="";
         mount="";
       }
     else
       {   byte  c[]=name.getBytes("ISO-8859-1");
           name=new String(c); 
           byte  d[]=mount.getBytes("ISO-8859-1");
           mount=new String(d);
       }
          
   %>
  <%   File f=new File("C:/","goods_name.txt");
       if(f.exists())
         {try{ FileInputStream in=new FileInputStream(f);
                ObjectInputStream object_in=new ObjectInputStream(in);
                hashtable=(Hashtable)object_in.readObject();
                object_in.close();
                in.close(); 
                if(hashtable.containsKey(name))
                 { session.setAttribute("name",name);
                   response.sendRedirect("del.jsp");     //重定向到修改页面
                 }
                else
                 { String s="#"+name+"#"+mount+"#";
                   putGoodsToHashtable(name,s);      //向散列表填加新的货物信息
                  try{ FileOutputStream o=new FileOutputStream(f);
                       ObjectOutputStream object_out=new ObjectOutputStream(o);
                       object_out.writeObject(hashtable);
                       object_out.close();
                       o.close();
                     }
                   catch(Exception eee){}
                   out.print("<BR>"+"您已经将货物存入文件");
                   out.print("<BR>"+"货物的货号:"+name);
                 }
              }
             catch(IOException e) {}
         }    
      else
         { String s="#"+name+"#"+mount+"#";
           putGoodsToHashtable(name,s);
           try{ FileOutputStream o=new FileOutputStream(f);
                ObjectOutputStream object_out=new ObjectOutputStream(o);
                object_out.writeObject(hashtable);
                object_out.close();
                o.close();
                out.print("<BR>"+"您是第一个录入货物的人");
                out.print("<BR>"+"货物的货号:"+name);
               }
           catch(Exception eee){}
         }
   %>
<Table Border=2>
  <tr>
   <td> 
       <FORM action="example5_9.jsp" method=post >
         <INPUT type=submit value="录入界面">  
       </FORM>
   </td>
   <td> 
       <FORM action="showgoods.jsp" method=post >
         <INPUT type=submit value="查看界面">  
       </FORM>
   </td>
   <td> 
       <FORM action="del.jsp" method=post >
         <INPUT type=submit value="修改界面">  
       </FORM>
   </td>
 </Table>
</BODY></HTML>

del.jsp:

<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import ="java.io.*" %>
<%@ page import ="java.util.*" %>
<HTML><BODY> 
  <%!Hashtable hashtable=new Hashtable();
      synchronized void removeGoodsToHashtable(String key)
        { hashtable.remove(key);
        }
      synchronized void putGoodsToHashtable(String key,String list)
        { hashtable.put(key,list);
        }
  %>
 <%
   String name=null,delete="";
   String oldname=(String)session.getAttribute("name");
   out.print("<BR> 输入要删除货物的货号:");
   out.print("<FORM action=del.jsp method=get") ;
   out.print("<P>货号:");
   out.print("<INPUT type=text name=N value="+oldname+">");
   out.print(" <INPUT type=submit name=del value=del>");  
   out.print("</FORM>");
   name=request.getParameter("N");
   delete=request.getParameter("del");
   if(name==null)
     { name="have no any goods number";
     }
   byte  c[]=name.getBytes("ISO-8859-1");
   name=new String(c); 
   if(delete!=null)
     {if(delete.startsWith("del"))
        {try{  File f=new File("C:/","goods_name.txt");
                FileInputStream in=new FileInputStream(f);
                ObjectInputStream object_in=new ObjectInputStream(in);
                hashtable=(Hashtable)object_in.readObject();
                object_in.close();
                in.close(); 
                if(hashtable.containsKey(name))
                 { removeGoodsToHashtable(name);
                   out.print("<BR>"+"货号:"+name+"的信息被删除");
                   FileOutputStream o=new FileOutputStream(f);
                   ObjectOutputStream object_out=new ObjectOutputStream(o);
                   object_out.writeObject(hashtable); 
                   object_out.close();
                   o.close();
                 }
                else 
                 { out.print("<BR>"+"没有货号:"+name+"记录");
                 }
             }
         catch(Exception ee){}
        }
     }
  %>
<Table Border=2>
  <tr>
   <td> 
       <FORM action="example5_9.jsp" method=post >
         <INPUT type=submit value="录入界面">  
       </FORM>
   </td>
   <td> 
       <FORM action="showgoods.jsp" method=post >
         <INPUT type=submit value="查看界面">  
       </FORM>
   </td>
   <td> 
       <FORM action="del.jsp" method=post >
         <INPUT type=submit value="修改界面">  
       </FORM>
   </td>
 </Table>
</BODY></HTML>

showgoods.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import ="java.io.*" %>
<%@ page import ="java.util.*" %>
<HTML><BODY>
  <P> 已有货物的有关信息:
   <%try{ File f=new File("C:/","goods_name.txt");
          FileInputStream in=new FileInputStream(f);
          ObjectInputStream object_in=new ObjectInputStream(in);
          Hashtable  hashtable=(Hashtable)object_in.readObject();
          object_in.close();
          in.close(); 
          Enumeration en=hashtable.elements(); 
          out.print("<table border=2>");
           out.print("<tr>");
           out.print("<td bagcolor=cyan>"+"货号"+"</td>");
           out.print("<td bagcolor=cyan>"+"库存"+"</td>");
           out.print("</tr>");
           while(en.hasMoreElements())   //遍历当前散列表
             {  out.print("<tr>");
                String goods=(String)en.nextElement();
                StringTokenizer fenxi=new StringTokenizer(goods,"#");
                while(fenxi.hasMoreTokens()) 
                { String str=fenxi.nextToken();
                  out.print("<td bgcolor=cyan >"+str+"</td>");
                }
                out.print("</tr>");
             }
           out.print("</table>");
           hashtable.clear();
         }
     catch(Exception event)
         {out.println("无法读出");
         }
   %>
<Table Border=2>
  <tr>
   <td> 
       <FORM action="example5_9.jsp" method=post >
         <INPUT type=submit value="录入界面">  
       </FORM>
   </td>
   <td> 
       <FORM action="showgoods.jsp" method=post >
         <INPUT type=submit value="查看界面">  
       </FORM>
   </td>
   <td> 
       <FORM action="del.jsp" method=post >
         <INPUT type=submit value="修改界面">  
       </FORM>
   </td>
 </Table>
</BODY></HTML>
例子10
example5_10.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import ="java.io.*" %>
<HTML><BODY bgcolor=cyan><FONT size=2>
<% String str=response.encodeURL("continueWrite.jsp");
%>
 <P>选择您想续写小说的名字:<BR>
   <FORM action="<%=str%>" method=post name=form>
     <BR><INPUT type="radio" name="R" value="spring.doc" >美丽的故事
     <BR><INPUT type="radio" name="R" value="summer.doc" >火热的夏天   
     <BR><INPUT type="radio" name="R" value="autumn.doc" >秋天的收获
     <BR><INPUT type="radio" name="R" value="winter.doc" >冬天的大雪 
    <BR>  <INPUT type=submit name ="g" value="提交">  
</FORM>
</FONT></BODY></HTML>

continueWrite.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import ="java.io.*" %>
<HTML><BODY bgcolor=cyan><FONT size=1>
<P>小说已有内容:
<Font size=1 Color=Navy>
<% String str=response.encodeURL("continue.jsp");
%>
<%--获取客户提交的小说的名字--%>
 <%
   String name=(String)request.getParameter("R");
              if(name==null)
              {  name="";
              }
    byte  c[]=name.getBytes("ISO-8859-1");
    name=new String(c); 
    session.setAttribute("name",name);
    File storyFileDir=new File("F:/8000","story");
    storyFileDir.mkdir();
    File f=new File(storyFileDir,name);  
    //列出小说的内容
     try{ RandomAccessFile file=
          new RandomAccessFile(f,"r");
          String temp=null;
          while((temp=file.readUTF())!=null)
             { byte  d[]=temp.getBytes("ISO-8859-1");
               temp=new String(d); 
               out.print("<BR>"+temp);
              }
          file.close();
       }
   catch(IOException e){}
 %> 
 </FONT>
 <P>请输入续写的新内容:
  <Form action="<%=str%>" method=post name=form>
    <TEXTAREA name="messages" ROWs="12" COLS=80 WRAP="physical">
    </TEXTAREA>
    <BR>
    <INPUT type="submit" value="提交信息" name="submit">
  </FORM>
  </BODY></HTML>
continue.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<%@ page isThreadSafe="false" %>
<%@ page import ="java.io.*" %>
<HTML>
<BODY> 
  <%!String writeContent(File f,String s)
       { try{  
              RandomAccessFile out=new RandomAccessFile(f,"rw");
               out.seek(out.length()); //定位到文件的末尾
               out.writeUTF(s);
               out.close();
               return "内容已成功写入到文件";
            }
         catch(IOException e)
            {  return "不能写入到文件";
            }
       }  
  %>
  <%--获取客户提交的小说的名字--%> 
  <%   String name=(String)session.getAttribute("name");
       byte  c[]=name.getBytes("ISO-8859-1");
       name=new String(c); 
       //获取客户续写的内容
       String content=(String)request.getParameter("messages");
                   if(content==null)
                     { content="";
                     }
   %>
  <%
     File storyFileDir=new File("F:/8000","story");
     storyFileDir.mkdir();
     File f=new File(storyFileDir,name);
     String message=writeContent(f,content);
     out.print(message);
   %>
</BODY></HTML>
例子11
example5_11.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY>
 <P>选择要上传的文件:<BR>
   <FORM action="accept.jsp" method="post" ENCTYPE="multipart/form-data">
      <INPUT type=FILE name="boy" size="38"> 
      <BR><INPUT type="submit" name ="g" value="提交">  
</FORM>
</BODY></HTML>

accept.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import ="java.io.*" %>
<HTML><BODY>
  <%try{  InputStream in=request.getInputStream();
          File f=new File("C:/1000","B.txt");
          FileOutputStream o=new FileOutputStream(f);
          byte b[]=new byte[1000];
          int n;
          while((n=in.read(b))!=-1)
          { o.write(b,0,n);
          }
          o.close();
          in.close();
       }
    catch(IOException ee){}
    out.print("文件已上传");
  %> 
</BODY></HTML>
例子12
example5_12.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import ="java.io.*" %>
<%@ taglib tagdir="/WEB-INF/tags" prefix="ok" %>
<HTML><BODY>
 <P>选择要上传的文件:<BR>
 <FORM action="accept.jsp" method="post" ENCTYPE="multipart/form-data">
      <INPUT type=FILE name="boy" size="45"> 
      <BR> <INPUT type="submit" name ="boy" value="提交">
 </FORM>
</BODY></HTML>

accept.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import ="java.io.*" %>
<%@ taglib tagdir="/WEB-INF/tags" prefix="ok" %>
<HTML><BODY>
<ok:UpFile subdir="image" />
   <%=message%>
   <br>上传的效果:
   <image src="image/<%=fileName %>" width=160 height=100></image>
</BODY></HTML>

UpFile.tag

<%@ tag pageEncoding="GB2312" %>
<%@ tag import="java.io.*" %>
<%@ attribute name="subdir" required="true" %> 
<%@ variable name-given="message" scope="AT_END" %>
<%@ variable name-given="fileName" scope="AT_END" %>
<%  jspContext.setAttribute("message",""); 
    String fileName=null;
    try{  //用客户的session对象的Id建立一个临时文件
          String tempFileName=(String)session.getId();
          File dir=new File("D:/apache-tomcat-6.0.13/webapps/ch5/"+subdir);
          dir.mkdir();          
          //建立临时文件f1
          File f1=new File(dir,tempFileName);
          FileOutputStream o=new FileOutputStream(f1);
           //将客户上传的全部信息存入f1
          InputStream in=request.getInputStream();
          byte b[]=new byte[10000];
          int n;
          while( (n=in.read(b))!=-1)
          { o.write(b,0,n);
          }
          o.close();
          in.close();
           //读取临时文件f1,从中获取上传文件的名字和上传文件的内容
          RandomAccessFile random=new RandomAccessFile(f1,"r");
           //读出f1的第2行,析取出上传文件的名字
          int second=1;
          String secondLine=null;
          while(second<=2)  
           {  secondLine=random.readLine();
              second++;
           }
           //获取第2行中目录符号'\'最后出现的位置
           int position=secondLine.lastIndexOf('\\');
           //客户上传的文件的名字是
           fileName=secondLine.substring(position+1,secondLine.length()-1);
           random.seek(0); //再定位到文件f1的开头
           //获取第4行回车符号的位置
           long  forthEndPosition=0;
           int forth=1;
           while((n=random.readByte())!=-1&&(forth<=4))  
           {
             if(n=='\n')
              {
                 forthEndPosition=random.getFilePointer();
                 forth++;
              }
           }
           //根据客户上传文件的名字,将该文件存入磁盘
           byte  cc[]=fileName.getBytes("ISO-8859-1");
           fileName=new String(cc);
           File f2= new File(dir,fileName);
           RandomAccessFile random2=new RandomAccessFile(f2,"rw"); 
           //确定出文件f1中包含客户上传的文件的内容的最后位置,即倒数第6行
           random.seek(random.length());
           long endPosition=random.getFilePointer();
           long mark=endPosition;
           int j=1;
           while((mark>=0)&&(j<=6))  
           {   mark--;
               random.seek(mark);
               n=random.readByte();
               if(n=='\n')
                 {  endPosition=random.getFilePointer();
                    j++;
                 }
           }
         //将random流指向文件f1的第4行结束的位置
         random.seek(forthEndPosition);
         long startPoint=random.getFilePointer();
          //从f1读出客户上传的文件存入f2(读取第4行结束位置和倒数第6行之间的内容)
         while(startPoint<endPosition-1)
          {   n=random.readByte();
              random2.write(n); 
              startPoint=random.getFilePointer();
          }
          random2.close();
          random.close();
          jspContext.setAttribute("message","上传成功"); //将message返回JSP页面
          jspContext.setAttribute("fileName",fileName);//将fileName返回JSP页面 
          f1.delete(); //删除临时文件
       }
     catch(Exception ee) 
       { jspContext.setAttribute("message","没有选择文件或上传失败"); 
       }
%>
例子13
example5_13.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY>
<P>单击超链接下载book.Zip
 <BR>  <A href="loadFile.jsp">下载book.zip
</BODY></HTML>    

loadFile.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="java.io.*" %>
<HTML><BODY>
<%  File fileLoad=new File("c:/1000","book.zip");
   //通知客户使用下载文件对话框
 response.setHeader("Content-disposition","attachment;filename="+"book.zip"); 
 %>
</BODY></HTML>
第6章  JSP中使用数据库
例子1
example6_1.jsp


<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="java.sql.*" %>
<HTML><BODY bgcolor=cyan>
 <% Connection con;
    Statement sql; 
    ResultSet rs;
    try{  Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
       }
    catch(ClassNotFoundException e)
       {  out.print(e);
       }
    try { con=DriverManager.getConnection("jdbc:odbc:mystar","sa","sa");
          sql=con.createStatement();
          rs=sql.executeQuery("SELECT * FROM product WHERE price>5000");
          out.print("<table border=2>");
          out.print("<tr>");
            out.print("<th width=100>"+"产品号");
            out.print("<th width=100>"+"名称");
            out.print("<th width=50>"+"生产日期");
            out.print("<th width=50>"+"价格");
         out.print("</TR>");
       while(rs.next())
       {  out.print("<tr>");
             out.print("<td >"+rs.getString(1)+"</td>"); 
             out.print("<td >"+rs.getString(2)+"</td>");
             out.print("<td >"+rs.getDate("madeTime")+"</td>"); 
             out.print("<td >"+rs.getFloat("price")+"</td>");
          out.print("</tr>") ; 
        }
        out.print("</table>");
        con.close();
     }
   catch(SQLException e) 
     {  out.print(e);
     }
 %>
</BODY></HTML>
例子2
example6_2.jsp


<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="java.sql.*" %>
<HTML><BODY bgcolor=yellow>
 <% Connection con;
    Statement sql; 
    ResultSet rs;
    try { Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
        }
    catch(Exception e)
        { out.print(e);
        }
    try { String uri= "jdbc:sqlserver://127.0.0.1:1433;DatabaseName=Warehouse";
          String user="sa";
          String password="sa";
          con=DriverManager.getConnection(uri,user,password);
          sql=con.createStatement();
          rs=sql.executeQuery("SELECT * FROM product WHERE price>5000");
           out.print("<table border=2>");
          out.print("<tr>");
            out.print("<th width=100>"+"产品号");
            out.print("<th width=100>"+"名称");
            out.print("<th width=50>"+"生产日期");
            out.print("<th width=50>"+"价格");
         out.print("</TR>");
       while(rs.next())
       {  out.print("<tr>");
             out.print("<td >"+rs.getString(1)+"</td>"); 
             out.print("<td >"+rs.getString(2)+"</td>");
             out.print("<td >"+rs.getDate("madeTime")+"</td>"); 
             out.print("<td >"+rs.getFloat("price")+"</td>");
          out.print("</tr>") ; 
        }
        out.print("</table>");
        con.close();
     }
   catch(SQLException e) 
     {  out.print(e);
     }
 %>
</BODY></HTML>
例子3
example6_3.jsp


<%@ page contentType="text/html;charset=GB2312" %>
<%@ taglib tagdir="/WEB-INF/tags" prefix="inquire"%>
<HTML><Body bgcolor=cyan><Font size=2>
<FORM action="inquire.jsp" Method="post" >
   输入数据源名: <Input type=text name="dataSource" size=8>
   输入表的名字: <Input type=text name="tableName"  size=8>  
  <br>输入用户名:<Input type=text name="user" size=6>(默认是sa)
   输入密码:  <Input type="password" name="password" size=6>(默认是sa)     
  <br><Input type=submit name="g" value="提交">
</Form>
</Font></Body></HTML>
inquire.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<%@ taglib tagdir="/WEB-INF/tags" prefix="inquire"%>
<HTML><Body bgcolor=cyan><Font size=2>
  <% String dSource=request.getParameter("dataSource");
     String tName=request.getParameter("tableName");
     String id=request.getParameter("user");
     String secret=request.getParameter("password");
  %>
  <inquire:QueryTag dataSource="<%=dSource%>"tableName="<%=tName%>"
  user="<%=id%>" password="<%=secret%>"/>
   在<%=biao%>表查询到记录:
   <BR> <%=queryResult %>
</Font></Body></HTML>
QueryTag.tag

<%@ tag pageEncoding="GB2312" %>
<%@ tag import="java.sql.*" %>
<%@ attribute name="dataSource" required="true" %>
<%@ attribute name="tableName" required="true" %> 
<%@ attribute name="user" required="true" %>  
<%@ attribute name="password" required="true" %>  
<%@ variable name-given="biao" scope="AT_END" %>
<%@ variable name-given="queryResult" scope="AT_END" %>
<% 
    StringBuffer result;     
    result=new StringBuffer();
    try{  Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
       }
    catch(Exception e) {} 
    Connection con;
    Statement sql; 
    ResultSet rs;
    try{  result.append("<table border=1>"); 
          String uri="jdbc:odbc:"+dataSource;
          con=DriverManager.getConnection(uri,user,password);
          DatabaseMetaData metadata=con.getMetaData();
          ResultSet rs1=metadata.getColumns(null,null,tableName,null);
          int 字段个数=0;
          result.append("<tr>");
          while(rs1.next())
           { 字段个数++;
             String clumnName=rs1.getString(4);
             result.append("<td>"+clumnName+"</td>");
           }
          result.append("</tr>");
          sql=con.createStatement();
          rs=sql.executeQuery("SELECT * FROM "+tableName);
          while(rs.next())
            {  result.append("<tr>");
               for(int k=1;k<=字段个数;k++) 
                {  result.append("<td>"+rs.getString(k)+"</td>");
                }
              result.append("</tr>");
            }
            result.append("</table>");
            con.close();
        }
       catch(SQLException e)
        {  result.append("请输入正确的用户名和密码");
        }
       jspContext.setAttribute("queryResult",new String(result));
       jspContext.setAttribute("biao",tableName);
%>
例子4
example6_4.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<%@ taglib tagdir="/WEB-INF/tags" prefix="inquire"%>
<HTML><Body bgcolor=cyan><Font size=2>
<P> 随机查询记录.
<FORM action="random.jsp" Method="post" >
   输入数据库名: <Input type=text name="databaseName" size=8>
   输入表的名字: <Input type=text name="tableName"  size=8>  
  <br>输入用户名:<Input type=text name="user" size=6>(默认是sa)
   输入密码:  <Input type="password" name="password" size=6>(默认是sa)  
  <br>输入查询的记录数:<Input type=text name="count" value=4>   
  <Input type=submit name="g" value="提交">
</Form>
</Font></Body></HTML>

random.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<%@ taglib tagdir="/WEB-INF/tags" prefix="inquire"%>
<HTML><Body bgcolor=cyan><Font size=2>
  <% String dName=request.getParameter("databaseName");
     String tName=request.getParameter("tableName");
     String id=request.getParameter("user");
     String secret=request.getParameter("password");
     String n=request.getParameter("count");
  %>
  <inquire:RandomQuery databaseName="<%=dName%>"tableName="<%=tName%>" 
                     user="<%=id%>" password="<%=secret%>" count="<%=n%>"/>
   在<%=biao%>表随机查询到<%=randomCount%>条记录:
   <BR> <%=queryResult %>
</Font></Body></HTML>
RandomQuery.tag

<%@ tag pageEncoding="GB2312" %>
<%@ tag import="java.sql.*" %>
<%@ tag import="java.util.*" %>
<%@ attribute name="databaseName" required="true" %>
<%@ attribute name="tableName" required="true" %> 
<%@ attribute name="user" required="true" %>  
<%@ attribute name="password" required="true" %> 
<%@ attribute name="count" required="true" %> 
<%@ variable name-given="biao" scope="AT_END" %>
<%@ variable name-given="queryResult" scope="AT_END" %>
<%@ variable name-given="randomCount" scope="AT_END" %>
<%  
    Vector vector=new Vector();
    StringBuffer result;
    result=new StringBuffer();
    try{   Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
       }
    catch(Exception e) {} 
    Connection con;
    Statement sql; 
    ResultSet rs;
    int n=0;
    try{  result.append("<table border=1>"); 
          String uri= 
"jdbc:sqlserver://127.0.0.1:1433;DatabaseName="+databaseName;
          con=DriverManager.getConnection(uri,user,password);
          DatabaseMetaData metadata=con.getMetaData();
          ResultSet rs1=metadata.getColumns(null,null,tableName,null);
          int 字段个数=0;
          result.append("<tr>");
          while(rs1.next())
           { 字段个数++;
             String clumnName=rs1.getString(4);
             result.append("<td>"+clumnName+"</td>");
           }
          result.append("</tr>");
          sql=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
                                    ResultSet.CONCUR_READ_ONLY);
          rs=sql.executeQuery("SELECT * FROM "+tableName);
          rs.last();
          int rowNumber=rs.getRow();
          int number=rowNumber;    //获取记录数
          for(int i=1;i<=number;i++)
          { vector.add(new Integer(i));
          }
          int m=Math.min(Integer.parseInt(count),number);
          n=m;
          while(m>0)
          {  int i=(int)(Math.random()*vector.size());  
//从vector中随机抽取一个元素:
int index=((Integer)vector.elementAt(i)).intValue();
              rs.absolute(index);                         //游标移到这一行
              result.append("<tr>");
              for(int k=1;k<=字段个数;k++) 
              {  result.append("<td>"+rs.getString(k)+"</td>");
              }
              result.append("</tr>");
              m--; 
              vector.removeElementAt(i);   //将抽取过的元素从vector中删除
           }
           result.append("</table>");
           con.close();

        }
       catch(SQLException e)
        {  result.append("请输入正确的用户名和密码");
        }
       jspContext.setAttribute("queryResult",new String(result)); 
       jspContext.setAttribute("biao",tableName); 
       jspContext.setAttribute("randomCount",String.valueOf(n)); 
%>
例子5
example6_5.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY><Font size=2>
<FORM action="byNumber.jsp" Method="post">
 根据产品号查询
<BR>输入产品号:<Input type=text name="number">
<Input type=submit name="g" value="提交">
</Form>
<FORM action="byPrice.jsp" Method="post">
  根据价格查询
  <BR> 价格在<Input type=text name="priceMin" size=5>至
        <Input type=text name="priceMax" size=5>之间
         <Input type=submit  value="提交">
</Form>
</Font></BODY></HTML>
byNumber.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<%@ taglib tagdir="/WEB-INF/tags" prefix="inquire"%>
<HTML><BODY><Font size=2>
<% String number=request.getParameter("number");
%>
 <inquire:NumberConditon number="<%=number%>" /> 
 根据产品号<%=number%>查询到的记录:
<BR><%=queryResultByNumber%>
</Font></BODY></HTML>
byPrice.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<%@ taglib tagdir="/WEB-INF/tags" prefix="inquire"%>
<HTML><BODY><Font size=2>
<% String min=request.getParameter("priceMin");
   String max=request.getParameter("priceMax");
%>
 <inquire:PriceConditon  priceMin="<%=min %>" priceMax="<%=max%>" />
 价格在<%=min%>至 <%=max%>之间的记录:
 <BR><%=queryResultByPrice%>
</Font></BODY></HTML>
NumberCondition.tag

<%@ tag pageEncoding="GB2312" %>
<%@ tag import="java.sql.*" %>
<%@ attribute name="number" required="true" %>
<%@ variable name-given="queryResultByNumber" scope="AT_END" %>
<%  StringBuffer result;
    result=new StringBuffer();
    try{   Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
       }
    catch(Exception e) {} 
    Connection con;
    Statement sql; 
    ResultSet rs;
    int n=0;
    try{  result.append("<table border=1>"); 
          String uri= "jdbc:sqlserver://127.0.0.1:1433;DatabaseName=Warehouse";
          con=DriverManager.getConnection(uri,"sa","sa");
          DatabaseMetaData metadata=con.getMetaData();
          ResultSet rs1=metadata.getColumns(null,null,"product",null);
          int 字段个数=0;
          result.append("<tr>");
          while(rs1.next())
           { 字段个数++;
             String clumnName=rs1.getString(4);
             result.append("<td>"+clumnName+"</td>");
           }
          result.append("</tr>");
          sql=con.createStatement();
          String condition="SELECT * FROM product Where number = '"+number+"'";
          rs=sql.executeQuery(condition);
          while(rs.next())
          {  result.append("<tr>");
             for(int k=1;k<=字段个数;k++) 
             {  result.append("<td>"+rs.getString(k)+"</td>");
             }
             result.append("</tr>");
           }
          result.append("</table>");
          con.close();
        }
       catch(SQLException e)
        {  result.append(e);
        }
       jspContext.setAttribute("queryResultByNumber",new String(result)); 
%> 
PriceConditon.tag

<%@ tag pageEncoding="GB2312" %>
<%@ tag import="java.sql.*" %>
<%@ attribute name="priceMax" required="true" %>
<%@ attribute name="priceMin" required="true" %>
<%@ variable name-given="queryResultByPrice" scope="AT_END" %>
<%  float max=Float.parseFloat(priceMax);
    float min=Float.parseFloat(priceMin);
    StringBuffer result;
    result=new StringBuffer();
    try{   Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
       }
    catch(Exception e) {} 
    Connection con;
    Statement sql; 
    ResultSet rs;
    int n=0;
    try{  result.append("<table border=1>"); 
          String uri= "jdbc:sqlserver://127.0.0.1:1433;DatabaseName=Warehouse";
          con=DriverManager.getConnection(uri,"sa","sa");
          DatabaseMetaData metadata=con.getMetaData();
          ResultSet rs1=metadata.getColumns(null,null,"product",null);
          int 字段个数=0;
          result.append("<tr>");
          while(rs1.next())
           { 字段个数++;
             String clumnName=rs1.getString(4);
             result.append("<td>"+clumnName+"</td>");
           }
          result.append("</tr>");
          sql=con.createStatement();
          String condition="SELECT * FROM product Where price <= "+max
                         +" AND "+"price >= "+min;
          rs=sql.executeQuery(condition);
          while(rs.next())
          {  result.append("<tr>");
             for(int k=1;k<=字段个数;k++) 
             {  result.append("<td>"+rs.getString(k)+"</td>");
             }
             result.append("</tr>");
           }
          result.append("</table>");
          con.close();
        }
       catch(SQLException e)
        {  result.append(e);
        }
       jspContext.setAttribute("queryResultByPrice",new String(result)); 
%> 
例子6
example6_6.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<%@ taglib tagdir="/WEB-INF/tags" prefix="inquire"%>
<HTML><BODY><Font size=2>
<FORM action="" method=post name=form>
   排序记录:<INPUT type="radio" name="orderType" value="price">按价格(price)排序 
   <INPUT type="radio" name="orderType" value="madeTime">按生产日期(madeTime)排序 
   <Input type=submit name="g" value="提交">
</Form>
<% String orderType=request.getParameter("orderType");
   if(orderType==null)
   { orderType="";
   }
%>
  <inquire:SortTag orderType="<%=orderType%>" /> 
 根据排序方式:<%=orderType%>,排序的记录:
<BR> <%=orderResult%>
</Font></BODY></HTML>
SortTag.tag

<%@ tag pageEncoding="GB2312" %>
<%@ tag import="java.sql.*" %>
<%@ attribute name="orderType" required="true" %>
<%@ variable name-given="orderResult" scope="AT_END" %>
<%  String orderCondition="SELECT * FROM product ORDER BY "+orderType;
    StringBuffer result;
    result=new StringBuffer();
    try{   Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
       }
    catch(Exception e) {} 
    Connection con;
    Statement sql; 
    ResultSet rs;
    int n=0;
    try{  result.append("<table border=1>"); 
          String uri= "jdbc:sqlserver://127.0.0.1:1433;DatabaseName=Warehouse";
          con=DriverManager.getConnection(uri,"sa","sa");
          DatabaseMetaData metadata=con.getMetaData();
          ResultSet rs1=metadata.getColumns(null,null,"product",null);
          int 字段个数=0;
          result.append("<tr>");
          while(rs1.next())
           { 字段个数++;
             String clumnName=rs1.getString(4);
             result.append("<td>"+clumnName+"</td>");
           }
          result.append("</tr>");
          sql=con.createStatement();
          rs=sql.executeQuery(orderCondition);
          while(rs.next())
          {  result.append("<tr>");
             for(int k=1;k<=字段个数;k++) 
             {  result.append("<td>"+rs.getString(k)+"</td>");
             }
             result.append("</tr>");
           }
          result.append("</table>");
          con.close();
        }
       catch(SQLException e)
        {  result.append("");
        }
       jspContext.setAttribute("orderResult",new String(result)); 
%> 
例子7
example6_7.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<%@ taglib tagdir="/WEB-INF/tags" prefix="inquire"%>
<HTML><BODY><Font size=2>
<FORM action="" method=post name=form>
   选择:<Select name="ziduan">
         <Option value="name">产品名称 
         <Option value="number">产品号 
    </Select>
   含有:<INPUT type="text" name="keyWord" > 
        <Input type=submit name="g" value="提交">
</Form>
<%  String ziduan=request.getParameter("ziduan");
    String keyWord=request.getParameter("keyWord");
    if(ziduan==null||keyWord==null)
    { ziduan="";
      keyWord="";
    }
   byte bb[]=keyWord.getBytes("iso-8859-1");
   keyWord=new String(bb);
%>
 <inquire:KeyWord ziduan="<%=ziduan%>" keyWord="<%=keyWord%>"  /> 
 查询到的记录:
<BR> <%=foundResult%>
</Font></BODY></HTML>
KeyWord.tag

<%@ tag pageEncoding="GB2312" %>
<%@ tag import="java.sql.*" %>
<%@ attribute name="keyWord" required="true" %>
<%@ attribute name="ziduan" required="true" %>
<%@ variable name-given="foundResult" scope="AT_END" %>
<%  String condition="SELECT * FROM product Where "+ziduan+
" Like '%"+keyWord+"%'";
    StringBuffer result;
    result=new StringBuffer();
    try{   Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
       }
    catch(Exception e) {} 
    Connection con;
    Statement sql; 
    ResultSet rs;
    int n=0;
    try{  result.append("<table border=1>"); 
          String uri= "jdbc:sqlserver://127.0.0.1:1433;DatabaseName=Warehouse";
          con=DriverManager.getConnection(uri,"sa","sa");
          DatabaseMetaData metadata=con.getMetaData();
          ResultSet rs1=metadata.getColumns(null,null,"product",null);
          int 字段个数=0;
          result.append("<tr>");
          while(rs1.next())
           { 字段个数++;
             String clumnName=rs1.getString(4);
             result.append("<td>"+clumnName+"</td>");
           }
          result.append("</tr>");
          sql=con.createStatement();
          rs=sql.executeQuery(condition);
          while(rs.next())
          {  result.append("<tr>");
             for(int k=1;k<=字段个数;k++) 
             {  result.append("<td>"+rs.getString(k)+"</td>");
             }
             result.append("</tr>");
           }
          result.append("</table>");
          con.close();
        }
       catch(SQLException e)
        {  result.append(""+e);
        }
       jspContext.setAttribute("foundResult",new String(result)); 
%>
例子8
example6_8.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<%@ taglib tagdir="/WEB-INF/tags" prefix="inquire"%>
<HTML><BODY bgcolor=pink ><FONT size=2>
<FORM action="newResult.jsp" method=post>
<table border=1>
<tr><td> 输入要更新的产品的产品号:</td>
<td><Input type="text" name="number"></td></tr>
<tr><td>输入新的名称:</td><td><Input type="text" name="name"></td></tr>
<tr><td>输入新的生产日期:</td><td><Input type="text" name="madeTime"></td></tr>
<tr><td>输入新的价格:</td><td><Input type="text" name="price"></td></tr>
</table>
<BR><Input type="submit" name="b" value="提交更新">
<BR>product表更新前的数据记录是:
 <inquire:QueryTag dataSource="mystar"tableName="product" 
user="sa" password="sa"/> 
<BR> <%=queryResult %>
</Font></BODY></HTML>
newResult.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<%@ taglib tagdir="/WEB-INF/tags" prefix="renew"%>
<HTML><BODY bgcolor=cyan><Font size=2>
<% String nu=request.getParameter("number");
   String na=request.getParameter("name");
   String mT=request.getParameter("madeTime");
   String pr=request.getParameter("price");
   byte bb[]=na.getBytes("iso-8859-1");
   na=new String(bb);
%>
 <renew:NewRecord number="<%=nu%>" name="<%=na%>" 
madeTime="<%=mT%>" price="<%=pr%>"/> 
 <BR>product表更新后的数据记录是:
 <inquire:QueryTag dataSource="mystar"tableName="product" 
user="sa" password="sa"/> 
<BR> <%=queryResult %>
</Font></BODY></HTML>
NewRecord.tag

<%@ tag pageEncoding="GB2312" %>
<%@ tag import="java.sql.*" %>
<%@ attribute name="number" required="true" %>
<%@ attribute name="name" required="true" %>
<%@ attribute name="madeTime" required="true" %>
<%@ attribute name="price" required="true" %>
<%  float p=Float.parseFloat(price);
 String condition1="UPDATE product SET name= '"+name+
"' WHERE number="+"'"+number+"'" ,
           condition2="UPDATE product SET madeTime= '"+madeTime+
"' WHERE number="+"'"+number+"'",
           condition3="UPDATE product SET price= "+price+
" WHERE number="+"'"+number+"'" ;
    try{   Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
       }
    catch(Exception e) {} 
    Connection con;
    Statement sql; 
    ResultSet rs;
   try{ String uri="jdbc:sqlserver://127.0.0.1:1433;DatabaseName=Warehouse";
         con=DriverManager.getConnection(uri,"sa","sa");
         sql=con.createStatement();
         sql.executeUpdate(condition1);
         sql.executeUpdate(condition2);
         sql.executeUpdate(condition3);
         con.close();
       }
    catch(Exception e)
      {  out.print(""+e);
      }
%> 
例子9
example6_9.jsp:

<%@ page contentType="text/html;charset=GB2312" %>
<%@ taglib tagdir="/WEB-INF/tags" prefix="inquire"%>
<HTML><BODY bgcolor=pink ><FONT size=2>
<FORM action="newDatabase.jsp" method=post>
添加新记录:
<table border=1>
<tr><td> 输入产品号:</td><td><Input type="text" name="number"></td></tr>
<tr><td>输入名称:</td><td><Input type="text" name="name"></td></tr>
<tr><td>输入生产日期:</td><td><Input type="text" name="madeTime"></td></tr>
<tr><td>输入价格:</td><td><Input type="text" name="price"></td></tr>
</table>
<BR><Input type="submit" name="b" value="提交">
<BR>product表添加新记录前的记录是:
 <inquire:QueryTag dataSource="mystar"tableName="product" 
user="sa" password="sa"/> 
<BR> <%=queryResult %>
</Font></BODY></HTML>
newDatabase.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<%@ taglib tagdir="/WEB-INF/tags" prefix="inquire"%>
<HTML><BODY bgcolor=cyan><Font size=2>
<% String nu=request.getParameter("number");
   String na=request.getParameter("name");
   String mT=request.getParameter("madeTime");
   String pr=request.getParameter("price");
   byte bb[]=na.getBytes("iso-8859-1");
   na=new String(bb);
%>
 <inquire:AddRecord number="<%=nu%>" name="<%=na%>" 
madeTime="<%=mT%>" price="<%=pr%>"/> 
 <BR>product表添加新记录后的记录是:
 <inquire:QueryTag dataSource="mystar"tableName="product"
 user="sa" password="sa"/> 
<BR> <%=queryResult %>
</Font></BODY></HTML>
AddRecord.tag

<%@ tag pageEncoding="GB2312" %>
<%@ tag import="java.sql.*" %>
<%@ attribute name="number" required="true" %>
<%@ attribute name="name" required="true" %>
<%@ attribute name="madeTime" required="true" %>
<%@ attribute name="price" required="true" %>
<%  float p=Float.parseFloat(price);
    String condition=
    "INSERT INTO product VALUES"+
"("+"'"+number+"','"+name+"','"+madeTime+"',"+p+")";
    try{   Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
       }
    catch(Exception e) {} 
    Connection con;
    Statement sql; 
    ResultSet rs;
    try{ String uri= "jdbc:sqlserver://127.0.0.1:1433;DatabaseName=Warehouse";
         con=DriverManager.getConnection(uri,"sa","sa");
         sql=con.createStatement();
         sql.executeUpdate(condition);
         con.close();
       }
    catch(Exception e)
      {  out.print(""+e);
      }
%> 
例子10
example6_10.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<%@ taglib tagdir="/WEB-INF/tags" prefix="inquire"%>
<HTML><BODY bgcolor=pink ><FONT size=2>
<FORM action="delete.jsp" method=post>
删除记录:<br>输入被删除的记录的产品号:<Input type="text" name="number" size=8>
<Input type="submit" name="b" value="提交">
<BR>product表删除记录前的记录是:
 <inquire:QueryTag dataSource="mystar"tableName="product" 
user="sa" password="sa"/> 
<BR> <%=queryResult %>
</Font></BODY></HTML>
delete.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<%@ taglib tagdir="/WEB-INF/tags" prefix="inquire"%>
<HTML><BODY bgcolor=cyan><Font size=2>
<% String nu=request.getParameter("number");
%>
 <inquire:DelRecord number="<%=nu%>" /> 
 <BR>product表删除记录后的记录是:
 <inquire:QueryTag dataSource="mystar"tableName="product" 
user="sa" password="sa"/> 
<BR> <%=queryResult %>
</Font></BODY></HTML>
DelRecord.tag
<%@ tag pageEncoding="GB2312" %>
<%@ tag import="java.sql.*" %>
<%@ attribute name="number" required="true" %>
<%  String condition="DELETE FROM product WHERE number = '"+number+"'";
    try{   Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
       }
    catch(Exception e) {} 
    Connection con;
    Statement sql; 
    ResultSet rs;
   try{  String uri= "jdbc:sqlserver://127.0.0.1:1433;DatabaseName=Warehouse";
         con=DriverManager.getConnection(uri,"sa","sa");
         sql=con.createStatement();
         sql.executeUpdate(condition);
         con.close();
       }
    catch(Exception e)
      {  out.print(""+e);
      }
%>
例子11
example6_11.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="java.sql.*" %>
<HTML><BODY>
 <% Connection con=null;
    Statement sql=null; 
    ResultSet rs=null;
    try{ Class.forName("oracle.jdbc.driver.OracleDriver"); 
       }
    catch(ClassNotFoundException e){}
    try{ con=
DriverManager.getConnection
("jdbc:oracle:thin:@192.168.0.35:1521:Lea","scott","tiger");
         sql=con.createStatement();
         rs=sql.executeQuery("select * from emp");
         out.print("<Table Border>");
         out.print("<TR>");
            out.print("<TH width=100>"+"EMPNO");
            out.print("<TH width=50>"+"Ename");
         out.print("</TR>");
       while(rs.next())
       {  out.print("<TR>");
             int n=rs.getInt(1); 
             out.print("<TD >"+n+"</TD>");
             String e=rs.getString(2); 
             out.print("<TD >"+e+"</TD>");
         out.print("</TR>") ;  
        }
        out.print("</Table>");
        con.close();
     }
   catch(SQLException e1) {out.print(""+e1);}
 %>
</BODY></HTML>
例子12
example6_12.jsp:

<%@ page contentType="text/html;charset=GB2312" %>
<%@ taglib tagdir="/WEB-INF/tags" prefix="inquire"%>
<HTML><Body bgcolor=cyan><Font size=2>
  <inquire:QueryTag dataSource="redsun" tableName="chengjibiao" 
user="" password=""/>
   在<%=biao%>表查询到记录: <BR> <%=queryResult %>
</Font></Body></HTML>

例子13
example6_13.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<%@ taglib tagdir="/WEB-INF/tags" prefix="inquire"%>
<HTML><Body bgcolor=cyan><Font size=2>
 <inquire:QueryTag dataSource="star" tableName="mybiao" user="" password=""/>
   在<%=biao%>表查询到记录: <BR> <%=queryResult %>
</Font></Body></HTML>
例子14
vote.jsp(效果如图5-38所示)
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="java.sql.*" %>
<HTML><BODY>
 <%   StringBuffer nameList=new StringBuffer();
      Connection con;
      Statement sql; 
      ResultSet rs;
      try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
          }
      catch(ClassNotFoundException e){}
      try{
          con=DriverManager.getConnection("jdbc:odbc:vote","","");
          sql=con.createStatement();
          rs=sql.executeQuery("SELECT * FROM people");
          nameList.append("<FORM action=startvote.jsp  Method=post>");
          nameList.append("<Table Border>");
          nameList.append("<Table Border>");
          nameList.append("<TR>");
          nameList.append("<TH width=100>"+"姓名");
          nameList.append("<TH width=50>"+"投票选择");
          nameList.append("</TR>");
          while(rs.next())
             { nameList.append("<TR>");
               String name=rs.getString(1);
               nameList.append("<TD >"+name+"</TD>"); 
               String s="<Input type=radio name=name value="+name+" >";
               nameList.append("<TD >"+s+"</TD>");   
               nameList.append("</TR>") ;          
             }
          nameList.append("</Table>");
          nameList.append("<Input Type=submit value=提交>");
         nameList.append("</FORM ");
        con.close();
        out.print(nameList);
       }
      catch(SQLException e1) {}
%>
</BODY></HTML>

startvote.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="java.sql.*" %>
<%@ page import="java.io.*" %>
<HTML><BODY>
 <%!  int total=0; //记录总票数的变量
   synchronized void countTotal()
        { total++; 
        }   
%>
<% boolean vote=true;//决定用户是否有权投票的变量
    String name="";
    name=request.getParameter("name");   //得到被选择的候选人名字
    if(name==null)
       {   name="?";
       }
    byte a[]=name.getBytes("ISO-8859-1");
    name =new String(a);
    String IP=(String)request.getRemoteAddr();//得到投票人的IP地址
    try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        }
    catch(ClassNotFoundException e){}
    Connection con=null;
    Statement sql=null;
    ResultSet rs=null;
   //首先查询IP表,判断该用户的IP地址是否已经投过票
    try {con=DriverManager.getConnection("jdbc:odbc:vote","","");
          sql=con.createStatement();
          rs=sql.executeQuery("SELECT * FROM IP WHERE IP = "+"'"+IP+"'");
          int row=0;
          while(rs.next())
          { row++;
          }
          if(row>=1)
          {  vote=false;     //不允许投票
          } 
         }
    catch(SQLException e){}
if(name.equals("?")) 
    { out.print("您没有投票,没有权利看选举结果");
    }
   else 
   { if(vote)
     { out.print("您投了一票");
       countTotal();//将总票数加1
        //通过连接数据库,给该候选人增加一票,同时将投票人的IP地址写入数据库 
       try
         { rs=sql.executeQuery("SELECT * FROM people WHERE name = "+"'"+name+"'");
           rs.next();
           int count=rs.getInt("count");
           count++; 
           String condition=
              "UPDATE people SET count = "+count+" WHERE name="+"'"+name+"'" ;
          sql.executeUpdate(condition); //执行更新操作(投票计数)
          String to="INSERT INTO IP VALUES"+"("+"'"+IP+"'"+")";
          sql.executeUpdate(to);  //将IP地址写入IP表
         }
       catch(SQLException e)
         { out.print(""+e);
         }
      //显示投票后的表中的记录       
try{  rs=sql.executeQuery("SELECT * FROM people");
              out.print("<Table Border>");
              out.print("<TR>");
              out.print("<TH width=100>"+"姓名");
              out.print("<TH width=50>"+"得票数"); 
              out.print("<TH width=50>"+"总票数:"+total); 
             out.print("</TR>");
             while(rs.next())
             {  out.print("<TR>");
                out.print("<TD >"+rs.getString(1)+"</TD>");
                int count=rs.getInt("count");
                out.print("<TD >"+count+"</TD>");
                double b=(count*100)/total;  //得票的百分比。
                out.print("<TD >"+b+"%"+"</TD>");
                out.print("</TR>") ;  
             }
             out.print("</Table>");
            con.close();
         }
     catch(SQLException e){ }
   }
  else
   { out.print("您已经投过票了");
   }
 }
%>
</BODY> </HTML>
第7章  JSP与JavaBean
example7_1.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="tom.jiafei.*"%>
<HTML><BODY bgcolor=cyan><Font size=3>
   <jsp:useBean id="girl" class="tom.jiafei.Circle" scope="page" >
   </jsp:useBean>
  <%--通过上述JSP标记,用户获得了一个作用域是page,名字是girl的bean --%>
   <% girl.setRadius(100);
   %>
    圆的半径是:<%=girl.getRadius()%>
<br>圆的周长是:<%=girl.circlLength()%>
<br>圆的面积是:<%=girl.circleArea()%>
</BODY></HTML>
Circle.java
package tom.jiafei;
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;
     }
}
例子2

bean1.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="tom.jiafei.*"%>
<HTML>
<BODY bgcolor=cyan><Font size=1>
   <jsp:useBean id="girl" class="tom.jiafei.Circle" scope="session" >
   </jsp:useBean>
<P>圆的半径是:
  <%=girl.getRadius()%>
 <A href="bean2.jsp"><BR>bean2.jsp </A>
</BODY>
</HTML>
bean2.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="tom.jiafei.*"%>
<HTML>
<BODY bgcolor=cyan><Font size=1>
 <jsp:useBean id="girl" class="tom.jiafei.Circle" scope="session" >
   </jsp:useBean>
<P>圆的半径是:
   <%=girl.getRadius()%>
  <%girl.setRadius(400);%>
<P>修改后的圆的半径是:
   <%=girl.getRadius()%>
</BODY>
</HTML>
例子3
example7_3.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="tom.jiafei.*"%>
 <jsp:useBean id="girl" class="tom.jiafei.Circle" scope="application"/>
<HTML><BODY>
   圆的半径是:<%=girl.getRadius()%>
  <%girl.setRadius(1000);%>
  <br>修改后的圆的半径是:<%=girl.getRadius()%>
</BODY></HTML>
例子4
Circle2.java:

package tom.jiafei;
public class Circle2  
{ double radius=1;
  double circleArea=0;
  double circleLength=0;
  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;
  }
}
example7_4.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="tom.jiafei.Circle2"%>
<HTML><BODY bgcolor=cyan><FONT size=4>
   <jsp:useBean id="apple" class="tom.jiafei.Circle2" scope="page" />
    圆的半径是:<jsp:getProperty  name= "apple"  property= "radius"  />
<br>圆的面积是:<jsp:getProperty name= "apple"  property= "circleArea" />
<br>圆的周长是: <jsp:getProperty name= "apple"  property= "circleLength" />
</FONT></BODY></HTML>
例子5
Student.java:

package tom.jiafei;
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;
  }
}

example7_5.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="tom.jiafei.Student"%>
<jsp:useBean id="zhang" class="tom.jiafei.Student" scope="page"/>
<HTML><BODY bgcolor=cyan><FONT size=4>
<jsp:setProperty name="zhang" property="name" value="张小三"/>
    名字是:<jsp:getProperty name="zhang" property="name"  />
<jsp:setProperty name="zhang" property="number" value="1999001"/>
<br>学号是:<jsp:getProperty name="zhang" property="number"/>
<jsp:setProperty name="zhang" property="height" value="<%=1.78%>"/>
<br>身高是:<jsp:getProperty name="zhang" property="height"/>米
<jsp:setProperty name= "zhang" property="weight" value="67.65"/>
<br>体重是:<jsp:getProperty name="zhang" property="weight"/>公斤
</FONT></BODY></HTML>
例子6
example7_6.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="tom.jiafei.Student"%>
<jsp:useBean id="zhang" class="tom.jiafei.Student" scope="page"/>
<HTML><BODY ><FONT size=2>
<FORM action="" Method="post">
    输入姓名:<Input type=text name="name">
<br>输入学号: <Input type=text name="number">
<br>输入身高: <Input type=text name="height">
<br>输入体重:<Input type=text name="weight">
    <Input type=submit value="提交">
</FORM>
<jsp:setProperty name="zhang" property="*"/>
    名字是:<jsp:getProperty name="zhang" property="name"/>
<br>学号是:<jsp:getProperty name="zhang" property="number"/>
<br>身高是:<jsp:getProperty name="zhang" property="height" />米
<br>体重是:<jsp:getProperty name="zhang" property="weight" />公斤
</FONT></BODY></HTML>
例子7
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 str=new StringBuffer(); 
   public void setExtendsName(String s)
   { extendsName=s;
   }
   public String getExtendsName()
   { return extendsName;
   }
  public String getAllFileName()
  {  File dir=new File("D:/apache-tomcat-6.0.13/webapps/ch7");
     FileName help=new FileName(extendsName);
     String file_name[]=dir.list(help);
     for(int i=0;i<file_name.length;i++)
     {  str.append(file_name[i]+" ");
     }
     return new String(str);
  }  
}


example7_5.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="tom.jiafei.ListFile" %>
<jsp:useBean id="file" class="tom.jiafei.ListFile" scope="page"/>
<HTML><BODY ><FONT size=2>
<FORM action="" Method="post" >
  输入文件的扩展名:<Input type=text name="extendsName">
 <Input type=submit value="提交">
</FORM>
 <jsp:setProperty name="file" property="*"/>
 当前JSP页面所在目录中,扩展名是:
<jsp:getProperty name="file" property="extendsName"/>
 的文件有:
 <br><jsp:getProperty name="file" property="allFileName"/>  
</FONT></BODY></HTML>
7.4.1  三角形bean
1 / 三角形bean
Triangle.java
package tom.jiafei;
public class Triangle
{ double sideA,sideB,sideC;
  double area;
  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;
     area=Math.sqrt(p*(p-sideA)*(p-sideB)*(p-sideC));
     return area;
   }
  public boolean isTriangle()
   {  if(sideA<sideB+sideC&&sideB<sideA+sideC&&sideC<sideA+sideB)
         triangle=true;
      else
         triangle=false;
      return triangle;
   }
}
2 / JSP页面
triangle.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="tom.jiafei.Triangle"%>
<jsp:useBean id="triangle" class="tom.jiafei.Triangle" scope="page"/>
<HTML><BODY ><FONT size=2>
<FORM action="" Method="post">
<P>输入三角形的边A:<Input type=text name="sideA" value=0>
<P>输入三角形的边B:<Input type=text name="sideB" value=0>
<P>输入三角形的边C:<Input type=text name="sideC" value=0>
<Input type=submit value="提交">
<P>你给出三角形的三边是:
<jsp:setProperty  name= "triangle"  property="*"  />
<BR>边A是:<jsp:getProperty name="triangle" property="sideA"/>
<BR>边B是:<jsp:getProperty name="triangle" property="sideB"/>
<BR>边C是:<jsp:getProperty  name= "triangle"  property="sideC"/>
<P>这三个边能构成一个三角形吗?
<jsp:getProperty name="triangle" property="triangle"/>
<P>面积是:<jsp:getProperty name="triangle" property="area"/>
</FONT></BODY></HTML>
7.4.2  猜数字bean

1 / 猜数字bean
GuessNumber.java
package tom.jiafei;
public class GuessNumber
{  int answer=0,    //待猜测的整数
   guessNumber=0,   //用户的猜测
   guessCount=0;    //用户猜测的次数
   String result=null; 
   boolean right=false;
   public void setAnswer(int n)
   {  answer=n;
      guessCount=0;
   }
  public int  getAnswer()
   {  return answer;
   }
  public void  setGuessNumber(int n)
   { guessNumber=n;
     guessCount++;
     if(guessNumber==answer)
     {  result="恭喜,猜对了";
        right=true;
     }
     else if(guessNumber>answer)
     {  result="猜大了";
        right=false;  
     }
     else if(guessNumber<answer)
     {  result="猜小了";
        right=false; 
     }   
   }
  public int getGuessNumber()
   {  return guessNumber;
   }
  public int getGuessCount()
   {  return guessCount;
   }
  public String getResult()
   {  return result;
   }
  public boolean isRight()
   {  return right;
   }
 }
2 / JSP页面

getNumber.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="tom.jiafei.GuessNumber" %> 
<jsp:useBean id="guess" class="tom.jiafei.GuessNumber" scope="session"/>
<HTML><BODY bgcolor=cyan><FONT size=2>
<% int n=(int)(Math.random()*100)+1;
   String str=response.encodeRedirectURL("guess.jsp");
%>
<jsp:setProperty  name= "guess"  property="answer" value="<%=n%>"/>
  随机给你一个1到100之间的数,请猜测这个数是多少?
<Form action="<%=str%>" method=post >
  输入你的猜测: <Input type=text name="guessNumber">
<Input type=submit value="提交">
</FONT></FORM></BODY></HTML>
guess.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="tom.jiafei.GuessNumber" %>
<jsp:useBean id="guess" class="tom.jiafei.GuessNumber" scope="session" />
<% String strGuess=response.encodeRedirectURL("guess.jsp"),
          strGetNumber=response.encodeRedirectURL("getNumber.jsp");
%> 
<HTML><BODY>
<jsp:setProperty name="guess" property="guessNumber" param="guessNumber"/>
   这是第<jsp:getProperty name="guess" property="guessCount" />猜,       <jsp:getProperty name="guess" property="result"/>。
   您给出的数是 <jsp:getProperty name="guess" property="guessNumber"/>。
<% if(guess.isRight()==false)
   {
%>   <FORM action="<%=strGuess%>" method=post >
      再输入你的猜测:<Input type=text name="guessNumber">
      <Input type=submit value="提交">
     </FORM>
<% }
%>
<BR><A href="<%=strGetNumber%>">链接到getNumber.jsp重新玩猜数。</A>
</BODY></HTML>
7.4.3  日历bean
1/ 日历bean
CalendarBean.java
package tom.jiafei;
import java.util.*;
public class  
{ String  calendar=null;
  int year=2005,month=0;
  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 日历=Calendar.getInstance();
     日历.set(year,month-1,1);//将日历翻到year年month月1日,注意0表示一月
     //依次类推,11表示12月
     //获取1日是星期几(get方法返回的值是1表示星期日,返回的值是7表示星期六)
      int 星期几=日历.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++)
      { if(n<=9)
         a[i]=String.valueOf(n)+" ";
        else
         a[i]=String.valueOf(n) ;
        n++;
      }
     //用表格显示数组
     buffer.append("<table border=3>");
     buffer.append("<tr>")  ;
     String xingqi[]=
     {"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
     for(int k=0;k<7;k++)
      { buffer.append("<td>"+xingqi[k]+"</td>");
      }
      buffer.append("</tr>") ;
      for(int k=0;k<42;k=k+7)
      { buffer.append("<tr>")  ;      //换行
        for(int j=k;j<7+k;j++)
        { buffer.append("<td>"+a[j]+"</td>");
        }
        buffer.append("</tr>") ;  
      }
      buffer.append("</table");
      calendar=new String(buffer);
      return calendar;
   }
}
2/ JSP页面


showcalendar.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="tom.jiafei.CalendarBean" %> 
<HTML><BODY bgcolor=cyan><FONT size=4>
 <jsp:useBean id="rili" class="tom.jiafei.CalendarBean" scope="request"/>
  <FORM action="" method=post name=form>
   选择日历的年份:
  <Select name="year">
          <Option value="2008">2008年
          <Option value="2009">2009年
          <Option value="2010">2010年
          <Option value="2011">2011年
   </Select>
   选择日历的月份:
          <Select name="month">
          <Option value="1">1月
          <Option value="2">2月
          <Option value="3">3月
          <Option value="4">4月
          <Option value="5">5月
          <Option value="6">6月
          <Option value="7">7月
          <Option value="8">8月
          <Option value="9">9月
          <Option value="10">10月
          <Option value="11">11月
          <Option value="12">12月
          </Select>
          <BR><BR>
          <INPUT TYPE="submit" value="提交你的选择" name="submit">
          </FORM>
          <jsp:setProperty  name="rili" property="*"/>
  <FONT color="red"><jsp:getProperty name="rili" property="year"/></FONT>年
  <FONT color="blue"><jsp:getProperty name="rili" property="month"/></FONT>月
  的日历:
  <jsp:getProperty  name= "rili"  property="calendar" /> 
</FONT></BODY></HTML>
7.4.4  四则运算bean
1/ 四则运算bean
ComputerBean.java 
package tom.jiafei;
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; 
   }
}
2/ JSP页面


computer.jsp
<%@ page contentType="text/html;Charset=GB2312" %>
<%@ page import="tom.jiafei.*" %> 
 <jsp:useBean id="computer" class="tom.jiafei.ComputerBean" scope="session"/>
<HTML><BODY bgcolor=yellow><Font size=2>
  <jsp:setProperty name="computer" property="*"/>
  <FORM action="" method=post name=form>
    <Input type=text name="numberOne" 
           value=<jsp:getProperty name="computer" property="numberOne"/> size=6>
          <Select name="operator">
           <Option value="+">+
           <Option value="-">-
           <Option value="*">*
           <Option value="/">/
          </Select> 
    <Input type=text name="numberTwo" 
           value=<jsp:getProperty name="computer" property="numberTwo"/> size=6>
     =<jsp:getProperty name="computer" property="result"/> 
    <BR> <INPUT TYPE="submit" value="提交你的选择" name="submit">
  </FORM> 
</BODY></HTML>
7.4.5  浏览图片bean



1/ 浏览图片bean
Play.java 
package tom.jiafei;
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-6.0.13/webapps/ch7/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("<image src=image/"+pictureName[imageNumber]+" "+
             " width=200 height=200></image>");
      return playImage; 
  } 
}
2/ JSP页面


showPic.jsp
<%@ page contentType="text/html;Charset=GB2312" %>
<%@ page import="tom.jiafei.*"%>
<jsp:useBean id="pl" class="tom.jiafei.Play" scope="session"/>
<jsp:setProperty  name="pl" property="imageNumber" param="imageNumber"/>
<jsp:getProperty  name="pl" property="playImage"/>  
<HTML><BODY bgcolor=cyan><Font size=2>
 <Table ><FORM action="" method=post>
  <tr>
  <td><Input type=submit name="ok" value="上一张"></td>
   <Input type="hidden" name="imageNumber" value="<%=pl.getImageNumber()-1%>">
   </FORM>
   <FORM action="" method=post>
   <td><Input type=submit name="ok" value="下一张"></td>
   <Input type="hidden" name="imageNumber" value="<%=pl.getImageNumber()+1%>">
   </tr>
   </FORM>
  </Table>
</Font></BODY></HTML>

7.5.1  读文件bean
1 / 读文件bean
ReadFile.java
package tom.jiafei;
import java.io.*;
public class ReadFile
{ String fileDir="c:/",fileName="";
  String listFile,readContent;  
   public void setFileDir(String s)
   {   fileDir=s;
   }
  public String getFileDir()
   {   return fileDir;
   }
  public void setFileName(String s) 
   {   fileName=s;
   }
  public String getFileName()
   {   return fileName;
   }
  public String getListFile()       
  {  File dir=new File(fileDir);
     File file_name[]=dir.listFiles();
     StringBuffer list=new  StringBuffer();
     for(int i=0;i<file_name.length;i++)
      { if ((file_name[i]!=null)&&(file_name[i].isFile()))
          { String temp=file_name[i].toString();
            int n=temp.lastIndexOf("\\");
            temp=temp.substring(n+1);
            list.append(" "+temp); 
          }
      }
     listFile=new String(list);
     return listFile;
  }  
  public String getReadContent()   //读取文件
   { try{  File file=new File(fileDir,fileName);
           FileReader in=new FileReader(file) ;
           BufferedReader inTwo=new BufferedReader(in);
           StringBuffer stringbuffer=new StringBuffer(); 
           String s=null;
           while ((s=inTwo.readLine())!=null) 
            {  byte bb[]=s.getBytes();
               s=new String(bb);
               stringbuffer.append("\n"+s);
            }
           String temp=new String(stringbuffer);
           readContent="<TextArea rows=10 cols=62>"+temp+"</TextArea>";
        }
     catch(IOException e)
       {  readContent="<TextArea rows=8 cols=62></TextArea>"; 
         
       } 
     return readContent;
   }
}
2 / JSP页面
select.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY bgcolor=yellow><Font size=2>
<P>选择一个目录:
 <FORM action="read.jsp" method=post>
     <Select name="fileDir" >
        <Option value="D:/1000"> D:/1000
        <Option value="D:/apache-tomcat-6.0.13/webapps/ch6">Web服务目录ch6
        <Option value="D:/apache-tomcat-6.0.13/webapps/ch7">Web服务目录ch7
     </Select>   
<Input type=submit value="提交">
</FORM>
</FONT></BODY></HTML>
read.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="tom.jiafei.ReadFile" %> 
<HTML><BODY bgcolor=cyan><Font size=2>
<jsp:useBean id="file" class="tom.jiafei.ReadFile" scope="session"/>
<jsp:setProperty name="file" property="fileDir" param="fileDir"/>
<P>该目录 <jsp:getProperty name="file" property="fileDir"/>
   有如下文件:<BR> 
  <jsp:getProperty name="file" property="listFile"/>
<FORM action="" method=post name=form1>
  输入一个文件名字:<input type=text name="fileName">  
  <Input type=submit value="提交">
</FORM>
  <jsp:setProperty name="file" property="fileName" param="fileName"/>
    文件:<jsp:getProperty name="file" property="fileName"/>
    内容如下:<BR>
  <jsp:getProperty name="file" property="readContent"/> 
<BR>   
  <A href="selectDir.jsp">重新选择目录</A>
</Body></HTML></HTML>
7.5.1  写文件bean
WriteFile.java
package tom.jiafei;
import java.io.*;
public class WriterFile
{ String  filePath=null,
          fileName=null,
          fileContent=null;
  boolean success;
  public void setFilePath(String s)
   {  filePath=s;
      try{  File path=new File(filePath);
            path.mkdir();
         }
      catch(Exception e){}   
   }
  public String getFilePath()
   {  return filePath;
   }
  public void setFileName(String s)
   {  fileName=s;
   }
  public String getFileName()
   {  return fileName;
   }
  public void setFileContent(String s)
   { fileContent=s;
     byte content[]=fileContent.getBytes();
     try{ File file=new File(filePath,fileName);
          FileOutputStream in=new FileOutputStream(file) ;
          in.write(content,0,content.length);
          in.close();
          success=true;
       }
    catch(Exception e)
      {  success=false;
      }   
   }
  public boolean isSuccess()
   {  return success;
   }
}

2 / JSP页面
write.jsp

<%@ page contentType="text/html;Charset=GB2312" %>
<%@ page import="tom.jiafei.WriterFile" %> 
<jsp:useBean id="ok" class="tom.jiafei.WriterFile" scope="page" />
<jsp:setProperty name="ok" property="filePath" param="filePath" />
<jsp:setProperty name="ok" property="fileName" param="fileName" />
<jsp:setProperty name="ok" property="fileContent" param="fileContent" />
<HTML><BODY bgcolor=cyan><Font size=2>
 <FORM action="" method=post>
   请选择一个目录:<Select name="filePath" >
                     <Option value="C:/1000">C:/1000
                     <Option value="D:/2000">D:/2000
                   </Select> 
<BR>输入保存文件的名字:<Input type=text name="fileName" >
<BR>输入文件的内容:<BR>
   <TextArea name="fileContent" Rows="10" Cols="40"></TextArea>
<BR><Input type=submit value="提交">
</FORM>
<% if(ok.isSuccess()==true)
   {
%>  你写文件成功,文件所在目录:
    <jsp:getProperty name="ok" property="filePath" />
    <BR>文件名字:
    <jsp:getProperty name="ok" property="fileName"/> 
<%
   }
%>
</FONT></BODY></HTML>
7.5.1  上传文件bean
1 / 上传文件bean
UpFile.java
package tom.jiafei;
import java.io.*;
import javax.servlet.http.*;
public class UpFile
{   HttpServletRequest request;
    HttpSession session;
    String upFileMessage="",showImage;
    public void setRequest(HttpServletRequest request)
    {  this.request=request;
    }
    public void setSession(HttpSession session)
    {  this.session=session;
    }
    public String getShowImage()
    {  return showImage;
    }
    public String getUpFileMessage()
    {  String fileName=null;
       try{ String tempFileName=(String)session.getId();//用户的session的id
            File dir=new File("D:/apache-tomcat-6.0.13/webapps/ch7");
            File f1=new File(dir,tempFileName);
            FileOutputStream o=new FileOutputStream(f1);
            InputStream in=request.getInputStream();
            byte b[]=new byte[10000];
            int n;
            while( (n=in.read(b))!=-1)  //将用户上传的全部信息存入f1
              {   o.write(b,0,n);  
              }
            o.close();
            in.close();
            RandomAccessFile random=new RandomAccessFile(f1,"r");
            int second=1;   //读出f1的第2行,析取出上传文件的名字:
            String secondLine=null;
            while(second<=2)  
               { secondLine=random.readLine();
                 second++;
               }
            //获取第2行中目录符号'\'最后出现的位置
             int position=secondLine.lastIndexOf('\\');
           //用户上传的文件的名字是:
            fileName=secondLine.substring(position+1,secondLine.length()-1);
            byte  cc[]=fileName.getBytes("ISO-8859-1");
            fileName=new String(cc);
            random.seek(0); //再定位到文件f1的开头。
            //获取第4行回车符号的位置: 
            long  forthEndPosition=0;
            int forth=1;
            while((n=random.readByte())!=-1&&(forth<=4))  
               {  if(n=='\n')
                    {  forthEndPosition=random.getFilePointer();
                      forth++;
                    }
                }
            //根据用户上传文件的名字,将该文件存入磁盘:
            File f2=new File(dir,fileName); 
            RandomAccessFile random2=new RandomAccessFile(f2,"rw"); 
             //确定出文件f1中包含用户上传的文件的内容的最后位置,即倒数第6行。
            random.seek(random.length());
            long endPosition=random.getFilePointer();
            long mark=endPosition;
            int j=1;
            while((mark>=0)&&(j<=6))  
             {   mark--;
                 random.seek(mark);
                 n=random.readByte();
                 if(n=='\n')
                 {    endPosition=random.getFilePointer();
                      j++;
                }
             }
          //将random流指向文件f1的第4行结束的位置:
          random.seek(forthEndPosition);
          long startPoint=random.getFilePointer();
         //从f1读出用户上传的文件存入f2(读取第4行结束位置至倒数第6行之间的内容)
          while(startPoint<endPosition-1)
            { n=random.readByte();
              random2.write(n); 
              startPoint=random.getFilePointer();
            }
          random2.close();
          random.close();
          f1.delete(); //删除临时文件
          upFileMessage=fileName+" 上传成功(Successfully UpLoad)";
          showImage=fileName;
          return upFileMessage;
       }
    catch(Exception exp)
      {   if(fileName!=null)
           {  upFileMessage=fileName+"上传失败( Fail to UpLoad)";
                 return upFileMessage;
           }
          else
           {  upFileMessage="";
              return upFileMessage;
           }
      }
   }
}

2 / JSP页面
upfile.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="tom.jiafei.UpFile" %> 
<jsp:useBean id="upFile" class="tom.jiafei.UpFile" scope="session"/>
<HTML><BODY bgcolor=yellow size=3> 
   <br>选择要上传的文件:<br>
   <FORM action="" method="post" ENCTYPE="multipart/form-data">
      <INPUT type=FILE name="boy" size="30"> 
      <BR> <INPUT type="submit" name ="g" value="提交">
   </FORM>
   <%  upFile.setRequest(request);
       upFile.setSession(session);
   %>
  <jsp:getProperty  name="upFile" property="upFileMessage"/>
  <BR> <img src=<jsp:getProperty name="upFile" property="showImage"/> 
width=80 height=80></img>
</BODY></HTML>
7.6.1  查询记录bean
1 / 查询记录bean
QueryBean.java
package tom.jiafei;
import java.sql.*;
public class QueryBean
{   String databaseName="";        //数据库名
    String tableName="";           //表名
    String user=""       ;         //用户
    String secret="" ;            //密码 
    StringBuffer queryResult;     //查询结果
    public QueryBean()
    {  queryResult=new StringBuffer();
       try{  Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
          }
       catch(Exception e) {} 
    }
    public void setDatabaseName(String s)
    {  databaseName=s.trim();
       queryResult=new StringBuffer();  
    }
    public String getDatabaseName()
    {  return databaseName;
    }
    public void setTableName(String s)
    {  tableName=s.trim();
       queryResult=new StringBuffer();
    }
    public String getTableName()
    {  return tableName;
    }
    public void setSecret(String s)
    {  secret=s.trim();
       queryResult=new StringBuffer();
    }
    public String getSecret()
    {  return secret;
    }
    public void setUser(String s)
    {  user=s.trim();
       queryResult=new StringBuffer();
    }
    public String getUser()
    {  return user;
    } 
    public StringBuffer getQueryResult()
    {  Connection con;
       Statement sql; 
       ResultSet rs;
      try { queryResult.append("<table border=1>"); 
            String uri=
"jdbc:sqlserver://127.0.0.1:1433;DatabaseName="+databaseName;
            String id=user;
            String password=secret;
            con=DriverManager.getConnection(uri,id,password);
            DatabaseMetaData metadata=con.getMetaData();
            ResultSet rs1=metadata.getColumns(null,null,tableName,null);
            int 字段个数=0;
            queryResult.append("<tr>");
            while(rs1.next())
             { 字段个数++;
               String clumnName=rs1.getString(4);
               queryResult.append("<td>"+clumnName+"</td>");
             }
            queryResult.append("</tr>");
            sql=con.createStatement();
            rs=sql.executeQuery("SELECT * FROM "+tableName);
            while(rs.next())
            {  queryResult.append("<tr>");
               for(int k=1;k<=字段个数;k++) 
                {  queryResult.append("<td>"+rs.getString(k)+"</td>");
                }
               queryResult.append("</tr>");
            }
            queryResult.append("</table>");
            con.close();
           }
       catch(SQLException e)
          {  queryResult.append("请输入正确的用户名和密码");
          }
       return queryResult;
   }    
}
2 / JSP页面
inquire.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="tom.jiafei.QueryBean" %> 
<jsp:useBean id="base" class="tom.jiafei.QueryBean" scope="page"/>
<jsp:setProperty name="base" property="databaseName" value="Warehouse"/>
<jsp:setProperty name="base" property="tableName" value="product"/>
<jsp:setProperty name="base" property="user" value="sa"/>
<jsp:setProperty name="base" property="secret" value="sa"/>
<HTML><Body bgcolor=cyan><Font size=2>
 在<jsp:getProperty name="base" property="tableName"/>表查询到记录:
<BR> <jsp:getProperty name="base" property="queryResult"/>
</Font></Body></HTML>
7.6.2  分页显示记录bean
1 / 分页显示记录bean
ShowRecordByPage.java
package tom.jiafei;
import java.sql.*;
import com.sun.rowset.*;
public class ShowRecordByPage
{   int pageSize=10;                      //每页显示的记录数
    int pageAllCount=0;                   //分页后的总页数
    int showPage=1   ;                   //当前显示页 
    StringBuffer presentPageResult;      //显示当前页内容
    CachedRowSetImpl rowSet;            //用于存储ResultSet对象
    String databaseName="";             //数据库名称
    String tableName="";                //表的名字
    String user=""       ;             //用户
    String password="" ;               //密码 
    String 字段[]=new String[100]  ;
    int 字段个数=0;
    public ShowRecordByPage()
    {  presentPageResult=new StringBuffer();
       try{Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 
  }
       catch(Exception e){} 
    }
    public void setPageSize(int size)
    {  pageSize=size;
       字段个数=0;
       String uri=
"jdbc:sqlserver://127.0.0.1:1433;DatabaseName="+databaseName;
       try{  Connection con=DriverManager.getConnection(uri,user,password);
             DatabaseMetaData metadata=con.getMetaData();
             ResultSet rs1=metadata.getColumns(null,null,tableName,null);
             int k=0;
             while(rs1.next())
              { 字段个数++;
                字段[k]=rs1.getString(4); //获取字段的名字
                k++;
              }
            Statement sql=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_READ_ONLY);
            ResultSet rs=sql.executeQuery("SELECT * FROM "+tableName);
            rowSet=new CachedRowSetImpl();  //创建行集对象
            rowSet.populate(rs);
            con.close();                  //关闭连接 
            rowSet.last();
            int m=rowSet.getRow();    //总行数
            int n=pageSize;
            pageAllCount=((m%n)==0)?(m/n):(m/n+1);
           }
        catch(Exception exp){}
    }
    public int getPageSize()
    {  return pageSize;
    } 
    public int getPageAllCount()
    {  return pageAllCount;
    } 
    public void setShowPage(int n)
    {  showPage=n;
    }
    public int getShowPage()
    { return showPage;
    }
    public StringBuffer getPresentPageResult()
    {  if(showPage>pageAllCount)
          showPage=1;
       if(showPage<=0)
          showPage=pageAllCount;
       presentPageResult=show(showPage);
       return presentPageResult; 
    }
    public StringBuffer show(int page)
    {  StringBuffer str=new StringBuffer();
       str.append("<table border=1>");
       str.append("<tr>");
       for(int i=0;i<字段个数;i++)
       {  str.append("<th>"+字段[i]+"</th>");
       }  
       str.append("</tr>");
       try{  rowSet.absolute((page-1)*pageSize+1);
             for(int i=1;i<=pageSize;i++)
              { str.append("<tr>");
                 for(int k=1;k<=字段个数;k++)
                  { str.append("<td>"+rowSet.getString(k)+"</td>");
                  }
                str.append("</tr>");
                rowSet.next();
              }
          }
       catch(SQLException exp){}
       str.append("</table>");   
       return str;
    }
   public void setDatabaseName(String s)
    {  databaseName=s.trim();
    }
    public String getDatabaseName()
    {  return databaseName;
    }
    public void setTableName(String s)
    {  tableName=s.trim();
    }
    public String getTableName()
    {  return tableName;
    }
    public void setPassword(String s)
    {  password=s.trim();;
    }
    public void setUser(String s)
    {  user=s.trim();
    }
    public String getUser()
    {  return user;
    } 
}
2 / JSP页面
showRecord.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="java.sql.*" %>
<%@ page import="tom.jiafei.ShowRecordByPage" %>
<jsp:useBean id="look" class="tom.jiafei.ShowRecordByPage" scope="session"/>
<jsp:setProperty name="look" property="databaseName" value="pubs"/>
<jsp:setProperty name="look" property="tableName" value="jobs"/>
<jsp:setProperty name="look" property="user" value="sa"/>
<jsp:setProperty name="look" property="password" value="sa"/>
 <jsp:setProperty name="look" property="pageSize" value="5"/>
<HTML><BODY bgcolor=yellow>
     数据库
     <jsp:getProperty  name= "look" property="databaseName"/>中
     <jsp:getProperty  name= "look" property="tableName"/>表的记录将被分页显示。
<br>共有 <jsp:getProperty name="look" property="pageAllCount"/> 页,
<br>每页最多显示<jsp:getProperty  name="look"  property="pageSize" />条记录。
   <jsp:setProperty  name= "look"  property="showPage"  />
  <jsp:getProperty  name= "look"  property="presentPageResult" />
  <BR>单击“前一页”或“后一页”按纽查看记录(当前显示第
  <jsp:getProperty  name= "look"  property="showPage" /> 页)。
 <Table>
  <tr><td><FORM action="">
        <Input type=hidden name="showPage" value="<%=look.getShowPage()-1 %>" >
        <Input type=submit name="g" value="前一页">
        </FORM>
      </td>
      <td><FORM action="">
        <Input type=hidden name="showPage" value="<%=look.getShowPage()+1 %>" >
        <Input type=submit name="g" value="后一页">
        </Form>
      </td>
      <td> <FORM action="">
           输入页码:<Input type=text name="showPage" size=5 >
           <Input type=submit name="g" value="提交">
           </FORM>
      </td>
  </tr>
  </Table>
</BODY></HTML>
7.7  标准化考试 bean
A.txt
AC
1. 北京奥运什么时间开幕?<br>
   A.2008-08-08  B. 2008-08-01 <br>C.2008-10-01 D. 2008-07-08
******
2. 下列哪个国家不属于亚洲?<br>
A.沙特  B.印度 <br>C.巴西  D.越南
 *****
endend
1 / 标准化考试bean

Test.java:
package tom.jiafei;
import java.io.*;
public class Test
{  String filename="",      //存放考题文件名字的字符串
   correctAnswer="?????",   //存放正确答案的字符串
   //存放试题和用户提交的答案的字符串
   testContent="",
   selection="";
   int score=0;         //考试者的得分
   boolean 批分结束=false;
   File f=null;
   FileReader in=null;
   BufferedReader buffer=null;
   public void setFilename(String name)
   {  filename=name; 
     //当选择了新的考题文件后,将用户的答案字符串清空
     //将分数设为0
      score=0;
      selection="";
      批分结束=false;
      //读取试题文件的第一行:标准答案
     try{  f=new File("D:/2000",filename);
           in=new FileReader(f);
           buffer=new BufferedReader(in); 
           correctAnswer=(buffer.readLine()).trim();//读取一行,去掉前后空格
         }
     catch(Exception e)
        { testContent="没有选择试题";
           buffer=null;
        }
  }
  public String getFilename()
  {  return filename;
  }
  public String getTestContent()  //获取试题的内容
  { try {  String s=null;
           StringBuffer temp=new StringBuffer();
           if(buffer!=null) //如果用户选择了试题文件,buffer就不是空对象
           {  while((s=buffer.readLine())!=null) //继续取某个试题
              { if(s.startsWith("**")) //试题结束标志
                   break;
                temp.append(s);
                if(s.startsWith("endend")) //试题文件结束标志
                 {  in.close();          //关闭和文件的连接
                   buffer.close(); 
                 }
                 testContent=new String(temp);  
               }
            }
            else
            { testContent=new String("没有选择试题");
            }
          }
      catch(Exception e)
         { testContent="试题无内容,考试结束了!!";
           try{ in.close();
                 buffer.close();
               }
            catch(IOException exp){}
         }
     return testContent;
  }
  public void setSelection(String s)
  {  selection=selection+s; //将用户提交的答案依次尾加到selection
  }
  public int getScore()
  {  int length1=selection.length();
     int length2=correctAnswer.length();
     int i=length1-1;               //用户提交的第i题答案在selection中的位置
     //判定分数
     if((i!=-1)&&(i<=length2-1))
     { if((selection.charAt(i)==correctAnswer.charAt(i))&&(批分结束==false))
       { score++;
        }
       if(i==length2-1)
        {  批分结束=true;
        }
     }
    return score;
  }
}

2 / JSP页面
test.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="tom.jiafei.Test" %>
 <jsp:useBean id="test" class="tom.jiafei.Test" scope="session"/>
<HTML><BODY bgcolor=cyan>
<FORM action="" method="post">
 选择试题文件:
 <Select name="filename"  value="A.txt">
          <Option value="A.txt" >A.txt
          <Option value="B.txt"> B.txt
          <Option value="C.txt"> C.txt
          <Option value="D.txt"> D.txt
          <Option value="E.txt"> E.txt
 </Select>
<Input type="submit" name="sub" value="确定">
</FORM>
 <%-- 过bean设置文件的名字 ,下面的标记只有提交了相应的表单才被执行:--%>
  <jsp:setProperty  name="test"  property="filename" param="filename"/>
  你选择的试题是:<jsp:getProperty  name= "test" property="filename"/>
<%-- 通过bean获取试题的内容--%>
<br><Font size=3 color=blue>
    <jsp:getProperty name="test" property="testContent"/>
    </font>
<BR><FORM action="" method="post">
     请选择:
    <Input type="radio" name="selection" value="A">A
    <Input type="radio" name="selection" value="B">B
    <Input type="radio" name="selection" value="C">C
    <Input type="radio" name="selection" value="D">D
    <Input type="submit" name="tijiao" value="提交答案">
</FORM>
<%-- 下面的标记只有提交了相应的表单才被执行:--%>
  <jsp:setProperty name="test" property="selection"/>
  您现在累计得分:<jsp:getProperty name="test" property="score"/>
</BODY></HTML>
第8章  Java Servlet基础
例子1
JSP页面
example8_1.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY bgcolor=cyan><Font size=2>
<FORM action="getNumber" method=post>
 输入一个正整数:<Input Type=text name=number >
 <br><Input Type=submit value="提交">
</FORM>
</Font></BODY></HTML>

Servlet类
Computer.java

package china.dalian;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class Computer extends HttpServlet
{  String servletName;
   public void init(ServletConfig config) throws ServletException
    { super.init(config);
      servletName=getServletName();
    }
   public void service(HttpServletRequest request,HttpServletResponse response)
                       throws IOException
    {  response.setContentType("text/html;charset=GB2312");
       PrintWriter out=response.getWriter();
       out.println("<html><body>");
       String str=request.getParameter("number");
       out.print("我是一个servlet对象,名字是:"+servletName+"。<br>");
       out.print("我负责计算并显示"+str+"的因子:<br>"); 
       int n=0;
       try{  n=Integer.parseInt(str);
             for(int i=1;i<=n;i++)
             {  if(n%i==0)
                 out.println(" "+i);
             }
          }
        catch(NumberFormatException e)
          { out.print(" "+e);
          }       
       out.println("</body></html>");
    } 
}
例子2)
JSP页面
example8_2.jsp

<%@ page contentType="text/html;Charset=GB2312" %>
<HTML><BODY bgcolor=cyan><Font size=3>
   单击超链接查看俄文字母表:
   <BR><A href="helpMeShow">查看俄文字母表</A>
</Font></BODY></HTML>

Servlet类
ShowLetter.java

package china.dalian;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class ShowLetter extends HttpServlet
{  public void init(ServletConfig config) throws ServletException
    { super.init(config);
    }
   public void service(HttpServletRequest request,HttpServletResponse response)
                       throws IOException
    {  response.setContentType("text/html;charset=GB2312");
       PrintWriter out=response.getWriter();
       out.println("<html><body>");
       out.print("<BR>小写俄文字母: ");
       for(char c='а';c<='я';c++)
       {  out.print(" "+c);
       }
       out.print("<BR>大写俄文字母: ");
       for(char c='А';c<='Я';c++)
       {  out.print(" "+c);
       }
       out.println("</body></html>");
    } 
} 
例子3(效果如图8-6所示)
JSP页面
example8_3.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY bgcolor=cyan><Font size=3>
<A Href="computerPI" >参与计算PI的值<A>
</BODY></HTML>

Servlet类
ShowLetter.java

package china.dalian;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class ComputerPI extends HttpServlet
{ double sum=0,i=1,j=1;
  int number=0;
  public void init(ServletConfig config) throws ServletException
    {super.init(config);
    }
  public synchronized void service(HttpServletRequest request,
HttpServletResponse response) throws IOException
    {   response.setContentType("text/html;charset=GB2312");
        PrintWriter out=response.getWriter();
        out.println("<html><body>");
        number++;
        sum=sum+i/j;
        j=j+2;
        i=-i;  
        out.println("servlet:"+getServletName()+"已经被请求了"+number+"次");
        out.println("<BR>现在PI的值是:");
        out.println(4*sum);
        out.println("</body></html>");
    } 
}
例子4
JSP页面
example8_4.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY ><Font size=2>
<FORM action="show" method=post>
  输入字符串,提交给servlet(Post方式):
  <br><Input Type=text name=str>
  <Input Type=submit value="提交">
</FORM>
<FORM action="show" method=get>
  输入字符串,提交给servlet(Get方式):
  <br><Input Type=text name=str>
  <Input Type=submit value="提交">
</FORM>
</FORM>
</BODY></HTML>

Servlet类
Show.java

package china.dalian;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class Show extends HttpServlet
{  public void init(ServletConfig config) throws ServletException
    {super.init(config);
    }
   public  void  doPost(HttpServletRequest request,HttpServletResponse response)                         throws ServletException,IOException
    {   response.setContentType("text/html;charset=GB2312");
        PrintWriter out=response.getWriter();
        out.println("<html><body>");
        String s=request.getParameter("str");
        byte bb[]=s.getBytes("iso-8859-1");
        s=new String(bb); 
        int n=s.length();
        out.print("\""+s+"\""+"的长度:"+n+"<br>");
        out.println("</body></html>");
    } 
   public  void  doGet(HttpServletRequest request,HttpServletResponse response) 
                        throws ServletException,IOException
    {  doPost(request,response);
       response.setContentType("text/html;charset=GB2312");
       PrintWriter out=response.getWriter();
       out.println("<html><body>");
       String s=request.getParameter("str");
       byte bb[]=s.getBytes("iso-8859-1");
       s=new String(bb); 
       if(s.startsWith("Hello"))
          out.print("\""+s+"\""+"的前缀是:Hello"); 
       else
         out.print("\""+s+"\""+"的前缀不是:Hello"); 
       out.println("</body></html>"); 
    }
}
例子5
JSP页面
example8_5.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY bgcolor=cyan><Font size=2>
<FORM action="verifyYourMessage" method=post>
  输入一个实数: <Input Type=text name=number>
 <br><Input Type=submit value="提交">
</FORM></BODY></HTML>

Servlet类
Verify.java

package china.dalian;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class Verify extends HttpServlet
{  public void init(ServletConfig config) throws ServletException
    {super.init(config);
    }
   public void doPost(HttpServletRequest request,HttpServletResponse response) 
                        throws ServletException,IOException
    {   String number=request.getParameter("number");     
        try{ double n=Double.parseDouble(number);
             if(n>2000||n<-2000)
             { response.sendRedirect("example8_5.jsp");  //重定向
             }
             else
             {  RequestDispatcher dispatcher= 
                request.getRequestDispatcher("forYouShowMessage");
                dispatcher.forward(request, response);      //转发
             }
           }
        catch(NumberFormatException e)
           {  response.sendRedirect("example8_5.jsp");  //重定向
           }
    } 
   public  void  doGet(HttpServletRequest request,HttpServletResponse response) 
                        throws ServletException,IOException
    {   doPost(request,response);
    }
}
ShowMessage.java

package china.dalian;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class ShowMessage extends HttpServlet
{  public void init(ServletConfig config) throws ServletException
    {super.init(config);
    }
   public  void  doPost(HttpServletRequest request,HttpServletResponse response)                         throws ServletException,IOException
    {   response.setContentType("text/html;charset=GB2312");
        PrintWriter out=response.getWriter();
        String number=request.getParameter("number"); //获取客户提交的信息
        double n=Double.parseDouble(number);
        out.println(number+"的平方:"+(n*n));
    } 
   public  void  doGet(HttpServletRequest request,HttpServletResponse response) 
                        throws ServletException,IOException
    {  doPost(request,response);
    }
}
例子6
JSP页面
example8_6.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY ><Font size=2>
<% session.setAttribute("message","请您猜数字");
   int randomNumber=(int)(Math.random()*100)+1;        //获取一个随机数
   session.setAttribute("savedNumber",new Integer(randomNumber));
%>
访问或刷新该页面可以随机得到一个1至100之间的数.
<BR>单击超链接去猜出这个数:<A href="inputNumber.jsp">去猜数字</A>
</Font></BODY></HTML>
inputNumber.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY ><Font size=2>
<% String message=(String)session.getAttribute("message"); //获取会话中的信息 
%>
<Table border=1>
<FORM action="handleGuess" method=post>
 <tr><td> 输入您的猜测:</td>
 <td><Input Type=text name=clientGuess size=4>
<Input Type=submit value="提交"></td>
 </tr><td> 提示信息:</td>
      <td> <%= message%></td>
</FORM>
 <FORM action="example8_6.jsp" method=post>
  <tr><td>单击按钮重新开始: </td>
      <td><Input Type=submit value="随机得到一个1至100之间的数字"></td>
  </tr>
</FORM>
</Font></BODY></HTML>

Servlet类
HandleGuess.java

package china.dalian;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HandleGuess extends HttpServlet
{  public void init(ServletConfig config) throws ServletException
    {super.init(config);
    }
   public  void  doPost(HttpServletRequest request,HttpServletResponse response)                         throws ServletException,IOException
    {  HttpSession session=request.getSession(true);  //获取客户的session对象
       String str=request.getParameter("clientGuess"); //获取客户猜测的数字
       int guessNumber=-1;
       try{  guessNumber=Integer.parseInt(str);
           }
       catch(Exception e)
          {  response.sendRedirect("inputNumber.jsp");
          }
       int savedNumber=
((Integer)session.getAttribute("savedNumber")).intValue();
       if(guessNumber<savedNumber)
        {  session.setAttribute("message","您猜小了");
           response.sendRedirect("inputNumber.jsp");          
        }
       if(guessNumber>savedNumber)
        {  session.setAttribute("message","您猜大了");
           response.sendRedirect("inputNumber.jsp");          
        }
       if(guessNumber==savedNumber)
        {  session.setAttribute("message","您猜对了");
           response.sendRedirect("inputNumber.jsp");          
        }
    } 
   public  void  doGet(HttpServletRequest request,HttpServletResponse response) 
                        throws ServletException,IOException
    {   doPost(request,response);
    }
}
第9章  MVC模式
9.4.1  计算三角形和梯形的面积
web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app>
<servlet>
    <servlet-name>computerArea</servlet-name>
    <servlet-class>user.yourservlet.HandleArea</servlet-class>
</servlet>
<servlet-mapping>
  <servlet-name>computerArea</servlet-name>
  <url-pattern>/lookArea</url-pattern>
</servlet-mapping>
</web-app>
1.模型(Javabean)
Area.java
package user.yourbean;
public class Area
{  double a,b,c,area; 
   String mess;
   public void setMess(String mess)
   { this.mess=mess;
   }
   public String getMess()
   { return mess;
   } 
   public void setA(double a)
   { this.a=a;
   }
  public void setB(double b)
   { this.b=b;
   }
  public void setC(double c)
   { this.c=c;
   }
  public void setArea(double s)
   { area=s;
   }
  public double getArea()
   {  return area;
   }
}
2.控制器(servlet)
HandleArea.java
package user.yourservlet;
import user.yourbean.Area;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HandleArea extends HttpServlet
{  public void init(ServletConfig config) throws ServletException
    {super.init(config);
    }
   public void doPost(HttpServletRequest request,HttpServletResponse response) 
                        throws ServletException,IOException
    { Area dataBean=new Area();  //创建Javabean对象
      request.setAttribute("data",dataBean);//将dataBean存储到request对象中
      try{  double a=Double.parseDouble(request.getParameter("a"));
            double b=Double.parseDouble(request.getParameter("b"));
            double c=Double.parseDouble(request.getParameter("c"));
            dataBean.setA(a);            //将数据存储在dataBean中 
            dataBean.setB(b);            
            dataBean.setC(c); 
            double s=-1;
            double p=(a+b+c)/2.0;
            if(a+b>c&&a+c>b&&b+c>a)
              s=Math.sqrt(p*(p-a)*(p-b)*(p-c));
            dataBean.setArea(s);         //将数据存储在dataBean中
            dataBean.setMess("三角形面积");  
         }
        catch(Exception e)
         {   dataBean.setArea(-1);
             dataBean.setMess(""+e);  
         }
       RequestDispatcher dispatcher=
request.getRequestDispatcher("showResult.jsp");
//请求showResult.jsp显示dataBean中的数据:
       dispatcher.forward(request,response);       } 
   public  void  doGet(HttpServletRequest request,HttpServletResponse response) 
                        throws ServletException,IOException
    { Area dataBean=new Area();  //创建Javabean对象
      request.setAttribute("data",dataBean);//将dataBean存储到request对象中
      try{  double a=Double.parseDouble(request.getParameter("a"));
            double b=Double.parseDouble(request.getParameter("b"));
            double c=Double.parseDouble(request.getParameter("c"));
            dataBean.setA(a);            //将数据存储在dataBean中 
            dataBean.setB(b);            
            dataBean.setC(c); 
            double s=-1;
            s=(a+b)*c/2.0;
            dataBean.setArea(s);         //将数据存储在dataBean中 
            dataBean.setMess("梯形面积");   
         }
        catch(Exception e)
         {   dataBean.setArea(-1);
             dataBean.setMess(""+e);  
         }
       RequestDispatcher dispatcher=
request.getRequestDispatcher("showResult.jsp");
//请求showResult.jsp显示dataBean中的数据 :
       dispatcher.forward(request,response);  
  }
}
3.视图(JSP页面)
inputData.jsp
<%@ page contentType="text/html;Charset=GB2312" %>
<HTML><BODY bgcolor=cyan><Font size=2>
<FORM action="lookArea" Method="post" >
   三角形:
  <BR>输入边A:<Input type=text name="a" size=4>
      输入边B:<Input type=text name="b" size=4>
      输入边C:<Input type=text name="c" size=4>
  <Input type=submit value="提交">
</FORM>
<FORM action="lookArea" Method="get" >
   梯形:
  <BR>输入上底:<Input type=text name="a" size=4>
      输入下底:<Input type=text name="b" size=4>
      输入高:  <Input type=text name="c" size=4>
  <Input type=submit value="提交">
</FORM>
</Font></BODY></HTML>
showResult.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="user.yourbean.Area"%> 
<jsp:useBean id="data" type="user.yourbean.Area" scope="request"/>
<HTML><BODY bgcolor=yellow>
   <jsp:getProperty name="data" property="mess"/>:
   <jsp:getProperty name="data" property="area"/>
</BODY></HTML>
9.4.2  简单的计算器
1.模型(Javabean)
ComputerBean.java
package user.yourbean;
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 void setResult(double r)
   {  result=r; 
   }
   public double getResult()
   {  return result; 
   }
}
2.控制器(servlet)
HandeComputer.java
package user.yourservlet;
import user.yourbean.ComputerBean;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HandleComputer extends HttpServlet
{  public void init(ServletConfig config) throws ServletException
    {super.init(config);
    }
   public  void  doPost(HttpServletRequest request,HttpServletResponse response)                         throws ServletException,IOException
    {   ComputerBean dataBean=null;
        HttpSession session=request.getSession(true);
        try{  dataBean=(ComputerBean)session.getAttribute("ok");
              if(dataBean==null)
              { dataBean=new ComputerBean(); //创建Javabean对象
//将dataBean存储到session对象中: 
                session.setAttribute("ok",dataBean);
              }
           }
        catch(Exception exp)
           { dataBean=new ComputerBean();  //创建Javabean对象
             session.setAttribute("ok",dataBean);//将dataBean存储到session对象中  
           } 
        double numberOne=
Double.parseDouble(request.getParameter("numberOne"));
        double numberTwo=
Double.parseDouble(request.getParameter("numberTwo"));
        String operator=request.getParameter("operator");
        double result=0;
        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;
        }
       dataBean.setNumberOne(numberOne);     //将数据存储在dataBean中 
       dataBean.setNumberTwo(numberTwo);  
       dataBean.setOperator(operator);   
       dataBean.setResult(result);
       RequestDispatcher dispatcher=
request.getRequestDispatcher("lookResult.jsp");
//请求lookResult.jsp显示dataBean中的数据 :
       dispatcher.forward(request, response);   
 } 
   public  void  doGet(HttpServletRequest request,HttpServletResponse response) 
                        throws ServletException,IOException
    {   doPost(request,response);
    }
}

3.视图(JSP页面)
inputNumber.jsp
<%@ page contentType="text/html;Charset=GB2312" %>
<HTML><BODY bgcolor=cyan><Font size=2>
  <FORM action="helpComputer" method=post name=form>
   <table>
   <tr><td> 输入两个数:</td>
       <td> <Input type=text name="numberOne" value=0 size=6></td>
     <td> <Input type=text name="numberTwo" value=0 size=6></td>
   </tr>
   <tr><td>选择运算符号:</td>
       <td> <Select name="operator">
              <Option value="+">+(加)
              <Option value="-">-(减)
              <Option value="*">*(乘)
              <Option value="/">/(除)
            </Select> 
       </td>
       <td> <INPUT TYPE="submit" value="提交选择" name="submit"></td>
   </tr>
   </table>
   </FORM> 
</Font></BODY></HTML>
lookResult.jsp(效果如图9-6)
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="user.yourbean.ComputerBean" %> 
<HTML><BODY bgcolor=yellow><Font size=2>
 <jsp:useBean id="ok" type="user.yourbean.ComputerBean" scope="session"/>
   运算结果:
  <jsp:getProperty name="ok" property="numberOne"/>
  <jsp:getProperty name="ok" property="operator"/>
  <jsp:getProperty name="ok" property="numberTwo"/> =
  <jsp:getProperty name="ok" property="result"/> 
   <FORM action="helpComputer" method=post name=form>
   <table>
   <tr><td> 输入两个数:</td>
       <td> <Input type=text name="numberOne" 
                   value="<jsp:getProperty name="ok" property="result"/>"
                   size=10></td>
     <td> <Input type=text name="numberTwo" value=0 size=10></td>
   </tr>
   <tr>
      <td>选择运算符号:</td>
      <td> <Select name="operator">
              <Option value="+">+(加)
              <Option value="-">-(减)
              <Option value="*">*(乘)
              <Option value="/">/(除)
            </Select> 
       </td>
       <td> <INPUT TYPE="submit" value="提交选择" name="submit"></td>
   </tr>
   </table>
</BODY></HTML>

9.5   MVC模式与文件操作
1.模型(Javabean)
FileMessage.java
package user.yourbean;
public class FileMessage 
 {  String filePath,fileName,fileContent;
    long fileLength;
   public void setFilePath(String str)
   {  filePath=str;
   }
   public String getFilePath()
   {  return filePath; 
   }
   public void setFileName(String str)
   {  fileName=str;
   }
   public String getFileName()
   {  return fileName; 
   }
   public void setFileContent(String str)
   {  fileContent=str;
   }
   public String getFileContent()
   {  return fileContent; 
   }
   public void setFileLength(long len)
   {  fileLength=len; 
   }
   public long getFileLength()
   {  return fileLength; 
   }
}
2.控制器(servlet)
HandeFile.java
package user.yourservlet;
import user.yourbean.FileMessage;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HandleFile extends HttpServlet
{  public void init(ServletConfig config) throws ServletException
    {super.init(config);
    }
   public  void  doPost(HttpServletRequest request,
HttpServletResponse response)  throws ServletException,IOException
    {   FileMessage file=new FileMessage();  //创建Javabean对象
        request.setAttribute("file",file);
        String filePath=request.getParameter("filePath");
        String fileName=request.getParameter("fileName");
        file.setFilePath(filePath);   //将数据存储在file中 
        file.setFileName(fileName);   
        try{ File f=new File(filePath,fileName);
             long length=f.length();
             file.setFileLength(length);
             FileReader in=new FileReader(f) ;
             BufferedReader inTwo=new BufferedReader(in);
             StringBuffer stringbuffer=new StringBuffer(); 
             String s=null;
             while ((s=inTwo.readLine())!=null) 
             {  stringbuffer.append("\n"+s);
             }
            String content=new String(stringbuffer);
            file.setFileContent(content);
           }
         catch(IOException exp){} 
         RequestDispatcher dispatcher=
 request.getRequestDispatcher("showFile.jsp");
         dispatcher.forward(request, response);
    } 
   public  void  doGet(HttpServletRequest request,HttpServletResponse response) 
                        throws ServletException,IOException
    {   doPost(request,response);
    }
}
3.视图(JSP页面)
choiceFile.jsp
<%@ page contentType="text/html;Charset=GB2312" %>
<HTML><BODY bgcolor=cyan><Font size=2>
 <FORM action="helpReadFile" method="post" name="form">
 输入文件的路径(如:d:/2000):
 <INPUT type="text" name="filePath" size=12>
 <BR>输入文件的名字(如:Hello.java):
 <INPUT type="text" name="fileName" size=9>
 <BR><INPUT type="submit" value="读取" name="submit">
 </FORM>
</Font></BODY></HTML>
showFile.jsp
<%@ page import="user.yourbean.FileMessage" %> 
<%@ page contentType="text/html;charset=GB2312" %>
 <jsp:useBean id="file" type="user.yourbean.FileMessage" scope="request"/>
<HTML><BODY bgcolor=yellow><Font size=2>
  文件的位置: <jsp:getProperty name="file" property="filePath"/>,
  文件的名字:<jsp:getProperty name="file" property="fileName"/>,
  文件的长度:<jsp:getProperty name="file" property="fileLength"/> 字节。
  <BR>文件的内容:
  <BR><TextArea  rows="6" cols="60">
       <jsp:getProperty name="file" property="fileContent"/>
     </TextArea>
</Font></BODY></HTML>
9.6   MVC模式与数据库操作
1.模型(Javabean)
ShowRecordByPage.java
package user.yourbean;
import com.sun.rowset.*; 
public class ShowRecordByPage
{   CachedRowSetImpl rowSet=null;         //存储表中全部记录的行集对象
    int pageSize=10;                      //每页显示的记录数
    int pageAllCount=0;                   //分页后的总页数
    int showPage=1   ;                    //当前显示页 
    StringBuffer presentPageResult;      //显示当前页内容
    String databaseName="";              //数据库名称
    String tableName="";                 //表的名字
    StringBuffer formTitle=null;         //表头
    public void setRowSet(CachedRowSetImpl set)
    {  rowSet=set;
    }
    public CachedRowSetImpl getRowSet()
    {  return rowSet;
    }
    public void setPageSize(int size)
    {  pageSize=size;
    }
    public int getPageSize()
    {  return pageSize;
    } 
    public int getPageAllCount()
    {  return pageAllCount;
    } 
   public void setPageAllCount(int n)
    {  pageAllCount=n; 
    }
    public void setShowPage(int n)
    {  showPage=n;
    }
    public int getShowPage()
    { return showPage;
    }
   public void setPresentPageResult(StringBuffer p)
    {  presentPageResult=p; 
    }
    public StringBuffer getPresentPageResult()
    {  return presentPageResult; 
    }
    public void setDatabaseName(String s)
    {  databaseName=s.trim();
    }
    public String getDatabaseName()
    {  return databaseName;
    }
    public void setTableName(String s)
    {  tableName=s.trim();
    }
    public String getTableName()
    {  return tableName;
    }
    public void setFormTitle(StringBuffer s)
    {  formTitle=s;
    }
    public StringBuffer getFormTitle()
    {  return formTitle;
    } 
}
2.控制器(servlet)
HandleDatabase.java
package user.yourservlet;
import user.yourbean.ShowRecordByPage;
import com.sun.rowset.*;
import java.sql.*;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HandleDatabase extends HttpServlet
{  int 字段个数;
   CachedRowSetImpl rowSet=null;
   public void init(ServletConfig config) throws ServletException
    { super.init(config);
      try {  Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
          }
       catch(Exception e){} 
    }
   public  void  doPost(HttpServletRequest request,HttpServletResponse response)                         throws ServletException,IOException
    {   Connection con; 
        StringBuffer presentPageResult=new StringBuffer();
        ShowRecordByPage databaseBean=null;
        HttpSession session=request.getSession(true);
        try{  databaseBean=(ShowRecordByPage)session.getAttribute("database");
              if(databaseBean==null)
              { databaseBean=new ShowRecordByPage(); //创建Javabean对象
                session.setAttribute("database",databaseBean);
              }
           }
        catch(Exception exp)
           {  databaseBean=new ShowRecordByPage();
              session.setAttribute("database",databaseBean);
           } 
        String databaseName=request.getParameter("databaseName");
        String tableName=request.getParameter("tableName");
        String ps= request.getParameter("pageSize");
        if(ps!=null)
        {  try{ int mm=Integer.parseInt(ps);
                databaseBean.setPageSize(mm);
              }
           catch(NumberFormatException exp)
              { databaseBean.setPageSize(1);
              } 
        }
        int showPage=databaseBean.getShowPage();
        int pageSize=databaseBean.getPageSize();
        boolean boo=databaseName!=null&&tableName!=null&&
                    databaseName.length()>0&&tableName.length()>0;
        if(boo) 
        { databaseBean.setDatabaseName(databaseName);//数据存储在databaseBean中
          databaseBean.setTableName(tableName);      //数据存储在databaseBean中 
          String uri=
"jdbc:sqlserver://127.0.0.1:1433;DatabaseName="+databaseName;
          try{  字段个数=0;
                con=DriverManager.getConnection(uri,"sa","sa");
                DatabaseMetaData metadata=con.getMetaData();
                ResultSet rs1=metadata.getColumns(null,null,tableName,null);
                int k=0;
                String 字段[]=new String[100]  ;
                while(rs1.next())
                { 字段个数++;
                  字段[k]=rs1.getString(4); //获取字段的名字
                  k++;
                }
                StringBuffer str=new StringBuffer();
                str.append("<tr>");
                for(int i=0;i<字段个数;i++)
                 {  str.append("<th>"+字段[i]+"</th>");
                 }  
                str.append("</tr>");
                databaseBean.setFormTitle(str);  //数据存储在databaseBean中
                Statement sql=
con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
                                                ResultSet.CONCUR_READ_ONLY);
                ResultSet rs=sql.executeQuery("SELECT * FROM "+tableName);
                rowSet=new CachedRowSetImpl();  //创建行集对象
                rowSet.populate(rs);
                con.close();                     //关闭连接
                databaseBean.setRowSet(rowSet);  //数据存储在databaseBean中
                rowSet.last();
                int m=rowSet.getRow();           //总行数
                int n=pageSize;
                int pageAllCount=((m%n)==0)?(m/n):(m/n+1);
                databaseBean.setPageAllCount(pageAllCount);
              }
            catch(SQLException exp){}
        }
        String whichPage=request.getParameter("whichPage");
        if(whichPage==null||whichPage.length()==0)
        {  showPage=1;
           databaseBean.setShowPage(showPage);
           CachedRowSetImpl rowSet=databaseBean.getRowSet();
           if(rowSet!=null)
           { presentPageResult=show(showPage,pageSize,rowSet);
             databaseBean.setPresentPageResult(presentPageResult); 
           }
        }
        else if(whichPage.equals("nextPage"))
        {  showPage++;
           if(showPage>databaseBean.getPageAllCount())
             showPage=1;
           databaseBean.setShowPage(showPage);
           CachedRowSetImpl rowSet=databaseBean.getRowSet();
           if(rowSet!=null)
           { presentPageResult=show(showPage,pageSize,rowSet);
             databaseBean.setPresentPageResult(presentPageResult); 
           }
        }
       else if(whichPage.equals("previousPage"))
        {  showPage--;
           if(showPage<=0)
             showPage=databaseBean.getPageAllCount();
           databaseBean.setShowPage(showPage);
           CachedRowSetImpl rowSet=databaseBean.getRowSet();
           if(rowSet!=null)
           { presentPageResult=show(showPage,pageSize,rowSet);
             databaseBean.setPresentPageResult(presentPageResult); 
           }
        } 
      databaseBean.setPresentPageResult(presentPageResult);
      RequestDispatcher dispatcher=
request.getRequestDispatcher("showRecord.jsp");
      dispatcher.forward(request, response);//请求showRecord.jsp显示数据
    } 
   public StringBuffer show(int page,int pageSize,CachedRowSetImpl rowSet)
    {  StringBuffer str=new StringBuffer();
       try{  rowSet.absolute((page-1)*pageSize+1);
             for(int i=1;i<=pageSize;i++)
              { str.append("<tr>");
                 for(int k=1;k<=字段个数;k++)
                  { str.append("<td>"+rowSet.getString(k)+"</td>");
                  }
                str.append("</tr>");
                rowSet.next();
              }
          }
       catch(SQLException exp){}
       return str;
    }
   public  void  doGet(HttpServletRequest request,HttpServletResponse response) 
                        throws ServletException,IOException
    {   doPost(request,response);
    }
}
3.视图(JSP页面)
choiceDatabase.jsp
<%@ page contentType="text/html;Charset=GB2312" %>
<HTML><BODY bgcolor=cyan><Font size=2>
    <FORM action="helpReadRecord" method="post" name="form">
      输入SQlServer2000数据库的名字(例如:pubs、Warehouse):
     <BR><INPUT type="text" name="databaseName">
     <BR>输入相应数据库中表的名字(例如:jobs、product):
     <BR><INPUT type="text" name="tableName">
     <BR>输入每页显示的记录数:
        <INPUT type="text" value="2" name="pageSize" size=6> 
        <INPUT type="submit" value="提交" name="submit">
    </FORM>
</Font></BODY></HTML>
showRecord.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="user.yourbean.ShowRecordByPage" %> 
<HTML><BODY bgcolor=yellow><Font size=2>
 <jsp:useBean id="database" 
type="user.yourbean.ShowRecordByPage" scope="session"/>
   您查询的数据库:<jsp:getProperty name="database" property="databaseName"/>,
   查询的表:<jsp:getProperty name="database" property="tableName"/>。
   <BR>记录分<jsp:getProperty name="database" property="pageAllCount"/>页,
   每页最多显示<jsp:getProperty name="database" property="pageSize"/>条记录,
   目前显示第<jsp:getProperty name="database" property="showPage"/>页。
   <table border=1>
     <jsp:getProperty name="database" property="formTitle"/>  
     <jsp:getProperty name="database" property="presentPageResult"/>   
   </table>
    <table> 
      <tr><td>
          <FORM action="helpReadRecord" method="post" name="form">
          <INPUT type="hidden" value="previousPage" name="whichPage">
          <INPUT type="submit" value="上一页" name="submit">
          </FORM>
          </td>
         <td>
          <FORM action="helpReadRecord" method="post" name="form">
          <INPUT type="hidden" value="nextPage" name="whichPage">
          <INPUT type="submit" value="下一页" name="submit">
          </FORM>
          </td>
     </tr>
    </FORM>
</Font></BODY></HTML>
9.7.1  注册
1.模型(Javabean)
Register.java
package user.yourbean;
public class Register
{   String logname="",password="",email="";
    String backNews; 
    public void setLogname(String name)
    {  logname=name;
    }
   public String getLogname()
    { return logname;
    }
   public void setPassword(String pw)
    {  password=pw;
    }
   public String getPassword()
    { return password;
    }
   public void setEmail(String em)
    {  email=em;
    }
   public String getEmail()
    {  return email;
    }
   public String getBackNews()
    { return backNews;
    }
   public void setBackNews(String s)
    { backNews=s;
    } 
}
2.控制器(servlet)
HandleRegister.java
package user.yourservlet;
import user.yourbean.Register;
import java.sql.*;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HandleRegister extends HttpServlet
{   public void init(ServletConfig config) throws ServletException
    { super.init(config);
      try {  Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
          }
       catch(Exception e){} 
    }
   public String handleString(String s)
   {   try{ byte bb[]=s.getBytes("iso-8859-1");
            s=new String(bb);
          }
       catch(Exception ee){} 
       return s;  
   }
   public  void  doPost(HttpServletRequest request,HttpServletResponse response)                         throws ServletException,IOException
    {   Connection con; 
        Statement sql; 
        Register reg=new Register();   //创建Javabean对象
        request.setAttribute("register",reg);//将dataBean存储到request对象中
        String logname=request.getParameter("logname").trim(),
        password=request.getParameter("password").trim(),
        email=request.getParameter("email").trim();
        String uri="jdbc:sqlserver://127.0.0.1:1433;DatabaseName=Welcome";
        if(logname==null)
           logname="";
        if(password==null)
           password="";
        boolean isLD=true;
        for(int i=0;i<logname.length();i++)
        {  char c=logname.charAt(i);
           if(!((c<='z'&&c>='a')||(c<='Z'&&c>='A')||(c<='9'&&c>='0'))) 
             isLD=false;
        } 
        boolean boo=logname.length()>0&&password.length()>0&&isLD;
        String backNews="";
        try{ con=DriverManager.getConnection(uri,"sa","sa");
             String insertCondition=
             "INSERT INTO member VALUES ('"+
logname+"','"+password+"','"+email+"')";
              sql=con.createStatement();
             if(boo)
             { int m=sql.executeUpdate(insertCondition);
               if(m!=0)
                 {  backNews="注册成功";
                    reg.setBackNews(backNews);
                    reg.setLogname(logname);
                    reg.setPassword(handleString(password));
                    reg.setEmail(handleString(email));
                  }
              }
             else
              {  backNews="信息填写不完整或名字中有非法字符";
                 reg.setBackNews(backNews);  
              }
             con.close();
           }
        catch(SQLException exp)
          {  backNews="该会员名已被使用,请您更换名字"+exp;
             reg.setBackNews(backNews); 
          }
        RequestDispatcher dispatcher= 
        request.getRequestDispatcher("show.jsp");//请求show.jsp显示信息
        dispatcher.forward(request, response);
    }
   public  void  doGet(HttpServletRequest request,HttpServletResponse response) 
                        throws ServletException,IOException
    {   doPost(request,response);
    }
}
3.视图(JSP页面)
register.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<head>
<table>
 <td><A href="register.jsp"><font size=2>用户注册</font></A></td>
 <td><A href="login.jsp"><font size=2>用户登录</font></A></td>
</table>
</head>
<HTML><BODY bgcolor=cyan><Font size=2><CENTER>
<FORM action="helpRegister" name=form>
<table>
    输入您的信息,用户名称必须由字母和数字组成,带*号项必须填写。
   <tr><td>用户名称:</td><td><Input type=text name="logname" >*</td></tr>
   <tr><td>设置密码:</td><td><Input type=password name="password">*</td></tr>
   <tr><td>电子邮件:</td><td><Input type=text name="email"></td></tr>
   <tr><td><Input type=submit name="g" value="提交"></td></tr>
</table>
</Form></CENTER>
</Body></HTML>
show.jsp(效果如图9-13)
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="user.yourbean.Register"%> 
<jsp:useBean id="register" type="user.yourbean.Register" scope="request"/>
<head>
<table>
 <td><A href="register.jsp"><font size=2>用户注册</font></A></td>
 <td><A href="login.jsp"><font size=2>用户登录</font></A></td>
</table>
</head>
<HTML><BODY bgcolor=yellow>
<CENTER>
  <Font size=4 color=blue >
    <BR><jsp:getProperty name="register"  property="backNews"/>
  </Font> 
<table>
 <tr><td>注册的名称:</td>
     <td><jsp:getProperty name="register" property="logname"/></td>
 </tr>
 <tr><td>注册的电子邮件:</td>
     <td><jsp:getProperty name="register" property="email"/></td>
 </tr>
</table>
</CENTER></BODY></HTML>
9.7.2  登录
1.模型(Javabean)
Login.java
package user.yourbean;
public class Login
{   String logname,
           password,
           backNews="";   
   boolean success=false; 
   public void setLogname(String name)
    {  logname=name;
    }
   public String getLogname()
    {return logname;
    }
   public void setPassword(String pw)
    {  password=pw;
    }
    public String getPassword()
    {return password;
    }
   public String getBackNews()
    { return backNews;
    }
   public void setBackNews(String s)
    { backNews=s;
    } 
   public void setSuccess(boolean b)
    {  success=b;
    }
   public boolean getSuccess()
   {   return success;
   }
}
2.控制器(servlet)
HandleLogin.java
package user.yourservlet;
import user.yourbean.Login;
import java.sql.*;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HandleLogin extends HttpServlet
{   public void init(ServletConfig config) throws ServletException
    { super.init(config);
      try {  Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
          }
       catch(Exception e){} 
    }
   public String handleString(String s)
   {   try{ byte bb[]=s.getBytes("iso-8859-1");
            s=new String(bb);
          }
       catch(Exception ee){} 
       return s;  
   }
   public  void  doPost(HttpServletRequest request,HttpServletResponse response)                         throws ServletException,IOException
    {   Connection con; 
        Statement sql; 
        Login loginBean=null;
        String backNews="";
        HttpSession session=request.getSession(true);
        try{  loginBean=(Login)session.getAttribute("login");
              if(loginBean==null)
              { loginBean=new Login();  
                session.setAttribute("login",loginBean);
              }
           }
        catch(Exception ee)
          {  loginBean=new Login();  
             session.setAttribute("login",loginBean);
          }
        String logname=request.getParameter("logname").trim(),
        password=request.getParameter("password").trim();
        boolean ok=loginBean.getSuccess();
        logname=handleString(logname);
        password=handleString(password);
        if(ok==true&&logname.equals(loginBean.getLogname()))
        {  backNews=logname+"已经登录了";
           loginBean.setBackNews(backNews);
        }
        else
        {  String uri="jdbc:sqlserver://127.0.0.1:1433;DatabaseName=Welcome";
           boolean boo=(logname.length()>0)&&(password.length()>0);  
           try{ con=DriverManager.getConnection(uri,"sa","sa");
                String condition=
               "select * from member where logname ='"
+logname+"' and password ='"+password+"'";
                sql=con.createStatement();  
                if(boo)
                { ResultSet rs=sql.executeQuery(condition);
                  boolean m=rs.next();
                  if(m==true)
                  {  backNews="登录成功";
                     loginBean.setBackNews(backNews);
                     loginBean.setSuccess(true);
                     loginBean.setLogname(logname);
                  }
                 else
                  {  backNews="您输入的用户名不存在,或密码不般配";
                     loginBean.setBackNews(backNews); 
                     loginBean.setSuccess(false); 
                     loginBean.setLogname(logname);
                     loginBean.setPassword(password);
                  }
                }
                else
                { backNews="您输入的用户名不存在,或密码不般配";
                  loginBean.setBackNews(backNews); 
                  loginBean.setSuccess(false); 
                  loginBean.setLogname(logname);
                  loginBean.setPassword(password);
                }
                con.close();
              }
           catch(SQLException exp)
             {  backNews=""+exp;
                loginBean.setBackNews(backNews); 
                loginBean.setSuccess(false); 
             }
        }
       RequestDispatcher dispatcher=
request.getRequestDispatcher("showSuccess.jsp");
       dispatcher.forward(request, response);
    }
   public  void  doGet(HttpServletRequest request,HttpServletResponse response) 
                        throws ServletException,IOException
    {   doPost(request,response);
    }
}
3.视图(JSP页面)
login.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<head>
<table>
 <td><A href="register.jsp"><font size=2>用户注册</font></A></td>
 <td><A href="login.jsp"><font size=2>用户登录</font></A></td>
</table>
</head>
<HTML><BODY bgcolor=cyan><Font size=2><CENTER>
<BR><BR>
<table border=2>
<tr> <th>请您登录</th></tr>
<FORM action="helpLogin" Method="post">
<tr><td>登录名称:<Input type=text name="logname"></td></tr>
<tr><td>输入密码:<Input type=password name="password"></td></tr>
</table>
<BR><Input type=submit name="g" value="提交">
</Form></CENTER>
</BODY></HTML>
showSuccess.jsp(效果如图9-15)
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="user.yourbean.Login"%> 
<jsp:useBean id="login" type="user.yourbean.Login" scope="session"/>
<head>
<table>
 <td><A href="register.jsp"><font size=2>用户注册</font></A></td>
 <td><A href="login.jsp"><font size=2>用户登录</font></A></td>
</table>
</head>
<HTML><BODY bgcolor=yellow >
<CENTER><Font size=4 color=blue >
   <BR> <jsp:getProperty name="login"  property="backNews"/>
   </Font> 
 <% if(login.getSuccess()==true)
     {
 %>    <BR>登录用户名称:<jsp:getProperty name="login" property="logname"/>
 <%  }
   else
    { 
 %>  <BR>登录用户名称:<jsp:getProperty name="login" property="logname"/>
     <BR>登录用户密码:<jsp:getProperty name="login" property="password"/>
 <% }
 %>
</FONT></CENTER>
</BODY></HTML>
9.7.3  验证
lookPic.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="user.yourbean.Login" %>
<head>
<table>
 <td><A href="register.jsp"><font size=2>用户注册</font></A></td>
 <td><A href="login.jsp"><font size=2>用户登录</font></A></td>
</table>
</head>
<%  //获取用户登录时的Javabean(9.7.2中登录控制器所创建的Javabean):
       Login login=(Login)session.getAttribute("login");
       boolean ok=true; 
       if(login==null)
       { ok=false; 
         response.sendRedirect("login.jsp");   //重定向到登录页面
       }
%>
<HTML><BODY bgcolor=cyan><Font size=2><CENTER>
<image src="Sunset.jpg" width=220 height=200></image>
</CENTER></BODY></HTML>