第1章 JSP 简介
例子1
first.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY BGCOLOR=cyan>
<FONT Size=4>
<P>JSP页面的测试
<% int x=100,y=500,z;
z=x+y;
%>
<P> x+y的和为: <%= z %>
</FONT></BODY>
</HTML>
第2章 JSP页面
例子1
example2_1.jsp
<%@ page contentType="text/html;charset=GB2312" %> <!-- jsp指令标签 -->
<%@ page import="java.util.Date" %> <!-- jsp指令标签 -->
<%! Date date; // 数据声明
int sum;
public int add(int m,int n) // 方法声明
{ return m+n;
}
%>
<HTML><BODY bgcolor=cyan> <!—html标记 -->
<FONT size=4><P>程序片创建Date对象:
<% Date date=new Date(); //java程序片
out.println("<BR>"+date);
sum=add(12,34);
%>
<BR>在下一行输出和:<BR>
<%= sum+100 %> <!-- Java表达式 -->
</FONT></BODY></HTML>
例子2
example2_2.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY BGCOLOR=pink><FONT size=4>
<%! int i=0;
%>
<% i++;
%>
<P>您是第<%=i%>个访问本站的客户。
</BODY></HTML>
例子3
example2_3.jsp
<%@ page contentType="text/html;Charset=GB2312" %>
<HTML><BODY bgcolor=yellow>
<%! int add(int x,int y)
{ return x+y;
}
int sub(int x,int y)
{ return x-y;
}
%>
<% out.println("<BR>调用add方法计算200与123之和:");
int a=add(200,123);
out.println(a);
out.println("<BR>调用sub方法计算200与123之差:");
int b=sub(200,123);
out.println(b);
%>
</BODY></HTML>
例子4
example2_4.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY bgcolor=cyan><FONT size=6>
<%! int continueSum(int n)
{ int sum=0;
for(int i=1;i<=n;i++)
{ sum=sum+i;
}
return sum;
}
%>
<P> 1到100的连续和:<BR>
<% long sum;
sum=continueSum(100);
out.print(sum);
%>
</BODY></HTML>
例子5
example2_5.jsp
<%@ page contentType="text/html;Charset=GB2312" %>
<HTML>
<BODY>
<%! int count=0; //被客户共享的count
synchronized void setCount() //synchronized修饰的方法
{ count++;
}
%>
<% setCount();
out.println("您是第"+count+"个访问本站的客户");
%>
</BODY>
</HTML>
例子6
example2_6.jsp
<%@ page contentType="text/html;Charset=GB2312" %>
<HTML><BODY bgcolor=cyan>
<% int sum=0,i,j;
for(i=1;i<=6;i++)
{
%> <Font size=<%=i%>>
<b>大家好!</b>
</Font>
<% sum=sum+i;
}
if(sum%2==0)
{ out.print("<BR><b>"+sum+"</b>");
%> <b>是偶数.</b>
<% }
else
{ out.print("<BR><b>"+sum+"</b>");
%> <b>是奇数.</b>
<% }
%>
</BODY></HTML>
例子7
example2_7.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY bgcolor=cyan><FONT size=4>
<P> Sin(0.9)除以3等于
<%=Math.sin(0.90)/3%>
<p>3的平方是:
<%=Math.pow(3,2)%>
<P>12345679乘72等于
<%=12345679*72%>
<P> 5的平方根等于
<%=Math.sqrt(5)%>
<P>99大于100吗?回答:
<%=99>100%>
</BODY></HTML>
例子8
example2_8.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY>
<!-- 以下是标题1 -->
<H1> 大家要注意了,成员变量是大家共享的 </H1>
<%-- 下面是变量和方法的声明,利用共享的sum和n计算连续和 --%>
<%! long sum=0,n=1;
void computer()
{ sum=sum+n;
n=n+1;
}
%>
<%-- 下面是程序片,调用方法得到结果 --%>
<% computer();
out.println("当前连续和是:"+sum);
%>
</BODY></HTML>
例子9
input.jsp
<%@ page contentType="text/html;Charset=GB2312" %>
<HTML><BODY bgcolor=cyan><Font size=3>
<FORM action="receive.jsp" method=post name=form>
<P>请输入下列信息:
<BR>输入您的姓名:<INPUT type="text" name="name" value="张三"></BR>
<BR>选择性别:<INPUT type="radio" name="R" value="男" checked="default">男
<INPUT type="radio" name="R" value="女">女
</BR>
<BR>选择您喜欢的歌手:
<input type="checkbox" name="superstar" value="张歌手" >张歌手
<input type="checkbox" name="superstar" value="李歌手" >李歌手
<input type="checkbox" name="superstar" value="刘歌手" >刘歌手
<input type="checkbox" name="superstar" value="王歌手" >王歌手
</BR>
<INPUT TYPE="hidden" value="这是隐藏信息" name="secret">
<INPUT TYPE="submit" value="提交" name="submit">
</FORM>
</FONT></BODY></HTML>
receive.jsp
<%@ page contentType="text/html;Charset=GB2312" %>
<HTML><BODY bgcolor=cyan><Font size=3>
<% String yourName=request.getParameter("name"); // 获取text提交的值
String yourSex=request.getParameter("R"); //获取radio提交的值
String secretMess=request.getParameter("secret"); //获取hidden提交的值
String personName[]=request.getParameterValues("superstar"); //获取checkbox提交的值
out.println("<P> 您的姓名:"+yourName+"</P>");
out.println("<P> 您的性别:"+yourSex+"</P>");
out.println("<P> 您喜欢的歌手:");
if(personName==null)
{ out.print("一个都不喜欢");
}
else
{ for(int k=0;k<personName.length;k++)
{ out.println(" "+personName[k]);
}
}
out.println("<P> hidden提交的值:"+secretMess);
%>
</FONT></BODY></HTML>
例子10
example2_10.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY bgcolor=yellow>
<Table align="Center" border=1>
<tr width=400>
<td Align="Center">welcome</td>
<td Align="Right">to</td>
<td Align="LEFT">Beijing</td>
</tr>
<tr >
<th Valign="Top">We</th>
<td Valign="Bottom">Love</td>
<td Valign="Bottom" Align="Center" >JSP</td>
</tr>
<tr>
<td Valign="Top"> 你好</td>
<td Valign="Bottom">Hello</td>
<td Valign="Bottom" Aligin="Center" >how are you</td>
</tr>
</Table>
</BODY></HTML>
例子11
select.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 Selected value="img1.JPG">人物
<Option value="img2.jpg">风景
<Option value="img3.jpg">动物
</Select>
<br>选择视频或音乐:
<Select name="video" >
<Option value="a.wmv">茉莉花
<Option value="b.wmv">动画片
<Option value="c.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");
if(s1==null)
{s1="img1.JPG";}
if(s2==null)
{s2="a.avi";}
%>
<img src=<%=s1 %> width=120 height=120 >图像</img>
<embed src=<%=s2 %> width=150 height=120 >视频</embed>
</FONT></BODY></HTML>
第3章 JSP标记
例子1
A.jsp
<%@ page contentType="text/html;Charset=GB2312" %>
<HTML><BODY BGCOLOR=cyan>
<FONT Size=3>
<P>我在学习page指令
</FONT></BODY></HTML>
B.jsp
<%@ page contentType="application/msword" %>
<HTML><BODY BGCOLOR=cyan>
<FONT Size=3>
<P>启动word应用程序
</FONT></BODY></HTML>
C.jsp
<%@ page contentType="image/jpeg" %>
<%@ 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.*" %>
<% 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 (40,80,100,40);
g_2d.setColor(Color.blue);
AffineTransform trans=new AffineTransform();
for(int i=1;i<=12;i++)
{ trans.rotate(30.0*Math.PI/180,90,100);
g_2d.setTransform(trans);
g_2d.draw(ellipse);
}
g.dispose();
OutputStream outClient= response.getOutputStream(); //获取指向客户端的输出流
JPEGImageEncoder encoder=JPEGCodec.createJPEGEncoder(outClient);
encoder.encode(image);
%>
例子2
example3_2.jsp
<%@ page contentType="text/html;Charset=GB2312" %>
<html><BODY bgcolor=yellow>
<H1>
<%@ include file="Hello.txt" %>
</H1>
</BODY></HTML>
例子3
example3_3.jsp
<%@ page contentType="text/html;Charset=GB2312" %>
<html><BODY bgcolor=red>
<jsp:include page="time.jsp" />
<P>请看一幅图象:<BR/>
<jsp:include page="image/sun.jsp" />
</BODY></HTML>
time.jsp
<%@ page contentType="text/html;Charset=GB2312" %>
<%@ page import="java.util.Date" %>
<HTML><BODY><FONT Size=3>
<P>现在的时间:
<% Date date=new Date();
out.println(date.toString());
%>
</FONT></BODY></HTML>
sun.jsp
<%@ page contentType="text/html;Charset=GB2312" %>
<html><body>
<image src="image/ok.jpg" width=120 height=120 >太阳图片</image>
</body></html>
例子4
example3_4.jsp
<%@ page contentType="text/html;Charset=GB2312" %>
<HTML><BODY bgcolor=yellow>
<P>加载一个jsp文件,该文件负责计算连续整数之和:
<jsp:include page="computer.jsp">
<jsp:param name="item" value="100" />
</jsp:include>
</BODY></HTML>
computer.jsp
<%@ page contentType="text/html;Charset=GB2312" %>
<HTML><BODY>
<% String str=request.getParameter("item"); //获取值param标记中name属性的值
int n=Integer.parseInt(str);
int sum=0;
for(int i=1;i<=n;i++)
{ sum=sum+i;
}
out.println("<BR>从1到"+n+"的连续和是:</BR>"+sum);
%>
</BODY></HTML>
例子5
example3_5.jsp
<%@ page contentType="text/html;Charset=GB2312" %>
<HTML><BODY >
<% out.println("根据不同的值转向不同的页面:<BR>");
int n=(int)(Math.random()*100)+1;
if(n>50)
{
%> <jsp:forward page="num1.jsp" >
<jsp:param name="item" value="<%= n %>" />
</jsp:forward>
<%
}
else
{
%> <jsp:forward page="num2.jsp" >
<jsp:param name="item" value="<%= n %>" />
</jsp:forward>
<%
}
out.println("看不见这句话");
%>
</BODY></HTML>
num1.jsp
<%@ page contentType="text/html;Charset=GB2312" %>
<HTML><BODY bgcolor=cyan >
<% String str=request.getParameter("item"); //获取值param标记中name属性的值
int n=Integer.parseInt(str);
out.println("<BR>不大于"+n+"的素数:</BR>");
int i=0,j=0;
for(i=1;i<=n;i++)
{ for(j=2;j<i;j++)
{ if(i%j==0)
break;
}
if(j==i)
out.println(","+i);
}
%>
</BODY></HTML>
num2.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY bgcolor=cyan >
<% String str=request.getParameter("item"); //获取值param标记中name属性的值
int n=Integer.parseInt(str);
out.println("<BR>不大于"+n+"奇数:</BR>");
for(int i=1;i<=n;i++)
{ if(i%2!=0)
out.println(","+i);
}
%>
</BODY></HTML>
例子6
FirstTag.tag
<html><body>
<p>这是一个Tab文件,负责计算1至100的连续和
<% int sum=0,i=1;
for(i=1;i<=100;i++)
{ sum=sum+i;
}
out.println(sum);
%>
</body></html>
SecondTag.tag
<p>这是一个Tab文件负责计算20内的素数:
<% int i,j;
for(i=1;i<=20;i++)
{ for(j=2;j<i;j++)
{ if(i%j==0)
break;
}
if(j==i)
out.println("<BR>素数:"+i);
}
%>
example3_6.jsp
<%@ page contentType="text/html;Charset=GB2312" %>
<%@ taglib tagdir="/WEB-INF/tags" prefix="com"%>
<%@ taglib tagdir="/WEB-INF/tags/tagsTwo" prefix="game"%>
<html> <body>
<h3>以下是调用Tag文件的效果:</h3>
<com:FirstTag />
<h3>以下是调用Tag文件的效果:</h3>
<game:SecondTag />
</body> </html>
例子7
example3_7.jsp
<%@ page contentType="text/html;Charset=GB2312" %>
<%@ taglib prefix="tags" tagdir="/WEB-INF/tags" %>
<html>
<tags:Show>
我喜欢看足球
</tags:Show>
<tags:Show>
I love this game
</tags:Show>
<tags:Show>
我喜欢看奥运比赛
</tags:Show>
</html>
Show.tag
<body> <P>
<% for(int i=1;i<=3;i++)
{
%> <font color="red" size="3">
<jsp:doBody />
</font>
<% }
%>
</P></body>
例子8
example3_8.jsp
<%@ page contentType="text/html;Charset=GB2312" %>
<%@ taglib tagdir="/WEB-INF/tags" prefix="computer"%>
<html><body>
<h3>以下是调用Tag文件的效果:</h3>
<computer:Trangle sideA="3" sideB="4" sideC="5"/>
</body></html>
Trangle.tag
<p>这是一个Tab文件,负责计算三角形的面积:
<%@ 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章 内置对象
例子1
example4_1.jsp
<%@ page contentType="text/html;Charset=GB2312" %>
<%@ taglib tagdir="/WEB-INF/tags" prefix="com"%>
<HTML><BODY bgcolor=cyan><FONT size=3>
<FORM action="" method=post name=form>
<INPUT type="text" name="number">
<INPUT TYPE="submit" value="提交" name="submit">
</FORM>
<% String textContent=request.getParameter("number");
if(textContent==null)
{ out.println("请在文本框中输入数字,按提交按钮");
}
else
{
%> <p> 调用Computer.tag文件负责计算平方根
<com:Computer number="<%= textContent %>" />
<% }
%>
</FONT></BODY></HTML>
Compter.tag
<%@ attribute name="number" %>
<% try{ double n=Double.parseDouble(number);
if(n>=0)
{ double r=Math.sqrt(n) ;
out.print("<BR>"+n+"的平方根:");
out.print("<BR>"+r);
}
else
{ out.print("<BR>"+"请输入一个正数");
}
}
catch(NumberFormatException e)
{ out.print("<BR>"+"请输入数字字符");
}
%>
例子2
example4_2.jsp
<%@ page contentType="text/html;Charset=GB2312" %>
<HTML><BODY bgcolor=cyan>
<FORM action="showMessage1.jsp" method=post name=form>
<INPUT type="text" name="boy">
<INPUT TYPE="submit" value="提交给showMessage1.jsp" name="submit">
</FORM>
<FORM action="showMessage2.jsp" method=post name=form>
<INPUT type="text" name="boy">
<INPUT TYPE="submit" value="提交给showMessage2.jsp" name="submit">
</FORM>
</BODY></HTML>
showMessage1.jsp
<%@ page contentType="text/html;Charset=GB2312" %>
<MHML><BODY>
<P>获取文本框提交的信息:
<% String textContent=request.getParameter("boy");
%>
<BR>
<%=textContent%>
<P> 获取按钮的名字:
<% String buttonName=request.getParameter("submit");
%>
<BR> <%=buttonName%>
</BODY></HTML>
showMessage2.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<MHML><BODY>
<P>获取文本框提交的信息:
<% String textContent=request.getParameter("boy");
byte b[]=textContent.getBytes("ISO-8859-1");
textContent=new String(b);
%>
<BR> <%=textContent%>
<P> 获取按钮的名字:
<% String buttonName=request.getParameter("submit");
byte c[]=buttonName.getBytes("ISO-8859-1");
buttonName=new String(c);
%>
<BR> <%=buttonName%>
</BODY></HTML>
例子3
example4_3.jsp
<%@ page contentType="text/html;Charset=GB2312" %>
<%@ page import="java.util.*" %>
<MHML><BODY bgcolor=cyan><Font size=3>
<FORM action="" method=post name=form>
<INPUT type="text" name="boy">
<INPUT TYPE="submit" value="enter" name="submit">
</FORM>
<table border=1>
<% String protocol=request.getProtocol();
String path=request.getServletPath();
String method=request.getMethod();
String header=request.getHeader("accept");
%>
<tr>
<td>客户使用的协议是:</td>
<td>"<%= protocol %>"</td>
</tr>
<tr>
<td>用户请求的页面所在位置:</td>
<td>"<%= path %>"</td>
</tr>
<tr>
<td>客户提交信息的方式:</td>
<td>"<%= method %>"</td>
</tr>
<tr>
<td>>获取HTTP头文件中accept的值(浏览器支持的MIME类型):</td>
<td>"<%= header %>"</td>
</tr>
</table>
<BR>获取客户端提交的所有参数的名字:
<% Enumeration enumName=request.getParameterNames();
while(enumName.hasMoreElements())
{ String s=(String)enumName.nextElement();
out.println(s);
}
%>
<BR>获取头名字的一个枚举:
<% Enumeration enumHeaded=request.getHeaderNames();
while(enumHeaded.hasMoreElements())
{ String s=(String)enumHeaded.nextElement();
out.println(s);
}
%>
<BR>获取头文件中指定头名字的全部值的一个枚举:
<% Enumeration enumHeadedValues=request.getHeaders("cookie");
while(enumHeadedValues.hasMoreElements())
{ String s=(String)enumHeadedValues.nextElement();
out.println(s);
}
%>
<P> 文本框text提交的信息:
<% String textContent=request.getParameter("boy");
if(textContent==null)
{ textContent="";
}
int length=textContent.length();
out.println(textContent);
out.println("文本框中字符的个数:"+length);
%>
</Font></BODY></HTML>
例子4
example4_4.jsp
<%@ page contentType="text/html;Charset=GB2312" %>
<HTML><BODY bgcolor=cyan><Font size=2>
<P>在学习response对象的setContentType方法
<FORM action="" method="post" name=form>
<P>将当前页面用MS-Word显示吗?
<INPUT TYPE="submit" value="MS-Word显示" name="submit">
<P>将当前页面用MS-Powerpoint显示吗?
<INPUT TYPE="submit" value="MS-Powerpoint显示" name="submit">
</FORM>
<% String str=request.getParameter("submit");
if(str==null)
{ str="";
}
if(str.equals("MS-Word显示"))
{ response.setContentType("application/msword");
}
else if(str.equals("MS-Powerpoint显示"))
{ response.setContentType("application/vnd.ms-powerpoint");
}
%>
</FONT></BODY></HTML>
例子5
example4_5.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>
例子6
example4_6.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY>
<P>填写姓名:<BR>
<FORM action="form.jsp" method="post" name=form>
<INPUT TYPE="text" name="boy">
<INPUT TYPE="submit" value="Enter">
</FORM>
</BODY></HTML>
form.jsp
<%@ page contentType="text/html;Charset=GB2312" %>
<HTML><BODY>
<% String str=null;
str=request.getParameter("boy");
if(str.length()==0)
{ response.sendRedirect("example4_6.jsp");
}
else
{ out.print("欢迎您来到本网页!");
out.print(str);
}
%>
</BODY></HTML>
例子7
example4_7.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY bgcolor=cyan><Font size=2>
<P>点击下面的超链接:<BR>
<A HREF="welcome1.jsp"> welcome1.jsp欢迎你吗?
<BR> <A HREF=" welcome2.jsp "> welcome2.jsp欢迎你吗?
<BR><A HREF=" welcome3.jsp "> welcome3.jsp欢迎你吗?
</FONT></BODY></HTML>
welcome1.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY>
<% response.setStatus(408);
out.print("能看到本页面吗?");
%>
</BODY></HTML>
welcome2.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY>
<%
response.setStatus(200);
out.println("这是welcome2,能看到welcome2.jsp页面吗?");
%>
</BODY></HTML>
welcome3.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY>
<% response.setStatus(500);
%>
</BODY></HTML>
例子8
first.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY>
<P><% String id=session.getId();
out.println("您的session对象的ID是:<br>"+id);
%>
<P>输入你的姓名连接到second.jsp
<FORM action="tom/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><P>我是second.jsp页面
<% String id=session.getId();
out.println("您的session对象的ID是:<br>"+id);
%>
<P> 点击超链接,连接到third.jsp的页面。
<A HREF="/chaper4/jerry/third.jsp"> 欢迎去third.jsp页面!</A>
</BODY></HTML>
third.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY><P>我是third.jsp页面
<% String id=session.getId();
out.println("您的session对象的ID是:<br>"+id);
%>
<P> 点击超链接,连接到first.jsp的页面。
<A HREF="/chaper4/first.jsp"> 欢迎去first.jsp!</A>
</BODY></HTML>
例子9
main.jsp
<%@ page contentType="text/html;Charset=GB2312" %>
<HTML><BODY bgcolor=yellow><FONT Size=2>
<P>欢迎来到本页面,请输入您的姓名
<FORM action="" method=post name=form>
<INPUT type="text" name="name">