第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>